From 19db6911ea89b88dbc9536afb23db0805cd4907b Mon Sep 17 00:00:00 2001 From: sam Date: Sun, 9 Aug 2020 11:10:44 -0700 Subject: [PATCH] feature: protocol release semver: v0.1.0+alpha relay swap protocol licensed under Mozilla Public License 2.0 --- .codeclimate.yml | 5 + .commitlintrc.js | 3 + .editorconfig | 16 + .env.example | 3 + .eslintignore | 13 + .eslintrc.yaml | 21 + .github/CLA.md | 124 + .github/COMMUNITY_GUIDELINES.md | 37 + .github/CONTRIBUTING.md | 94 + .github/ISSUE_TEMPLATE/action.yaml | 0 .github/ISSUE_TEMPLATE/bug_report.md | 23 + .github/ISSUE_TEMPLATE/feature_request.md | 19 + .github/PULL_REQUEST_TEMPLATE.md | 17 + .github/SECURITY.md | 33 + .github/SUPPORT.md | 36 + .huskyrc | 5 + .mocharc.json | 7 + .prettierignore | 12 + .prettierrc | 16 + .solcover.js | 15 + .solhint.json | 12 + .solhintignore | 5 + @types/augmentations.d.ts | 23 + @types/buidler-env.d.ts | 3 + BUILDING.md | 109 + CCPA.adoc | 46 + CONTRIBUTING.md | 94 + DATA_BREACH_RESPONSE.md | 43 + DISCLAIMER.md | 57 + DOCUMENT_RETENTION.adoc | 163 + INCIDENT_RESPONSE_PLAN.adoc | 137 + SECURITY.md | 36 + SOFTWARE_DISCLOSURE_DEFECTS.adoc | 80 + SUPPORT.md | 42 + TERMS_OF_SERVICE.md | 301 + VERSIONING.md | 48 + buidler.config.ts | 93 + contracts/ConvertLib.sol | 8 + contracts/Greeter.sol | 22 + contracts/JEDToken.sol | 239 + contracts/Migrations.sol | 29 + contracts/README.md | 84 + contracts/RelaySwapPool.sol | 580 + contracts/inventory | 12 + contracts/natspec3 | 9 + lib/AccountRulesProxy.sol | 12 + .../@openzeppelin/contracts/GSN/Context.sol | 24 + .../contracts/GSN/GSNRecipient.sol | 230 + .../contracts/GSN/GSNRecipientERC20Fee.sol | 152 + .../contracts/GSN/GSNRecipientSignature.sol | 72 + .../@openzeppelin/contracts/GSN/IRelayHub.sol | 269 + .../contracts/GSN/IRelayRecipient.sol | 76 + .../@openzeppelin/contracts/GSN/README.adoc | 28 + .../@openzeppelin/contracts/README.md | 78 + .../contracts/access/AccessControl.sol | 217 + .../contracts/access/Ownable.sol | 68 + .../contracts/access/README.adoc | 9 + .../build/contracts/AccessControl.json | 3894 ++++ .../build/contracts/AccessControlMock.json | 613 + .../contracts/build/contracts/Address.json | 2925 +++ .../build/contracts/AddressImpl.json | 496 + .../build/contracts/AllowanceCrowdsale.json | 1269 ++ .../contracts/AllowanceCrowdsaleImpl.json | 514 + .../contracts/build/contracts/Arrays.json | 1110 ++ .../contracts/build/contracts/ArraysImpl.json | 464 + .../build/contracts/CappedCrowdsale.json | 1099 ++ .../build/contracts/CappedCrowdsaleImpl.json | 513 + .../contracts/build/contracts/CapperRole.json | 1356 ++ .../build/contracts/CapperRoleMock.json | 492 + .../build/contracts/ConditionalEscrow.json | 614 + .../contracts/ConditionalEscrowMock.json | 636 + .../contracts/build/contracts/Context.json | 278 + .../build/contracts/ContextMock.json | 963 + .../build/contracts/ContextMockCaller.json | 936 + .../contracts/build/contracts/Counters.json | 607 + .../build/contracts/CountersImpl.json | 452 + .../contracts/build/contracts/Create2.json | 1657 ++ .../build/contracts/Create2Impl.json | 1162 ++ .../contracts/build/contracts/Crowdsale.json | 3644 ++++ .../build/contracts/CrowdsaleMock.json | 406 + .../contracts/build/contracts/ECDSA.json | 1583 ++ .../contracts/build/contracts/ECDSAMock.json | 485 + .../contracts/build/contracts/ERC1155.json | 14434 ++++++++++++++ .../build/contracts/ERC1155Burnable.json | 1378 ++ .../build/contracts/ERC1155Holder.json | 757 + .../build/contracts/ERC1155Pausable.json | 1003 + .../contracts/ERC1155PresetMinterPauser.json | 3204 ++++ .../build/contracts/ERC1155Receiver.json | 506 + .../contracts/build/contracts/ERC165.json | 723 + .../build/contracts/ERC165Checker.json | 2323 +++ .../build/contracts/ERC165CheckerMock.json | 715 + .../contracts/ERC165InterfacesSupported.json | 1116 ++ .../contracts/build/contracts/ERC165Mock.json | 250 + .../build/contracts/ERC165NotSupported.json | 62 + .../build/contracts/ERC1820Implementer.json | 830 + .../contracts/ERC1820ImplementerMock.json | 306 + .../contracts/build/contracts/ERC20.json | 6997 +++++++ .../build/contracts/ERC20Burnable.json | 1070 ++ .../build/contracts/ERC20BurnableMock.json | 697 + .../build/contracts/ERC20Capped.json | 1280 ++ .../build/contracts/ERC20CappedMock.json | 788 + .../build/contracts/ERC20DecimalsMock.json | 613 + .../build/contracts/ERC20Detailed.json | 922 + .../build/contracts/ERC20DetailedMock.json | 615 + .../build/contracts/ERC20Metadata.json | 425 + .../build/contracts/ERC20MetadataMock.json | 626 + .../build/contracts/ERC20Migrator.json | 2421 +++ .../build/contracts/ERC20Mintable.json | 703 + .../build/contracts/ERC20MintableMock.json | 501 + .../build/contracts/ERC20MinterPauser.json | 2436 +++ .../contracts/build/contracts/ERC20Mock.json | 1498 ++ .../build/contracts/ERC20NoReturnMock.json | 4837 +++++ .../build/contracts/ERC20Pausable.json | 799 + .../build/contracts/ERC20PausableMock.json | 1229 ++ .../contracts/ERC20PresetMinterPauser.json | 2471 +++ .../build/contracts/ERC20ReturnFalseMock.json | 4842 +++++ .../build/contracts/ERC20ReturnTrueMock.json | 4855 +++++ .../build/contracts/ERC20Snapshot.json | 4559 +++++ .../build/contracts/ERC20SnapshotMock.json | 1172 ++ .../contracts/build/contracts/ERC721.json | 12886 +++++++++++++ .../build/contracts/ERC721Burnable.json | 831 + .../build/contracts/ERC721BurnableMock.json | 859 + .../build/contracts/ERC721Enumerable.json | 4600 +++++ .../contracts/build/contracts/ERC721Full.json | 751 + .../build/contracts/ERC721FullMock.json | 1652 ++ .../contracts/ERC721GSNRecipientMock.json | 1423 ++ .../build/contracts/ERC721Holder.json | 379 + .../build/contracts/ERC721Metadata.json | 2525 +++ .../contracts/ERC721MetadataMintable.json | 955 + .../build/contracts/ERC721Mintable.json | 1329 ++ .../contracts/ERC721MintableBurnableImpl.json | 955 + .../build/contracts/ERC721MinterPauser.json | 2555 +++ .../contracts/build/contracts/ERC721Mock.json | 1885 ++ .../build/contracts/ERC721Pausable.json | 936 + .../build/contracts/ERC721PausableMock.json | 1396 ++ .../ERC721PresetMinterPauserAutoId.json | 2801 +++ .../build/contracts/ERC721ReceiverMock.json | 1028 + .../contracts/build/contracts/ERC777.json | 15728 ++++++++++++++++ .../contracts/build/contracts/ERC777Mock.json | 1598 ++ .../contracts/ERC777SenderRecipientMock.json | 4921 +++++ .../build/contracts/EnumerableMap.json | 5995 ++++++ .../build/contracts/EnumerableMapMock.json | 1431 ++ .../build/contracts/EnumerableSet.json | 5090 +++++ .../build/contracts/EnumerableSetMock.json | 1165 ++ .../contracts/build/contracts/Escrow.json | 1422 ++ .../build/contracts/EtherReceiverMock.json | 334 + .../build/contracts/FinalizableCrowdsale.json | 945 + .../contracts/FinalizableCrowdsaleImpl.json | 638 + .../build/contracts/GSNRecipient.json | 4699 +++++ .../build/contracts/GSNRecipientERC20Fee.json | 4679 +++++ .../contracts/GSNRecipientERC20FeeMock.json | 882 + .../build/contracts/GSNRecipientMock.json | 1636 ++ .../contracts/GSNRecipientSignature.json | 1902 ++ .../contracts/GSNRecipientSignatureMock.json | 494 + .../contracts/build/contracts/IERC1155.json | 1798 ++ .../build/contracts/IERC1155MetadataURI.json | 508 + .../build/contracts/IERC1155Receiver.json | 631 + .../contracts/build/contracts/IERC165.json | 180 + .../build/contracts/IERC1820Implementer.json | 214 + .../build/contracts/IERC1820Registry.json | 1317 ++ .../contracts/build/contracts/IERC20.json | 1140 ++ .../contracts/build/contracts/IERC721.json | 1690 ++ .../build/contracts/IERC721Enumerable.json | 721 + .../build/contracts/IERC721Full.json | 576 + .../build/contracts/IERC721Metadata.json | 652 + .../build/contracts/IERC721Receiver.json | 281 + .../contracts/build/contracts/IERC777.json | 2331 +++ .../build/contracts/IERC777Recipient.json | 313 + .../build/contracts/IERC777Sender.json | 313 + .../contracts/build/contracts/IRelayHub.json | 3986 ++++ .../build/contracts/IRelayRecipient.json | 842 + .../contracts/IncreasingPriceCrowdsale.json | 2040 ++ .../IncreasingPriceCrowdsaleImpl.json | 730 + .../IndividuallyCappedCrowdsale.json | 1667 ++ .../IndividuallyCappedCrowdsaleImpl.json | 609 + .../contracts/build/contracts/Math.json | 993 + .../contracts/build/contracts/MathMock.json | 777 + .../build/contracts/MerkleProof.json | 944 + .../build/contracts/MerkleProofWrapper.json | 386 + .../build/contracts/MintedCrowdsale.json | 547 + .../build/contracts/MintedCrowdsaleImpl.json | 419 + .../contracts/build/contracts/MinterRole.json | 1356 ++ .../build/contracts/MinterRoleMock.json | 492 + .../contracts/build/contracts/Ownable.json | 1447 ++ .../build/contracts/OwnableInterfaceId.json | 430 + .../build/contracts/OwnableMock.json | 150 + .../contracts/build/contracts/Pausable.json | 1055 ++ .../build/contracts/PausableCrowdsale.json | 568 + .../contracts/PausableCrowdsaleImpl.json | 553 + .../build/contracts/PausableMock.json | 728 + .../contracts/build/contracts/PauserRole.json | 1356 ++ .../build/contracts/PauserRoleMock.json | 492 + .../build/contracts/PaymentSplitter.json | 4159 ++++ .../contracts/PostDeliveryCrowdsale.json | 1872 ++ .../contracts/PostDeliveryCrowdsaleImpl.json | 644 + .../build/contracts/PullPayment.json | 767 + .../build/contracts/PullPaymentMock.json | 350 + .../build/contracts/ReentrancyAttack.json | 431 + .../build/contracts/ReentrancyGuard.json | 503 + .../build/contracts/ReentrancyMock.json | 1600 ++ .../build/contracts/RefundEscrow.json | 2293 +++ .../build/contracts/RefundableCrowdsale.json | 1867 ++ .../contracts/RefundableCrowdsaleImpl.json | 749 + .../RefundablePostDeliveryCrowdsale.json | 760 + .../RefundablePostDeliveryCrowdsaleImpl.json | 789 + .../contracts/build/contracts/Roles.json | 1095 ++ .../contracts/build/contracts/RolesMock.json | 602 + .../contracts/build/contracts/SafeCast.json | 4457 +++++ .../build/contracts/SafeCastMock.json | 1284 ++ .../contracts/build/contracts/SafeERC20.json | 3105 +++ .../build/contracts/SafeERC20Wrapper.json | 4831 +++++ .../contracts/build/contracts/SafeMath.json | 2579 +++ .../build/contracts/SafeMathMock.json | 1245 ++ .../build/contracts/SampleCrowdsale.json | 1205 ++ .../build/contracts/SampleCrowdsaleToken.json | 1263 ++ .../contracts/build/contracts/Secondary.json | 983 + .../build/contracts/SecondaryMock.json | 201 + .../build/contracts/SignedSafeMath.json | 2578 +++ .../build/contracts/SignedSafeMathMock.json | 1011 + .../contracts/build/contracts/SignerRole.json | 1356 ++ .../build/contracts/SignerRoleMock.json | 492 + .../build/contracts/SimpleToken.json | 799 + .../contracts/build/contracts/Strings.json | 1161 ++ .../build/contracts/StringsMock.json | 259 + .../SupportsInterfaceWithLookupMock.json | 1110 ++ .../build/contracts/TimedCrowdsale.json | 2089 ++ .../build/contracts/TimedCrowdsaleImpl.json | 735 + .../build/contracts/TokenTimelock.json | 1443 ++ .../build/contracts/TokenVesting.json | 5567 ++++++ .../build/contracts/WhitelistAdminRole.json | 1356 ++ .../contracts/WhitelistAdminRoleMock.json | 492 + .../build/contracts/WhitelistCrowdsale.json | 689 + .../contracts/WhitelistCrowdsaleImpl.json | 609 + .../build/contracts/WhitelistedRole.json | 1498 ++ .../build/contracts/WhitelistedRoleMock.json | 317 + .../contracts/__unstable__ERC20Owned.json | 4850 +++++ .../__unstable__ERC20PrimaryAdmin.json | 4669 +++++ .../contracts/__unstable__TokenVault.json | 1708 ++ .../contracts/cryptography/ECDSA.sol | 83 + .../contracts/cryptography/MerkleProof.sol | 33 + .../contracts/cryptography/README.adoc | 9 + .../contracts/introspection/ERC165.sol | 54 + .../contracts/introspection/ERC165Checker.sol | 106 + .../introspection/ERC1820Implementer.sol | 37 + .../contracts/introspection/IERC165.sol | 24 + .../introspection/IERC1820Implementer.sol | 19 + .../introspection/IERC1820Registry.sol | 111 + .../contracts/introspection/README.adoc | 28 + .../@openzeppelin/contracts/math/Math.sol | 31 + .../@openzeppelin/contracts/math/README.adoc | 11 + .../@openzeppelin/contracts/math/SafeMath.sol | 159 + .../contracts/math/SignedSafeMath.sol | 92 + .../@openzeppelin/contracts/package.json | 63 + .../contracts/payment/PaymentSplitter.sol | 134 + .../contracts/payment/PullPayment.sol | 69 + .../contracts/payment/README.adoc | 19 + .../payment/escrow/ConditionalEscrow.sol | 24 + .../contracts/payment/escrow/Escrow.sol | 65 + .../contracts/payment/escrow/RefundEscrow.sol | 93 + .../presets/ERC1155PresetMinterPauser.sol | 104 + .../presets/ERC20PresetMinterPauser.sol | 87 + .../ERC721PresetMinterPauserAutoId.sol | 102 + .../contracts/presets/README.adoc | 15 + .../contracts/token/ERC1155/ERC1155.sol | 413 + .../token/ERC1155/ERC1155Burnable.sol | 31 + .../contracts/token/ERC1155/ERC1155Holder.sol | 18 + .../token/ERC1155/ERC1155Pausable.sol | 39 + .../token/ERC1155/ERC1155Receiver.sol | 18 + .../contracts/token/ERC1155/IERC1155.sol | 103 + .../token/ERC1155/IERC1155MetadataURI.sol | 21 + .../token/ERC1155/IERC1155Receiver.sol | 57 + .../contracts/token/ERC1155/README.adoc | 32 + .../contracts/token/ERC20/ERC20.sol | 307 + .../contracts/token/ERC20/ERC20Burnable.sol | 40 + .../contracts/token/ERC20/ERC20Capped.sol | 43 + .../contracts/token/ERC20/ERC20Pausable.sol | 28 + .../contracts/token/ERC20/ERC20Snapshot.sol | 184 + .../contracts/token/ERC20/IERC20.sol | 77 + .../contracts/token/ERC20/README.adoc | 44 + .../contracts/token/ERC20/SafeERC20.sol | 75 + .../contracts/token/ERC20/TokenTimelock.sol | 67 + .../contracts/token/ERC721/ERC721.sol | 473 + .../contracts/token/ERC721/ERC721Burnable.sol | 25 + .../contracts/token/ERC721/ERC721Holder.sol | 23 + .../contracts/token/ERC721/ERC721Pausable.sol | 28 + .../contracts/token/ERC721/IERC721.sol | 129 + .../token/ERC721/IERC721Enumerable.sol | 29 + .../token/ERC721/IERC721Metadata.sol | 27 + .../token/ERC721/IERC721Receiver.sol | 22 + .../contracts/token/ERC721/README.adoc | 36 + .../contracts/token/ERC777/ERC777.sol | 503 + .../contracts/token/ERC777/IERC777.sol | 188 + .../token/ERC777/IERC777Recipient.sol | 34 + .../contracts/token/ERC777/IERC777Sender.sol | 34 + .../contracts/token/ERC777/README.adoc | 20 + .../@openzeppelin/contracts/utils/Address.sol | 141 + .../@openzeppelin/contracts/utils/Arrays.sol | 47 + .../contracts/utils/Counters.sol | 40 + .../@openzeppelin/contracts/utils/Create2.sol | 59 + .../contracts/utils/EnumerableMap.sol | 237 + .../contracts/utils/EnumerableSet.sol | 243 + .../contracts/utils/Pausable.sol | 90 + .../@openzeppelin/contracts/utils/README.adoc | 49 + .../contracts/utils/ReentrancyGuard.sol | 62 + .../contracts/utils/SafeCast.sol | 211 + .../@openzeppelin/contracts/utils/Strings.sol | 34 + package-lock.json | 13 + package.json | 87 + scripts/deploy.ts | 29 + tasks/accounts.ts | 12 + tasks/clean.ts | 12 + tasks/task-names.ts | 2 + tasks/typechain.ts | 33 + test/Greeter.behavior.ts | 11 + test/Greeter.ts | 26 + tsconfig.json | 27 + 316 files changed, 315304 insertions(+) create mode 100644 .codeclimate.yml create mode 100644 .commitlintrc.js create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .eslintignore create mode 100644 .eslintrc.yaml create mode 100644 .github/CLA.md create mode 100644 .github/COMMUNITY_GUIDELINES.md create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE/action.yaml create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/SECURITY.md create mode 100644 .github/SUPPORT.md create mode 100644 .huskyrc create mode 100644 .mocharc.json create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .solcover.js create mode 100644 .solhint.json create mode 100644 .solhintignore create mode 100644 @types/augmentations.d.ts create mode 100644 @types/buidler-env.d.ts create mode 100644 BUILDING.md create mode 100644 CCPA.adoc create mode 100644 CONTRIBUTING.md create mode 100644 DATA_BREACH_RESPONSE.md create mode 100644 DISCLAIMER.md create mode 100644 DOCUMENT_RETENTION.adoc create mode 100644 INCIDENT_RESPONSE_PLAN.adoc create mode 100644 SECURITY.md create mode 100644 SOFTWARE_DISCLOSURE_DEFECTS.adoc create mode 100644 SUPPORT.md create mode 100644 TERMS_OF_SERVICE.md create mode 100644 VERSIONING.md create mode 100644 buidler.config.ts create mode 100644 contracts/ConvertLib.sol create mode 100644 contracts/Greeter.sol create mode 100644 contracts/JEDToken.sol create mode 100644 contracts/Migrations.sol create mode 100644 contracts/README.md create mode 100644 contracts/RelaySwapPool.sol create mode 100644 contracts/inventory create mode 100644 contracts/natspec3 create mode 100644 lib/AccountRulesProxy.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/Context.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/GSNRecipient.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/GSNRecipientERC20Fee.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/GSNRecipientSignature.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/IRelayHub.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/IRelayRecipient.sol create mode 100644 node_modules/@openzeppelin/contracts/GSN/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/README.md create mode 100644 node_modules/@openzeppelin/contracts/access/AccessControl.sol create mode 100644 node_modules/@openzeppelin/contracts/access/Ownable.sol create mode 100644 node_modules/@openzeppelin/contracts/access/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/AccessControl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/AccessControlMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Address.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/AddressImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Arrays.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ArraysImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/CapperRole.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/CapperRoleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrow.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrowMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Context.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ContextMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ContextMockCaller.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Counters.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/CountersImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Create2.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Create2Impl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Crowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/CrowdsaleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ECDSA.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ECDSAMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1155.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1155Burnable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1155Holder.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1155Pausable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1155PresetMinterPauser.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1155Receiver.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC165.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC165Checker.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC165CheckerMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC165InterfacesSupported.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC165Mock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC165NotSupported.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1820Implementer.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC1820ImplementerMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Burnable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20BurnableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Capped.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20CappedMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20DecimalsMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Detailed.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20DetailedMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Metadata.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20MetadataMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Migrator.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Mintable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20MintableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20MinterPauser.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Mock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20NoReturnMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Pausable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20PausableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20PresetMinterPauser.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnFalseMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnTrueMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20Snapshot.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC20SnapshotMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Burnable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721BurnableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Enumerable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Full.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721FullMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721GSNRecipientMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Holder.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Metadata.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721MetadataMintable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Mintable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721MintableBurnableImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721MinterPauser.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Mock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721Pausable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721PausableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721PresetMinterPauserAutoId.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC721ReceiverMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC777.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC777Mock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ERC777SenderRecipientMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/EnumerableMap.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/EnumerableMapMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/EnumerableSet.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/EnumerableSetMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Escrow.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/EtherReceiverMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/GSNRecipient.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20Fee.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20FeeMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignature.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignatureMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC1155.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC1155MetadataURI.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC1155Receiver.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC165.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC1820Implementer.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC1820Registry.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC20.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC721.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC721Enumerable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC721Full.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC721Metadata.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC721Receiver.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC777.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC777Recipient.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IERC777Sender.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IRelayHub.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IRelayRecipient.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Math.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MathMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MerkleProof.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MerkleProofWrapper.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MinterRole.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/MinterRoleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Ownable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/OwnableInterfaceId.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/OwnableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Pausable.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PausableMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PauserRole.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PauserRoleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PaymentSplitter.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PullPayment.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/PullPaymentMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ReentrancyAttack.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ReentrancyGuard.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/ReentrancyMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/RefundEscrow.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Roles.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/RolesMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SafeCast.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SafeCastMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SafeERC20.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SafeERC20Wrapper.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SafeMath.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SafeMathMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsaleToken.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Secondary.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SecondaryMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMath.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMathMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SignerRole.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SignerRoleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SimpleToken.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/Strings.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/StringsMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/SupportsInterfaceWithLookupMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/TokenTimelock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/TokenVesting.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRole.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRoleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsale.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsaleImpl.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRole.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRoleMock.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20Owned.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20PrimaryAdmin.json create mode 100644 node_modules/@openzeppelin/contracts/build/contracts/__unstable__TokenVault.json create mode 100644 node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol create mode 100644 node_modules/@openzeppelin/contracts/cryptography/MerkleProof.sol create mode 100644 node_modules/@openzeppelin/contracts/cryptography/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/introspection/ERC165.sol create mode 100644 node_modules/@openzeppelin/contracts/introspection/ERC165Checker.sol create mode 100644 node_modules/@openzeppelin/contracts/introspection/ERC1820Implementer.sol create mode 100644 node_modules/@openzeppelin/contracts/introspection/IERC165.sol create mode 100644 node_modules/@openzeppelin/contracts/introspection/IERC1820Implementer.sol create mode 100644 node_modules/@openzeppelin/contracts/introspection/IERC1820Registry.sol create mode 100644 node_modules/@openzeppelin/contracts/introspection/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/math/Math.sol create mode 100644 node_modules/@openzeppelin/contracts/math/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/math/SafeMath.sol create mode 100644 node_modules/@openzeppelin/contracts/math/SignedSafeMath.sol create mode 100644 node_modules/@openzeppelin/contracts/package.json create mode 100644 node_modules/@openzeppelin/contracts/payment/PaymentSplitter.sol create mode 100644 node_modules/@openzeppelin/contracts/payment/PullPayment.sol create mode 100644 node_modules/@openzeppelin/contracts/payment/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/payment/escrow/ConditionalEscrow.sol create mode 100644 node_modules/@openzeppelin/contracts/payment/escrow/Escrow.sol create mode 100644 node_modules/@openzeppelin/contracts/payment/escrow/RefundEscrow.sol create mode 100644 node_modules/@openzeppelin/contracts/presets/ERC1155PresetMinterPauser.sol create mode 100644 node_modules/@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol create mode 100644 node_modules/@openzeppelin/contracts/presets/ERC721PresetMinterPauserAutoId.sol create mode 100644 node_modules/@openzeppelin/contracts/presets/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Burnable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Pausable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC1155/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/ERC20Capped.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/ERC20Snapshot.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC20/TokenTimelock.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/ERC721Holder.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC721/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/token/ERC777/ERC777.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC777/IERC777.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC777/IERC777Sender.sol create mode 100644 node_modules/@openzeppelin/contracts/token/ERC777/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/utils/Address.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/Arrays.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/Counters.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/Create2.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/EnumerableMap.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/EnumerableSet.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/Pausable.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/README.adoc create mode 100644 node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/SafeCast.sol create mode 100644 node_modules/@openzeppelin/contracts/utils/Strings.sol create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scripts/deploy.ts create mode 100644 tasks/accounts.ts create mode 100644 tasks/clean.ts create mode 100644 tasks/task-names.ts create mode 100644 tasks/typechain.ts create mode 100644 test/Greeter.behavior.ts create mode 100644 test/Greeter.ts create mode 100644 tsconfig.json diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..176505e --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,5 @@ +git-legal: + enabled: true + config: + # eg. Affero GPL + allow_affero_copyleft: false diff --git a/.commitlintrc.js b/.commitlintrc.js new file mode 100644 index 0000000..69b4242 --- /dev/null +++ b/.commitlintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ["@commitlint/config-conventional"], +}; diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6fd96c1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# EditorConfig http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# All files +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.sol] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9584fb5 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +ETHERSCAN_API_KEY=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +INFURA_API_KEY=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +MNEMONIC=here is where your twelve words mnemonic should be put my friend diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..6b1e7bb --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +# folders +artifacts/ +build/ +cache/ +coverage/ +dist/ +lib/ +node_modules/ +typechain/ + +# files +.solcover.js +coverage.json diff --git a/.eslintrc.yaml b/.eslintrc.yaml new file mode 100644 index 0000000..4973e0e --- /dev/null +++ b/.eslintrc.yaml @@ -0,0 +1,21 @@ +extends: + - eslint:recommended + - plugin:@typescript-eslint/eslint-recommended + - plugin:@typescript-eslint/recommended + - prettier/@typescript-eslint +parser: "@typescript-eslint/parser" +parserOptions: + project: tsconfig.json +plugins: + - "@typescript-eslint" +root: true +rules: + "@typescript-eslint/no-floating-promises": + - error + - ignoreIIFE: true + ignoreVoid: true + "@typescript-eslint/no-inferrable-types": "off" + "@typescript-eslint/no-unused-vars": + - error + - argsIgnorePattern: _ + varsIgnorePattern: _ diff --git a/.github/CLA.md b/.github/CLA.md new file mode 100644 index 0000000..ad93ad2 --- /dev/null +++ b/.github/CLA.md @@ -0,0 +1,124 @@ +# Freight Trust CLA + +> By signing this contributor license agreement, I understand and agree that +> this project and contributions to it are public and that a record of the +> contribution (including all personal information I submit with it, including +> my full name and email address) is maintained indefinitely and may be +> redistributed consistent with this project, compliance with the open source +> license(s) involved, and maintenance of authorship attribution. + +The information you provide below, along with your IP address and a timestamp, +will be maintained in accordance with Freight Trust's privacy policy. + +You agree that the following terms apply to all of your past, present and future +Contributions. Except for the licenses granted in this Agreement, you retain all +of your right, title and interest in and to your Contributions. + +"You" (or "Your") shall mean the copyright owner or legal entity authorized by +the copyright owner that is making this Agreement with Freight Trust. For legal +entities, the entity making a Contribution and all other entities that control, +are controlled by, or are under common control with that entity are considered +to be a single Contributor. For the purposes of this definition, "control" means + + - (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or + - (ii) ownership of fifty percent (50%) or more of the outstanding shares, or + - (iii) beneficial ownership of such entity. + +"Contribution" shall mean any original work of authorship, including any +modifications or additions to an existing work, that is intentionally submitted +by You to Freight Trust for inclusion in, or documentation of, any of the +products owned or managed by Freight Trust (the "Work"). For the purposes of +this definition, "submitted" means any form of electronic, verbal, or written +communication sent to Freight Trust or its representatives, including but not +limited to communication on electronic mailing lists, source code control +systems, and issue tracking systems that are managed by, or on behalf of, +Freight Trust for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise designated in +writing by You as "Not a Contribution." + +**Grant of Copyright License**. Subject to the terms and conditions of this +Agreement, You hereby grant to Freight Trust and to recipients of software +distributed by Freight Trust a perpetual, worldwide, non-exclusive, no-charge, +royalty-free, irrevocable copyright license to reproduce, prepare derivative +works of, publicly display, publicly perform, sublicense, and distribute Your +Contributions and such derivative works. + +**Grant of Patent License**. Subject to the terms and conditions of this +Agreement, You hereby grant to Freight Trust and to recipients of software +distributed by Freight Trust a perpetual, worldwide, non-exclusive, no-charge, +royalty-free, irrevocable (except as stated in this section) patent license to +make, have made, use, offer to sell, sell, import, and otherwise transfer the +Work, where such license applies only to those patent claims licensable by You +that are necessarily infringed by Your Contribution(s) alone or by combination +of Your Contribution(s) with the Work to which such Contribution(s) was +submitted. If any entity institutes patent litigation against You or any other +entity (including a cross-claim or counterclaim in a lawsuit) alleging that your +Contribution, or the Work to which you have contributed, constitutes direct or +contributory patent infringement, then any patent licenses granted to that +entity under this Agreement for that Contribution or Work shall terminate as of +the date such litigation is filed. You represent that you are legally entitled +to grant the above license. + +**Moral Rights.** To the fullest extent permitted under applicable law, you +hereby waive, and agree not to assert, all of your "moral rights" in or relating +to your Contributions for the benefit of Freight Trust, its assigns, and their +respective direct and indirect sublicensees. + +**Third Party Content/Rights.** If your Contribution includes or is based on any +source code, object code, bug fixes, configuration changes, tools, +specifications, documentation, data, materials, feedback, information or other +works of authorship that were not authored by you ("Third Party Content") or if +you are aware of any third party intellectual property or proprietary rights +associated with your Contribution ("Third Party Rights"), then you agree to +include with the submission of your Contribution full details respecting such +Third Party Content and Third Party Rights, including, without limitation, +identification of which aspects of your Contribution contain Third Party Content +or are associated with Third Party Rights, the owner/author of the Third Party +Content and Third Party Rights, where you obtained the Third Party Content, and +any applicable third party license terms or restrictions respecting the Third +Party Content and Third Party Rights. For greater certainty, the foregoing +obligations respecting the identification of Third Party Content and Third Party +Rights do not apply to any portion of a Project that is incorporated into your +Contribution to that same Project. + +**Representations.** You represent that, other than the Third Party Content and +Third Party Rights identified by you in accordance with this Agreement, you are +the sole author of your Contributions and are legally entitled to grant the +foregoing licenses and waivers in respect of your Contributions. If your +Contributions were created in the course of your employment with your past or +present employer(s), you represent that such employer(s) has authorized you to +make your Contributions on behalf of such employer(s) or such employer (s) has +waived all of their right, title or interest in or to your Contributions. If +your employer(s) has rights to intellectual property that you create that +includes your Contributions, you represent that you have received permission to +make Contributions on behalf of that employer, that your employer has waived +such rights for your Contributions to Freight Trust, or that your employer has +executed a separate Corporate CLA with Freight Trust. + +**Disclaimer.** To the fullest extent permitted under applicable law, your +Contributions are provided on an "as is" basis, without any warranties or +conditions, express or implied, including, without limitation, any implied +warranties or conditions of non-infringement, merchantability or fitness for a +particular purpose. You are not required to provide support for your +Contributions, except to the extent you desire to provide support. + +**No Obligation.** You acknowledge that Freight Trust is under no obligation to +use or incorporate your Contributions into any of the Projects. The decision to +use or incorporate your Contributions into any of the Projects will be made at +the sole discretion of Freight Trust or its authorized delegates .. + +**Disputes.** This Agreement shall be governed by and construed in accordance +with the laws of the State of Delaware, United States of America, without giving +effect to its principles or rules regarding conflicts of laws, other than such +principles directing application of Delaware law. The parties hereby submit to +venue in, and jurisdiction of the courts located in Delaware, Delaware for +purposes relating to this Agreement. In the event that any of the provisions of +this Agreement shall be held by a court or other tribunal of competent +jurisdiction to be unenforceable, the remaining portions hereof shall remain in +full force and effect. + +**Assignment.** You agree that Freight Trust may assign this Agreement, and all +of its rights, obligations and licenses hereunder + +You agree to notify Freight Trust of any facts or circumstances of which you +become aware that would make these representations inaccurate in any respect. diff --git a/.github/COMMUNITY_GUIDELINES.md b/.github/COMMUNITY_GUIDELINES.md new file mode 100644 index 0000000..4d8b24a --- /dev/null +++ b/.github/COMMUNITY_GUIDELINES.md @@ -0,0 +1,37 @@ +# Freight Trust Open Source Community Guidelines + +We encourage respectful behavior, this includes: + +- Being considerate, constructive, and helpful. +- Not engaging in discriminatory, harassing, hateful, sexualized, or physically + threatening behavior, speech, and imagery. +- Not engaging in unwanted physical contact. + +## Resolve peacefully + +We do not believe that all conflict is necessarily bad; healthy debate and +disagreement often yields positive results. + +If you see someone behaving disrespectfully, you are encouraged to address the +behavior directly with those involved. Many issues can be resolved quickly and +easily, and this gives people more control over the outcome of their dispute. If +you are unable to resolve the matter for any reason, or if the behavior is +threatening or harassing, report it. + +## Reporting problems + +Some Freight Trust open source projects may adopt a project-specific code of +conduct. In those cases, a Freight Trust employee will be identified as the +Project Steward, who will receive and handle reports of code of conduct +violations. In the event that a project hasn’t identified a Project Steward, you +can report problems by emailing corporate@freighttrust.com. + +We may or mat not investigate every complaint, and you may not receive a direct +response. We will use our discretion in determining when and how to follow up on +reported incidents, which may range from not taking action to permanent +expulsion from the project and project-sponsored spaces. We will notify the +accused of the report and provide them an opportunity to discuss it before any +action is taken. The identity of the reporter will be omitted from the details +of the report supplied to the accused. In potentially harmful situations, such +as ongoing harassment or threats to anyone's safety, we may take action without +notice. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..3aa6c46 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,94 @@ + + + +# Contributing + +> This document is inspired by +> [elasticsearch/CONTRIBUTING.md](https://github.com/elastic/elasticsearch/blob/master/CONTRIBUTING.md) + +Adding a `CONTRIBUTING.md` to a Github repository enables a link to that file in +the pull request or create an issue page. This document should guide potential +contributors toward making a successful and meaningful impact on the project, +and can save maintainers time and hassle caused by improper pull requests and +issues. You can learn more about the features that are enabled by Github when +this file is present +[here](https://help.github.com/articles/setting-guidelines-for-repository-contributors/). + +## How to contribute + +There are many ways to contribute, from writing tutorials or blog posts, +improving the documentation, +[submitting Github issues](https://help.github.com/articles/creating-an-issue/), +bug reports, feature requests and writing code. + +## License + +Please [SEE LICENSE](#LICENSE) + +## Bug reports + +If you think you've found a bug in the software, first make sure you're testing +against the _latest_ version of the software -- your issue may have been fixed +already. If it's not, please check out the issues list on Github and search for +similar issues that have already been opened. If there are no issues then please +[submit a Github issue](https://help.github.com/articles/creating-an-issue/). + +If you can provide a small test case it would greatly help the reproduction of a +bug, as well as a a screenshot, and any other information you can provide. + +## Feature Requests + +If there are features that do not exist yet, we are definitely open to feature +requests and detailed proposals. +[Open an issue](https://help.github.com/articles/creating-an-issue/) on our +Github which describes the feature or proposal in detail, answer questions like +why? how? + +## Contributing Code and Documentation Changes + +Bug fixes, patches and new features are welcome. Please find or open an issue +about it first. Talk about what exactly want to do, someone may already be +working on it, or there might be some issues that you need to be aware of before +implementing the fix. + +There are many ways to fix a problem and it is important to find the best +approach before writing a ton of code. + +##### Documentation Changes + +For small documentation changes and fixes, these can be done quickly following +this video guide on +[how to contribute to Open Source in 1 minute on Github](https://www.youtube.com/watch?v=kRYk1-yKwWs). + +### Forking the repository + +[How to fork a repository](https://help.github.com/articles/fork-a-repo/). + +### Submitting changes + +1. Review & Test changes + - If the code changed, then test it. If documentation changed, then preview + the rendered Markdown. +2. Commiting + - Follow the [Conventional Commits](CONVENTIONAL_COMMITS.md) guidelines to + create a commit message. +3. Sign the CLA + - Make sure you've signed the repository's Contributor License Agreement. We + are not asking you to assign copyright to us, but to give us the right to + distribute your code without restriction. We ask this of all contributors + in order to assure our users of the origin and continuing existence of the + code. You only need to sign the CLA once. +4. Submit a pull request + - Push local changes to your forked repository and make a pull request. + Follow the [Convention Commits](CONVENTIONAL_COMMITS.md) guidelines for + naming Github pull requests and what to put in the body. + +## Building + +Follow the build process is outlined in [BUILDING.md](BUILDING.md) to create a +build. + +## Releasing + +Follow the release process is outlined in [RELEASING.md](RELEASING.md) to create +a release. diff --git a/.github/ISSUE_TEMPLATE/action.yaml b/.github/ISSUE_TEMPLATE/action.yaml new file mode 100644 index 0000000..e69de29 diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..22fab83 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,23 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "" +labels: "" +assignees: "" +--- + +**Describe the bug** A clear and concise description of what the bug is. + +**To Reproduce** Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** A clear and concise description of what you expected to +happen. + +**Screenshots** If applicable, add screenshots to help explain your problem. + +**Additional context** Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..7c87193 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "" +labels: "" +assignees: "" +--- + +**Is your feature request related to a problem? Please describe.** A clear and +concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** A clear and concise description of what you +want to happen. + +**Describe alternatives you've considered** A clear and concise description of +any alternative solutions or features you've considered. + +**Additional context** Add any other context or screenshots about the feature +request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..c16f1da --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,17 @@ +Closes # + +{{short description}} + +#### Changelog + +**New** + +- {{new thing}} + +**Changed** + +- {{change thing}} + +**Removed** + +- {{removed thing}} diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..9de5085 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,33 @@ +# Freight Trust Corporate Security Policy + +## Reporting a Security Bug + +If you think you have discovered a security issue in any of our products, +services or projects, we'd love to hear from you. We will take all security bugs +seriously and if confirmed upon investigation we will patch it within a +reasonable amount of time and release a public security bulletin discussing the +impact and credit the discoverer. + +There are two ways to report a security bug. The easiest is to email a +description of the flaw and any related information (e.g. reproduction steps, +version) to +[security at freighttrust dot org](mailto:security@freighttrust.com). + +The other way is to file a security bug in our +[Infrastructure Repostiory](https://github.com/freight-trust/infrastructure). Be +sure to set the “Security Level” to “Security issue”. + +### Corporate Procedures + +The process by which the Corporate Security Team handles security bugs is +documented further in our +[Defect Response page](https://ft-docs.netlify.app/corporate/defects/) on our +[Omnibus Documentation](https://ft-docs.netlify.app). + +### PKI & PGP + +[PKI & PGP Keys can be found at github/freight-trust/pki](https://github.com/freight-trust/pki) + +#### Points of Contact + +support@freight.zendesk.com admin@freighttrust.com security@freighttrust.com diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md new file mode 100644 index 0000000..6184596 --- /dev/null +++ b/.github/SUPPORT.md @@ -0,0 +1,36 @@ + + + +# Support + +Welcome to the repository! The following links are a set of guidelines for +contributing to this repo and its packages. eThese are mostly guidelines, not +rules. Use your best judgement, and feel free to propose changes to this +document in a pull request. Contributions come in the form of code submissions, +writing documentation, raising issues, helping others in chat, etc. + +### Github Accounts + +Having a Github account is necessary for obtaining support including chat, +troubleshooting, and issue management. + +- If you want to raise an issue, you can do so + [on the github issue tab](https://github.com/${freight-trust}/${repository/{$ref}/issues). + +### Useful support links + +- [Corporate Website](https://freighttrust.com) +- [Blockchain Network](https://github.com/freight-chain/networke) +- [Omnibus Documentation](https://ft-docs.netlify.app) +- [Did you find a bug?](/.github/ISSUE_TEMPLATE/bug_report.md) +- [Feature Request](/.github/ISSUE_TEMPLATE/feature_request.md) +- [Contributing Guidelines](#CONTRIBUTING.md) + +[telegram]: https://t.me/freighttrust +[contributing guidelines]: CONTRIBUTING.md + +[support@freight.zendesk.com](mailto:support@freight.zendesk.com) + +#### Additional Support links + +[besu user documentation]: https://besu.hyperledger.org diff --git a/.huskyrc b/.huskyrc new file mode 100644 index 0000000..2a4718c --- /dev/null +++ b/.huskyrc @@ -0,0 +1,5 @@ +{ + "hooks": { + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } +} diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 0000000..c3e686d --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,7 @@ +{ + "delay": true, + "extension": ["ts"], + "recursive": "test", + "require": ["@nomiclabs/buidler/register"], + "timeout": 20000 +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..ad45072 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,12 @@ +# folders +artifacts/ +build/ +cache/ +coverage/ +dist/ +lib/ +node_modules/ +typechain/ + +# files +coverage.json diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d3e24ae --- /dev/null +++ b/.prettierrc @@ -0,0 +1,16 @@ +{ + "arrowParens": "avoid", + "bracketSpacing": true, + "printWidth": 120, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "all", + "overrides": [ + { + "files": "*.sol", + "options": { + "tabWidth": 4 + } + } + ] +} diff --git a/.solcover.js b/.solcover.js new file mode 100644 index 0000000..82b3897 --- /dev/null +++ b/.solcover.js @@ -0,0 +1,15 @@ +const shell = require("shelljs"); + +module.exports = { + istanbulReporter: ["html"], + mocha: { + delay: true, + }, + onCompileComplete: async function (_config) { + await run("typechain"); + }, + onIstanbulComplete: async function (_config) { + shell.rm("-rf", "./typechain"); + }, + skipFiles: ["mocks", "test"], +}; diff --git a/.solhint.json b/.solhint.json new file mode 100644 index 0000000..56e876e --- /dev/null +++ b/.solhint.json @@ -0,0 +1,12 @@ +{ + "extends": "solhint:recommended", + "plugins": ["prettier"], + "rules": { + "code-complexity": ["error", 7], + "compiler-version": ["error", "^0.6.10"], + "constructor-syntax": "error", + "max-line-length": ["error", 120], + "not-rely-on-time": "off", + "prettier/prettier": "error" + } +} diff --git a/.solhintignore b/.solhintignore new file mode 100644 index 0000000..5daf5e1 --- /dev/null +++ b/.solhintignore @@ -0,0 +1,5 @@ +# folders +.yarn/ +build/ +dist/ +node_modules/ diff --git a/@types/augmentations.d.ts b/@types/augmentations.d.ts new file mode 100644 index 0000000..07b2345 --- /dev/null +++ b/@types/augmentations.d.ts @@ -0,0 +1,23 @@ +import { Greeter } from "../typechain/Greeter"; + +export interface TypechainConfig { + outDir?: string; + target?: "ethers-v4" | "ethers-v5" | "truffle-v4" | "truffle-v5" | "web3-v1"; +} + +declare module "@nomiclabs/buidler/types" { + interface BuidlerConfig { + typechain?: TypechainConfig; + } + + interface ProjectPaths { + coverage: string; + coverageJson: string; + typechain: string; + } +} +declare module "mocha" { + export interface Context { + greeter: Greeter; + } +} diff --git a/@types/buidler-env.d.ts b/@types/buidler-env.d.ts new file mode 100644 index 0000000..bf4340f --- /dev/null +++ b/@types/buidler-env.d.ts @@ -0,0 +1,3 @@ +/// +/// +/// diff --git a/BUILDING.md b/BUILDING.md new file mode 100644 index 0000000..2c64cd7 --- /dev/null +++ b/BUILDING.md @@ -0,0 +1,109 @@ + + + +# Building + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in +[BCP 14](https://tools.ietf.org/html/bcp14) +[RFC2119](https://tools.ietf.org/html/rfc2119) +[RFC8174](https://tools.ietf.org/html/rfc8174) when, and only when, they appear +in all capitals, as shown here. + +## Introduction + +This document is to describe the functionality a project MUST provide in terms +of creating build artifacts. It also describes the structure in which project's +MUST write build artifacts in. + +A project MUST provide: + +- a folder name convention for build artifacts +- a folder structure for the above-mentioned build artifacts folder +- a list of targets +- a file called `bin/build.{target}.{ext}` to target each of the build targets +- a build pipeline given the above pretext + +The purpose of having a uniform way of producing a build is that we may ALL +produce builds for any of the projects, making the onramp for new developers +less steep, while still maintaining an exceptionally high level of quality. + +The projects should follow the 'architecture as code' principle - and should +require a very minimal set of dependencies. + +It is the responsibilty of the build tooling to write artifacts to the +appropriate location as outlined in this specification. + +## Build Folder Name + +The cannonical folder for builds SHALL be named `build` and be located at the +root of the project repository. Each project MUST `git ignore` the `build` +folder. + +## Build Folder Structure + +Files and folder names MUST be lowercase. The result of the build process should +create a folder structure as follows: + +``` +. +└── build + └── {target} + └── {project-name}.{ext} +``` + +Below is an example: + +``` +. +└── build + └── windows + └── my-build.exe +``` + +## Build Targets + +Below is a list of suggested targets for a project + +1. windows +2. linux +3. macos + +## Build script + +Each release target MUST have a `bin/build.{target}.{ext}` file. + +The result of this is that every project MUST produce a build for each target +when the following command is invoked: + +``` +bin/build.{target}.{ext} +``` + +The file MUST be placed in the project's `bin` directory. + +## Build Pipeline + +### Building targets + +`bin/build.{target}.{ext}` should create builds for each of the targets, and +place the build artifacts in a folder structure outlined above. + +### Windows + +``` +bin/build.windows.bat +``` + +### Linux + +``` +bin/build.linux.sh +``` + +### Macos + +``` +bin/build.macos.sh +``` diff --git a/CCPA.adoc b/CCPA.adoc new file mode 100644 index 0000000..3c8e8ca --- /dev/null +++ b/CCPA.adoc @@ -0,0 +1,46 @@ +:doctype: book + +.... + +Notice: CCPA - CALIFORNIA PRIVACY ACT +License: CC-BY-2.5 +Author: Freight Trust & Clearing Corp +Issued: November 25th, 2019 +Link: github.com/freight-trust/legal/ccpa.md +.... + +{blank} + === + += CALIFORNIA RESIDENTS PRIVACY RIGHTS NOTICE + +* In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information. + +*California Civil Code Section 1798.83*, also known as the _"`Shine The Light`"_ law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. +If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below. + +---- +email: admin@freighttrust.com +subject: CCPA Request +body: first, last name, user name or public account number, registered e-mail address, and any other related information. + +*or* + +- postal: +`Freight Trust Corporation` +`ATTN: Operations Group` +`1675 7th ` +`St Rm 236-110` +`Oakland, CA 94615` +---- + +{blank} + + +If you are under 18 years of age, reside in California, and have a registered account with the Services or Apps, you have the right to request removal of unwanted data that you publicly post on the Services or Apps. + +_NOTICE_: We do *NOT* provide services to any persons under the age of 18 in any jurisidiction, if you are below the age of 18, please contact us as soon as possible. + +To request removal of such data, please contact us using the contact information provided below, and include the email address associated with your account and a statement that you reside in California. +We will make sure the data is not publicly displayed on the Services or Apps, but please be aware that the data may not be completely or comprehensively removed from our systems. + +==== + Freight Trust & Clearing Corporation. +All Rights Reserved diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..3aa6c46 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,94 @@ + + + +# Contributing + +> This document is inspired by +> [elasticsearch/CONTRIBUTING.md](https://github.com/elastic/elasticsearch/blob/master/CONTRIBUTING.md) + +Adding a `CONTRIBUTING.md` to a Github repository enables a link to that file in +the pull request or create an issue page. This document should guide potential +contributors toward making a successful and meaningful impact on the project, +and can save maintainers time and hassle caused by improper pull requests and +issues. You can learn more about the features that are enabled by Github when +this file is present +[here](https://help.github.com/articles/setting-guidelines-for-repository-contributors/). + +## How to contribute + +There are many ways to contribute, from writing tutorials or blog posts, +improving the documentation, +[submitting Github issues](https://help.github.com/articles/creating-an-issue/), +bug reports, feature requests and writing code. + +## License + +Please [SEE LICENSE](#LICENSE) + +## Bug reports + +If you think you've found a bug in the software, first make sure you're testing +against the _latest_ version of the software -- your issue may have been fixed +already. If it's not, please check out the issues list on Github and search for +similar issues that have already been opened. If there are no issues then please +[submit a Github issue](https://help.github.com/articles/creating-an-issue/). + +If you can provide a small test case it would greatly help the reproduction of a +bug, as well as a a screenshot, and any other information you can provide. + +## Feature Requests + +If there are features that do not exist yet, we are definitely open to feature +requests and detailed proposals. +[Open an issue](https://help.github.com/articles/creating-an-issue/) on our +Github which describes the feature or proposal in detail, answer questions like +why? how? + +## Contributing Code and Documentation Changes + +Bug fixes, patches and new features are welcome. Please find or open an issue +about it first. Talk about what exactly want to do, someone may already be +working on it, or there might be some issues that you need to be aware of before +implementing the fix. + +There are many ways to fix a problem and it is important to find the best +approach before writing a ton of code. + +##### Documentation Changes + +For small documentation changes and fixes, these can be done quickly following +this video guide on +[how to contribute to Open Source in 1 minute on Github](https://www.youtube.com/watch?v=kRYk1-yKwWs). + +### Forking the repository + +[How to fork a repository](https://help.github.com/articles/fork-a-repo/). + +### Submitting changes + +1. Review & Test changes + - If the code changed, then test it. If documentation changed, then preview + the rendered Markdown. +2. Commiting + - Follow the [Conventional Commits](CONVENTIONAL_COMMITS.md) guidelines to + create a commit message. +3. Sign the CLA + - Make sure you've signed the repository's Contributor License Agreement. We + are not asking you to assign copyright to us, but to give us the right to + distribute your code without restriction. We ask this of all contributors + in order to assure our users of the origin and continuing existence of the + code. You only need to sign the CLA once. +4. Submit a pull request + - Push local changes to your forked repository and make a pull request. + Follow the [Convention Commits](CONVENTIONAL_COMMITS.md) guidelines for + naming Github pull requests and what to put in the body. + +## Building + +Follow the build process is outlined in [BUILDING.md](BUILDING.md) to create a +build. + +## Releasing + +Follow the release process is outlined in [RELEASING.md](RELEASING.md) to create +a release. diff --git a/DATA_BREACH_RESPONSE.md b/DATA_BREACH_RESPONSE.md new file mode 100644 index 0000000..a5ef3b9 --- /dev/null +++ b/DATA_BREACH_RESPONSE.md @@ -0,0 +1,43 @@ +# Data Breach Response Policy + +> priority point of contact: sam@freighttrust.com + +[Incident Response Plan](#) +[Software Defects](#) +[Smart Contract Monitoring](#) +[General Security Procedures](#) + +## Responsible Disclosure + +Any parties who suspect a vulnerability or data breach +should send an encrypted email to: + +sam bacha +operations + +## Sensitive Data + +The following is data that Freight Trust stores and considers +sensitive. If any such data becomes accessible to an unauthenticated / +unauthorized user, that will be considered a Data Breach: + +Private repository contents (i.e. source code), whole or in "diff" form Private +user email addresses Any secrets or tokens which grant access to the above + +> NOTE: Repository names, commit shas, Pull Request numbers, Pull Request +> descriptions, and GitHub user or organization names are not considered sensitive +> for the purposes of this response policy. + +### Expectations In the event of a Data Breach, + +All running services will be stopped to prevent further access Impacted users +will be notified by email within 24 hours, security@github.com will be notified +within 24 hours, along with any other vendors that may be affected. + +### Non-Data-Breach Vulnerabilities + +Freight Trust routinely monitors for patched vulnerabilities in the software +and infrastructure it depends on. Most such vulnerabilities are not at risk of +causing a Data Breach. In such cases, they will be patched without +user-notification or data-breach response activities. These are published +in our RSS Feed. diff --git a/DISCLAIMER.md b/DISCLAIMER.md new file mode 100644 index 0000000..d138c8f --- /dev/null +++ b/DISCLAIMER.md @@ -0,0 +1,57 @@ +# DISCLAIMER + +**Last updated July 01, 2020** + +- [DISCLAIMER](#disclaimer) + - [WEBSITE DISCLAIMER](#website-disclaimer) + - [EXTERNAL LINKS DISCLAIMER](#external-links-disclaimer) + - [PROFESSIONAL DISCLAIMER](#professional-disclaimer) + - [TESTIMONIALS DISCLAIMER](#testimonials-disclaimer) + +## WEBSITE DISCLAIMER + +The information provided by FreightTrust and Clearing Corporation (“we,” “us” or “our”) on https://freighttrust.com (the +“Site”) and our mobile application is for general informational purposes only. All information on the Site and our mobile +application is provided in good faith, however we make no representation or warranty of any kind, express or implied, +regarding the accuracy, adequacy, validity, reliability, availability or completeness of any information on the Site or our +mobile application. UNDER NO CIRCUMSTANCE SHALL WE HAVE ANY LIABILITY TO YOU FOR ANY LOSS OR +DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF THE SITE OR OUR MOBILE +APPLICATION OR RELIANCE ON ANY INFORMATION PROVIDED ON THE SITE AND OUR MOBILE +APPLICATION. YOUR USE OF THE SITE AND OUR MOBILE APPLICATION AND YOUR RELIANCE ON ANY +INFORMATION ON THE SITE AND OUR MOBILE APPLICATION IS SOLELY AT YOUR OWN RISK. + +## EXTERNAL LINKS DISCLAIMER + +The Site and our mobile application may contain (or you may be sent through the Site or our mobile application) +links to other websites or content belonging to or originating from third parties or links to websites and features in +banners or other advertising. Such external links are not investigated, monitored, or checked for accuracy, adequacy, +validity, reliability, availability or completeness by us. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR +ASSUME RESPONSIBILITY FOR THE ACCURACY OR RELIABILITY OF ANY INFORMATION OFFERED BY +THIRD-PARTY WEBSITES LINKED THROUGH THE SITE OR ANY WEBSITE OR FEATURE LINKED IN ANY +BANNER OR OTHER ADVERTISING. WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR +MONITORING ANY TRANSACTION BETWEEN YOU AND THIRD-PARTY PROVIDERS OF PRODUCTS OR +SERVICES. + +## PROFESSIONAL DISCLAIMER + +The Site cannot and does not contain financial advice. The financial information is provided for general informational +and educational purposes only and is not a substitute for professional advice. Accordingly, before taking any actions +based upon such information, we encourage you to consult with the appropriate professionals. We do not provide any +kind of financial advice. THE USE OR RELIANCE OF ANY INFORMATION CONTAINED ON THIS SITE OR OUR +MOBILE APPLICATION IS SOLELY AT YOUR OWN RISK. + +## TESTIMONIALS DISCLAIMER + +The Site may contain testimonials by users of our products and/or services. These testimonials reflect the real-life +experiences and opinions of such users. However, the experiences are personal to those particular users, and may +not necessarily be representative of all users of our products and/or services. We do not claim, and you should not +assume, that all users will have the same experiences. YOUR INDIVIDUAL RESULTS MAY VARY. + +The testimonials on the Site are submitted in various forms such as text, audio and/or video, and are reviewed by us +before being posted. They appear on the Site verbatim as given by the users, except for the correction of grammar or +typing errors. Some testimonials may have been shortened for the sake of brevity where the full testimonial contained +extraneous information not relevant to the general public. + +The views and opinions contained in the testimonials belong solely to the individual user and do not reflect our views +and opinions. We are not affiliated with users who provide testimonials, and users are not paid or otherwise +compensated for their testimonials. diff --git a/DOCUMENT_RETENTION.adoc b/DOCUMENT_RETENTION.adoc new file mode 100644 index 0000000..3c06347 --- /dev/null +++ b/DOCUMENT_RETENTION.adoc @@ -0,0 +1,163 @@ += Document Retention Policy + +[NAMES OF RELEVANT STATES AND COUNTRIES] +Freight Trust +[and its subsidiaries] +[EMPLOYEE NAME] +[and] +[OTHER DEPARTMENT NAME] +[the Legal Department] + +[[contact-person]] +Records Management Officer + +== Overivew + +The corporate information of Freight Trust [and its subsidiaries] is important to how it conducts business and manages employees. + +Federal [and state] law require[s] Freight Trust to retain certain records, usually for a specific amount of time. The accidental or intentional destruction of these records during their specified retention periods could result in the following consequences for Freight Trust and/or its employees: + + +- Fines and penalties. +- Loss of rights. +- Obstruction of justice charges. +- Inference of spoliation of evidence and spoliation tort claims. +- Contempt of court charges +- Serious disadvantages in litigation. + +Freight Trust must retain certain records because they contain information that: + +- Serves as Freight Trust's corporate memory. +Has enduring business value (for example, it provides a record of a business transaction, evidences Freight Trust's rights or obligations, protects Freight Trust's legal interests or ensures operational continuity). + +- Must be kept to satisfy legal, accounting, or other regulatory requirements. + + +Freight Trust prohibits the inappropriate destruction of any records, files, documents, samples, and other forms of information. This policy is in accordance with the Sarbanes-Oxley Act of 2002, under which it is a crime to change, conceal, falsify, or destroy any record with the intent to impede or obstruct any official or government proceeding. Therefore, this policy is part of a company-wide system for the review, retention, and destruction of records Freight Trust creates or receives in connection with the business it conducts. + + +## REASONS FOR POLICY + +Counsel may consider revising the clause above to include mention of any state or local law for the jurisdiction(s) where this policy will be used. Also consider adding examples of records that are specific to the company's industry and workplace. + +### Types of Documents + +This policy explains the differences among records, disposable information, and confidential information belonging to others. + +Records A record is any type of information created, received, or transmitted in the transaction of Freight Trust's business, regardless of physical format. Examples of where the various types of information are located include: + +- Appointment books and calendars. +- Audio and video recordings. +- Computer programs. +- Contracts. +- Electronic files. +- Emails. +- Handwritten notes. +- Invoices. +- Letters and other correspondence. +- Magnetic tape. +- Memory in cell phones and PDAs. +- Online postings, such as on Facebook, Twitter, Instagram, Medium, Slack, Github and other social media platforms and websites. +- Performance reviews. +- Test samples. +- Voicemails. + +Therefore, any paper records and electronic files, including any records of donations made online, that are part of any of the categories listed in the Records Retention Schedule contained in the Appendix to this policy, must be retained for the amount of time indicated in the Records Retention Schedule. A record must not be retained beyond the period indicated in the Record Retention Schedule, unless a valid business reason (or a litigation hold or other special situation) calls for its continued retention. If you are unsure whether to retain a certain record, contact the Records Management Officer or the Legal Department. + +#### Disposable Information +Disposable information consists of data that may be discarded or deleted at the discretion of the user once it has served its temporary useful purpose and/or data that may be safely destroyed because it is not a record as defined by this policy. Examples may include: +image + +- Duplicates of originals that have not been annotated. +- Preliminary drafts of letters, memoranda, reports, worksheets, and informal notes that do not represent significant steps or decisions in the preparation of an official record. +- Books, periodicals, manuals, training binders, and other printed materials obtained from sources outside of Freight Trust and retained primarily for reference purposes. +- Spam and junk mail. + + + +#### Confidential Information Belonging to Others +Any confidential information that an employee may have obtained from a source outside of Freight Trust, such as a previous employer, must not, so long as such information remains confidential, be disclosed to or used by Freight Trust. Unsolicited confidential information submitted to Freight Trust should be refused, returned to the sender where possible, and deleted, if received via the internet. +Mandatory Compliance + + +#### Responsibility of All Employees + +Freight Trust strives to comply with the laws, rules, and regulations that govern it and with recognized compliance practices. All company employees must comply with this policy, the Records Retention Schedule and any litigation hold communications. Failure to do so may subject Freight Trust, its employees, and contract staff to serious civil and/or criminal liability. An employee's failure to comply with this policy may result in disciplinary sanctions, including suspension or termination. +Reporting Policy Violations Freight Trust is committed to enforcing this policy as it applies to all forms of records. The effectiveness of Freight Trust's efforts, however, depends largely on employees. If you feel that you or someone else may have violated this policy, you should report the incident immediately to your supervisor. + +If you are not comfortable bringing the matter up with your immediate supervisor, or do not believe the supervisor has dealt with the matter properly, you should raise the matter with the [Records Management Officer/manager at the next level above your direct supervisor]. If employees do not report inappropriate conduct, Freight Trust may not become aware of a possible violation of this policy and may not be able to take appropriate corrective action. No one will be subject to and Freight Trust prohibits, any form of discipline, reprisal, intimidation, or retaliation for reporting incidents of inappropriate conduct of any kind, pursuing any record destruction claim, or cooperating in related investigations. + + +## MANDATORY COMPLIANCE +It is important to remind all employees that retaliation of any kind, including for reporting any type of violation of a policy, is strictly prohibited. For more information on retaliation generally and how to prevent it, see Practice Note, Retaliation. + + +### Records Management Department and Records Management Officer + +The Records Management Department is responsible for identifying the documents that Freight Trust must or should retain, and determining, in collaboration with the Legal Department, the proper period of retention. It also arranges for the proper storage and retrieval of records, coordinating with outside vendors where appropriate. Additionally, the Records Management Department handles the destruction of records whose retention period has expired. + +Freight Trust has designated [EMPLOYEE NAME] as the Records Management Officer. The Records Management Officer is head of the Records Management Department and is responsible for: + +- Administering the document management program and helping department heads implement it and related best practices. +- Planning, developing, and prescribing document disposal policies, systems, standards, and procedures. +- Writing straightforward document management procedures to instruct employees on how to comply with this policy. +- Monitoring departmental compliance so that employees know how to follow the document management procedures and the Legal Department has confidence that Freight Trust's records are controlled. +- Ensuring that senior management is aware of their departments' document management responsibilities. + +Developing and implementing measures to ensure that the Legal Department knows what information Freight Trust has and where it is stored, that only authorized users have access to the information, and that Freight Trust keeps only the information it needs, thereby efficiently using space. + +- Establishing standards for filing and storage equipment and recordkeeping supplies. + +In cooperation with department heads, identifying essential records and establishing a disaster plan for each office and department to ensure maximum availability of Freight Trust's records in order to reestablish operations quickly and with minimal interruption and expense. + +- Developing procedures to ensure the permanent preservation of Freight Trust's historically valuable records. + +- Providing document management advice and assistance to all departments by preparing manuals of procedure and policy and by on-site consultation. + +- Determining the practicability of and, if appropriate, establishing a uniform filing system and a forms design and control system. + +Periodically reviewing the records retention schedules and administrative rules issued by the governments of [NAMES OF RELEVANT STATES AND COUNTRIES] to determine if Freight Trust's document management program and its Records Retention Schedule is in compliance with state [and foreign] regulations. + + +- Distributing to the various department heads information concerning state laws and administrative rules relating to corporate records. + +- Explaining to employees their duties relating to the document management program. + +- Ensuring that the maintenance, preservation, microfilming, computer disk storage, destruction, or other disposition of Freight Trust's records is carried out in accordance with this policy, the procedures of the document management program and the requirements of federal and state law. + +- Planning the timetable for the annual records destruction exercise and the annual records audit, including setting deadlines for responses from departmental staff. + +- Maintaining records on the volume of records destroyed under the Records Retention Schedule and the records stored electronically. + +- Evaluating the overall effectiveness of the document management program. + +* Reporting annually to the Legal Department [and] [OTHER DEPARTMENT NAME] on the implementation of the document management program in each of Freight Trust's departments. + +* Bringing to the attention of the Legal Department any noncompliance by department heads or other employees with this policy and Freight Trust's document management program. + + +## RECORDS MANAGEMENT DEPARTMENT AND RECORDS MANAGEMENT OFFICER + +For more information on the roles within the company that are responsible for implementing and managing the policy, see Practice Note, Drafting a Document Retention Policy: Define Employees' DRP Roles and Responsibilities. + +## How to Store and Destroy Records + + +Storage Freight Trust's records must be stored in a safe, secure, and accessible manner. Any documents and financial files that are essential to Freight Trust's business operations during an emergency must be duplicated and/or backed up at least once per week and maintained off site. + + +## STORAGE + +This clause reminds employees to back up files necessary for the company's business continuation procedures. Counsel should consider revising the clause to include any records protected by state or local law for the jurisdiction(s) where this policy will be used. Also consider indicating the off-site location where duplicate files must be sent if physical copies are to be stored in a separate location, such as a storage facility. + +Destruction Freight Trust's [Records Management Officer/OTHER OFFICER/MANAGER] is responsible for the continuing process of identifying the records that have met their required retention period and supervising their destruction. The destruction of confidential, financial, and personnel-related records must be conducted by shredding if possible. Non-confidential records may be destroyed by recycling. The destruction of electronic records must be coordinated with the IT Department [TITLE]. +The destruction of records must stop immediately upon notification from [the Legal Department] that a litigation hold is to begin because Freight Trust may be involved in a lawsuit or an official investigation (see next paragraph). Destruction may begin again once the Legal Department lifts the relevant litigation hold. + +=== Destruction + +The dcument management program and training procedures include instructions on how the Records Management Officer and other employees should destroy records. Once an employee destroys a record, he should document its destruction with the Records Management Officer, the Legal Department and other relevant personnel. The destruction of electronic records should be coordinated with the IT department to ensure that all copies of the electronic records are discarded, including copies residing on backup tapes, temporary files, additional servers, and all employees' email in-boxes and other electronic storage locations. + + +## Litigation Holds and Other Special Situations + +Freight Trust requires all employees to comply fully with its published records retention schedule and procedures as provided in this policy. All employees should note the following general exception to any stated destruction schedule: If you believe, or [the Legal Department] informs you, that Freight Trust records are relevant to current litigation, potential litigation (that is, a dispute that could result in litigation), government investigation, audit, or other event, you must preserve and not delete, dispose, destroy, or change those records, including emails, until [the Legal Department] determines those records are no longer needed. This exception is referred to as a litigation hold or legal hold, replaces any previously or subsequently established destruction schedule for those records. If you believe this exception may apply, or have any questions regarding whether it may possibly apply, please contact [the Legal Department]. diff --git a/INCIDENT_RESPONSE_PLAN.adoc b/INCIDENT_RESPONSE_PLAN.adoc new file mode 100644 index 0000000..de55ea7 --- /dev/null +++ b/INCIDENT_RESPONSE_PLAN.adoc @@ -0,0 +1,137 @@ += Service Level Objectives and Continuity +:idprefix: +:idseparator: - +:!example-caption: +:!table-caption: +:page-pagination: + + +== Incident Response Plan + +As part of our cybersecurity program, we have established a written incident response plan designed to promptly respond to, and recover from, any Cybersecurity Event materially affecting the confidentiality, integrity or availability of the Covered Entity’s Information Systems or the continuing functionality of any aspect of the Covered Entity’s business or operations. + +Such Incident Response plan shall address the following areas: + + +1. the goals of the incident response plan; +2. the definition of clear roles, responsibilities and levels of decision-making authority; +3. external and internal communications and information sharing; +4. identification of requirements for the remediation of any identified weaknesses in Information Systems and associated controls; +5. documentation and reporting regarding Cybersecurity Events and related incident response activities; and +6. the evaluation and revision as necessary of the incident response plan following a Cybersecurity Event. + + +== Internal Processes for Responding to a Cybersecurity Event + +[NOTE] +==== +This is a basic outline of the internal document system, please see the Operations Repository for a template +==== + +1. What type of incident is this? +Example: virus, worm, intrusion, abuse, damage. + +2. Is the equipment affected business critical? + +3. What data or property is threatened and how critical is it? + +4. What is the impact on the business should the attack succeed? Minimal, serious, or critical? + +5. Name of system being targeted, along with operating system, IP address, and location. Essentially any information about the origin of the attack. + +6. Is the incident real or perceived? + +7. Is the incident still in progress? + +8. Can the incident be quickly contained? + +9. Will the response alert the attacker and do we care? The name of the caller. Time of the call. Contact information about the caller. + +10. What equipment or persons were involved? How the incident was detected. When the event was first noticed that supported the idea that the incident occurred. + +11. If the issue IS or COULD BE real (versus perceived) and the business impact is serious or critical then HELPDESK will call the INCIDENT RESPONSE COORDINATOR {{ CENCOM }} + +<<<< +=== Incident Response Coordinator + +The IRC Contacts the following people to respond to issue: + +Technical Security Czar [Operations and Lifecycle] +Security Person On-Call [Helpdesk] +Senior Systems Admin [Internal Subnet, Intranet] +DevOps Czar [Engineering] +CENCOM Liason [Network Servers and Endpoints] + + + +=== Incident Response Team + + +This team gathers and reviews server logs gather and review firewall logs gathers and reviews intrusion detection logs gather and review SIEM logs gather and review endpoint logs gather and review email logs (if Phishing was involved) gather and review secure web gateway logs begins to interview witnesses and the incident victim to determine how the incident was caused. + +=== Operations Group + +Operations Group determines the nature of the attack (this might be different than the initial assessment suggests). Determine the attack point of origin. Determine the intent of the attack. Was the attack specifically directed at your organization to acquire specific information, or was it random? Identify the systems that have been compromised. Identify the files that have been accessed and determine the sensitivity of those files. Determine whether unauthorized hardware has been attached to the network or whether there are any signs of unauthorized access through the compromise of physical security controls. Examine key groups (domain administrators, administrators, and so on) for unauthorized entries. Search for security assessment or exploitation software. Cracking utilities are often found on compromised systems during evidence gathering. Look for unauthorized processes or applications currently running or set to run using the startup folders or registry entries. Search for gaps in, or the absence of, system logs. Review intrusion detection system logs for signs of intrusion, which systems might have been affected, methods of attack, time and length of attack, and the overall extent of potential damage. Examine other log files for unusual connections; security audit failures; unusual security audit successes; failed logon attempts; attempts to log on to default accounts; activity during nonworking hours; file, directory, and share permission changes; and elevated or changed user permissions. Compare systems to previously conducted file/system integrity checks. This enables you to identify additions, deletions, modifications, and permission and control modifications to the file system and registry. You can save a lot of time when responding to incidents if you identify exactly what has been compromised and what areas need to be recovered. Search for sensitive data, such as credit card numbers and employee or customer data, that might have been moved or hidden for future retrieval or modifications. You might also have to check systems for non-business data, illegal copies of software, and e-mail or other records that might assist in an investigation. If there is a possibility of violating privacy or other laws by searching on a system for investigative purposes, you should contact your legal department before you proceed. Match the performance of suspected systems against their baseline performance levels. This of course presupposes that baselines have been created and properly updated. + +=== Issue Categories + + +Categories of issues and move them into the highest applicable level of one of the following categories: *Category one* – A threat to the network *Category two* – A threat to sensitive data *Category three* – A threat to computer systems *Category four* – A disruption of services + +If Category one or two then INCIDENT RESPONSE COORDINATOR Contacts CXO CONTACT and MANAGEMENT CONTACT and adds them to the INCIDENT RESPONSE TEAM + +If Category three or four then INCIDENT RESPONSE COORDINATOR Contacts MANAGEMENT CONTACT and adds the to the INCIDENT RESPONSE TEAM + +If Category one or two then INCIDENT RESPONSE COORDINATOR Contacts Forensics, Legal and Insurance contacts (note that it is the judgement call of the INCIDENT RESPONSE TEAM if a Category three or four would require Legal and Insurance to be contacted): CYBER ORGANIZATION CONTACT CYBER INSURANCE CONTACT CYBER FORENSICS CONTACT + +If Category one or two, once Legal and Insurance have provided guidance the INCIDENT RESPONSE TEAM should contact the FBI CONTACT and POLICE CONTACT. + + +=== Primary InfoSec Team + +They do Evidence Preservation—make copies of logs, email, and other communication. Keep lists of witnesses. Keep evidence as long as necessary to complete prosecution and beyond in case of an appeal. + +If Category one or two, once FBI and POLICE have been contacted and provide guidance Segregateall hardware devices suspected of being compromised (if possible) from other business critical devices. Quarantineinstead of deleting. RestrictInternet traffic to only business critical servers and ports Disableremote access capability and wireless access points Follow direction of CYBER FORENSICE CONTACT, CYBER INSURANCE CONTACT and CYBER ORGANIZATION CONTACT Create and Execute Communication Plan Note: Try to avoid letting attackers know that you are aware of their activities. This can be difficult, because some essential responses might alert attackers. + +Compare the cost of taking the compromised and related systems offline against the risk of continuing operations. In the vast majority of cases, you should immediately take the system off the network. However, you might have service agreements in place that require keeping systems available even with the possibility of further damage occurring. Under these circumstances, you can choose to keep a system online with limited connectivity in order to gather additional evidence during an ongoing attack. + +In some cases, the damage and scope of an incident might be so extensive that you might have to take action that invokes the penalty clauses specified in your service level agreements. In any case, it is very important that the actions that you will take in the event of an incident are discussed in advance and outlined in this response plan so that immediate action can be taken when an attack occurs. + + +If Category three / four, team members will restore the affected system(s) to the uninfected state. They may do any or more of the following: Re-install the affected system(s) from scratch and restore data from backups if necessary. Preserve evidence before doing this. Make users change passwords if necessary Ensure the systems are fully patched Create and Execute Communication Plan + + +=== Post-Mortem Team + +Assess damage and cost—assess the damage to the organization and estimate both the damage cost and the cost of the containment efforts. Costs due to the loss of competitive edge from the release of proprietary or sensitive information Legal costs Labor costs to analyze the breaches, reinstall software, and recover data Costs relating to system downtime (for example, lost employee productivity, lost sales, replacement of hardware, software, and other property) Costs relating to repairing and possibly updating damaged or ineffective physical security measures (locks, walls, cages, and so on) Other consequential damages such as loss of reputation or customer trust + +INCIDENT RESPONSE TEAM recommends (documents) changes to prevent the occurrence from happening again. Upon management approval, the changes will be implemented. + +INCIDENT RESPONSE TEAM reviews response and update policies—plan and take preventative steps so the intrusion can’t happen again. Consider whether an additional policy could have prevented the intrusion. Consider whether a procedure or policy was not followed which allowed the intrusion, and then consider what could be changed to ensure that the procedure or policy is followed in the future. Was the incident response appropriate? How could it be improved? Was every appropriate party informed in a timely manner? Were the incident-response procedures detailed and did they cover the entire situation? How can they be improved? Have changes been made to prevent a re-infection? Have all systems been patched, systems locked down, passwords changed, anti-virus updated, email policies set, etc.? Have changes been made to prevent a new and similar infection? Should any security policies be updated? What lessons have been learned from this experience? Was the incident handled in a timely manner. + + +=== Point of Contact + +support@freight.zendesk.com + +Ops@freighttrust.com +Admin@Freighttrust.com + +sam@freighttrust.com +pavel@freighttrust.com + +Tel: 628 222 5915 +Fax: 818 457 5660 + + +ZENDESK TOLL FREE NUMBER +888 421 1904 + + +Alternative Systems of Contact +https://gitlab.com/fr8/ops/-/issues/1#note_359879063 +incoming+fr8-ops-19331724-issue-@incoming.gitlab.com + + +--- +https://www.dfs.ny.gov/docs/legal/regulations/adoptions/dfsrf500txt.pdf[NYDFS] diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..a74a610 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,36 @@ + + + +# Freight Trust Corporate Security Policy + +## Reporting a Security Bug + +If you think you have discovered a security issue in any of our products, +services or projects, we'd love to hear from you. We will take all security bugs +seriously and if confirmed upon investigation we will patch it within a +reasonable amount of time and release a public security bulletin discussing the +impact and credit the discoverer. + +There are two ways to report a security bug. The easiest is to email a +description of the flaw and any related information (e.g. reproduction steps, +version) to +[security at freighttrust dot org](mailto:security@freighttrust.com). + +The other way is to file a security bug in our +[Infrastructure Repostiory](https://github.com/freight-trust/infrastructure). Be +sure to set the “Security Level” to “Security issue”. + +### Corporate Procedures + +The process by which the Corporate Security Team handles security bugs is +documented further in our +[Defect Response page](https://ft-docs.netlify.app/corporate/defects/) on our +[Omnibus Documentation](https://ft-docs.netlify.app). + +### PKI & PGP + +[PKI & PGP Keys can be found at github/freight-trust/pki](https://github.com/freight-trust/pki) + +#### Points of Contact + +support@freight.zendesk.com admin@freighttrust.com security@freighttrust.com diff --git a/SOFTWARE_DISCLOSURE_DEFECTS.adoc b/SOFTWARE_DISCLOSURE_DEFECTS.adoc new file mode 100644 index 0000000..8debd29 --- /dev/null +++ b/SOFTWARE_DISCLOSURE_DEFECTS.adoc @@ -0,0 +1,80 @@ +:doctype: book + +description: Security and Operations Responsible Disclosure Statement. +// - END of page meta data + += Responsible Disclosure Policy + +At FreightTrust & Clearing, security is a priority. +But regardless of how much effort we put into system security, there may still be vulnerabilities present. +If you discover a vulnerability, we want to know about it so we can take steps to address it as quickly as possible. +We would like to ask you to help us better protect our clients and our systems. + + +== Defect Response + +If you think you have discovered a security issue in any of the Hyperledger projects, we'd love to hear from you. We will take all security bugs seriously and if confirmed upon investigation we will patch it within a reasonable amount of time and release a public security bulletin discussing the impact and credit the discoverer. + +=== Security Bug Handling Process + +[IMPORTANT] +==== +- Attempting to Extort or otherwise force monetary compensation is not the best way to receive a bug bounty. If the defect is legitmate we will provide compensation so long as any report includes a remediation solution only. +- We will NOT disclose to other parties, e.g. colleagues at your employer, unless you wish us to. +==== + +The process the Operations Security Team will follow when dealing with security bugs is detailed below: + +1. The person discovering the issue, the reporter, reports the vulnerability privately to + +`` +admin@freighttrust.com +ops@freighttrust.com +`` + + +2. Messages that do not relate to the reporting or managing of an undisclosed security vulnerability in our software are ignored and no further action is required. + +3. The project team sends an e-mail to the original reporter to acknowledge the report. + +4. The project team investigates report and either rejects it or accepts it. + +5. If the report is rejected, the project team writes to the reporter to explain why. + +6. If the report is accepted, the project team writes to the reporter to let them know it is accepted and that they are working on a fix. + +7. The project team requests a CVE number from security at hyperledger.org by sending an e-mail with the subject “CVE request for…” and providing a short (one line) description of the vulnerability. Guidance is available to determine if a report requires multiple CVEs or if multiple reports should be merged under a single CVE. + +8. The project team agrees the fix on their private list. + +9. The project team provides the reporter with a copy of the fix and a draft vulnerability announcement for comment. + +10. The project team agrees to the fix, the announcement and the release schedule with the reporter. For an example of an announcement see Tomcat's announcement of CVE-2008-2370. The level of detail to include in the report is a matter of judgement. Generally, reports should contain enough information to enable people to assess the risk associated with the vulnerability for their system and no more. Steps to reproduce the vulnerability are not normally included. + +11. The project team commits the fix. No reference should be made to the commit being related to a security vulnerability. + +12. The project team creates a release that includes the fix. + +13. The project team announces the release. The release announcement should be sent to the usual mailing lists (typically the project's user list, dev list, announce list and the Hyperledger announce list). + +14. The project team announces the vulnerability. The vulnerability announcement should be sent after the release announcement to the following destinations: + a. the same destinations as the release announcement + + b. the vulnerability reporter + + c. our github.com/freight-chain/forum or our disqus forums. + +=== Format +We utilize MITRE Corporations ATT&CK and CVE Process link:https://cveform.mitre.org/[CVE Form, Mitre.org] + +Submissions should be in the following format + +[source, markdown] +==== +[CVEID]:CVE-2017-5648 +[PRODUCT]:Hyperledger Besu +[VERSION]:1.3.8 +[PROBLEMTYPE]:Information Disclosure +[REFERENCES]:https://github.com/hyperledger/besu +[DESCRIPTION]: Description here +==== diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..106e07b --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,42 @@ + + + +# Support + +Welcome to the repository! The following links are a set of guidelines for +contributing to this repo and its packages. eThese are mostly guidelines, not +rules. Use your best judgement, and feel free to propose changes to this +document in a pull request. Contributions come in the form of code submissions, +writing documentation, raising issues, helping others in chat, etc. + +### Github Accounts + +Having a Github account is necessary for obtaining support including chat, +troubleshooting, and issue management. + +- If you want to raise an issue, you can do so + <<<<<<< HEAD + [on the github issue tab](https://github.com/${freight-trust}/${repository/{$ref}/issues). + +======= +[on the github issue tab](https://github.com/${freight-trust}/${repository/{$ref}/issues). + +> > > > > > > 2.0.0 + +### Useful support links + +- [Corporate Website](https://freighttrust.com) +- [Blockchain Network](https://github.com/freight-chain/network) +- [Omnibus Documentation](https://ft-docs.netlify.app) +- [Did you find a bug?](/.github/ISSUE_TEMPLATE/bug_report.md) +- [Feature Request](/.github/ISSUE_TEMPLATE/feature_request.md) +- [Contributing Guidelines](#CONTRIBUTING.md) + +[telegram]: https://t.me/freighttrust +[contributing guidelines]: CONTRIBUTING.md + +[support@freight.zendesk.com](mailto:support@freight.zendesk.com) + +#### Additional Support links + +[besu user documentation]: https://besu.hyperledger.org diff --git a/TERMS_OF_SERVICE.md b/TERMS_OF_SERVICE.md new file mode 100644 index 0000000..e5c04fb --- /dev/null +++ b/TERMS_OF_SERVICE.md @@ -0,0 +1,301 @@ +# TERMS OF USE + +- [TERMS OF USE](#terms-of-use) + - [AGREEMENT TO TERMS](#agreement-to-terms) + - [INTELLECTUAL PROPERTY RIGHTS](#intellectual-property-rights) + - [USER REPRESENTATIONS](#user-representations) + - [USER REGISTRATION](#user-registration) + - [FEES AND PAYMENT](#fees-and-payment) + - [FREE TRIAL](#free-trial) + - [CANCELLATION](#cancellation) + - [SOFTWARE](#software) + - [PROHIBITED ACTIVITIES](#prohibited-activities) + - [As a user of the Site, you agree not to:](#as-a-user-of-the-site--you-agree-not-to-) + - [USER GENERATED CONTRIBUTIONS](#user-generated-contributions) + - [CONTRIBUTION LICENSE](#contribution-license) + - [GUIDELINES FOR REVIEWS](#guidelines-for-reviews) + - [MOBILE APPLICATION LICENSE](#mobile-application-license) + - [Use License](#use-license) + - [Apple and Android Devices](#apple-and-android-devices) + - [SUBMISSIONS](#submissions) + - [THIRD-PARTY WEBSITES AND CONTENT](#third-party-websites-and-content) + - [U.S. GOVERNMENT RIGHTS](#us-government-rights) + - [SITE MANAGEMENT](#site-management) + - [PRIVACY POLICY](#privacy-policy) + - [DIGITAL MILLENNIUM COPYRIGHT ACT (DMCA) NOTICE AND POLICY](#digital-millennium-copyright-act--dmca--notice-and-policy) + - [Notifications](#notifications) + - [Counter Notification](#counter-notification) + - [MODIFICATIONS AND INTERRUPTIONS](#modifications-and-interruptions) + - [GOVERNING LAW](#governing-law) + - [DISPUTE RESOLUTION](#dispute-resolution) + - [Restrictions](#restrictions) + - [Exceptions to Informal Negotiations and Arbitration](#exceptions-to-informal-negotiations-and-arbitration) + - [CORRECTIONS](#corrections) + - [DISCLAIMER](#disclaimer) + - [LIMITATIONS OF LIABILITY](#limitations-of-liability) + - [INDEMNIFICATION](#indemnification) + - [USER DATA](#user-data) + - [ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES](#electronic-communications--transactions--and-signatures) + - [CALIFORNIA USERS AND RESIDENTS](#california-users-and-residents) + - [MISCELLANEOUS](#miscellaneous) + - [CONTACT US](#contact-us) + +Last updated July 01, 2020 + +### AGREEMENT TO TERMS + +These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FreightTrust and Clearing Corporation, doing business as Freight Trust ("Freight Trust", “we”, “us”, or “our”), concerning your access to and use of the https://freighttrust.com website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). You agree that by accessing the Site, you have read, understood, and agree to be bound by all of these Terms of Use, including the Omnibus Rulebook posted on the Site, which are incorporated into these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY. + +Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use at any time and for any reason. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. It is your responsibility to periodically review these Terms of Use to stay informed of updates. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted. + +The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable. + +The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA). + +The Site is intended for users who are at least 18 years old. Persons under the age of 18 are not permitted to use or register for the Site. + +### INTELLECTUAL PROPERTY RIGHTS + +Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission. + +Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks. + +### USER REPRESENTATIONS + +By using the Site, you represent and warrant that: (1) all registration information you submit will be true, accurate, current, and complete; (2) you will maintain the accuracy of such information and promptly update such registration information as necessary; (3) you have the legal capacity and you agree to comply with these Terms of Use; (4) you are not a minor in the jurisdiction in which you reside; (5) you will not access the Site through automated or non-human means, whether through a bot, script or otherwise; (6) you will not use the Site for any illegal or unauthorized purpose; and (7) your use of the Site will not violate any applicable law or regulation. + +If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof). + +### USER REGISTRATION + +You may be required to register with the Site. You agree to keep your password confidential and will be responsible for all use of your account and password. We reserve the right to remove, reclaim, or change a username you select if we determine, in our sole discretion, that such username is inappropriate, obscene, or otherwise objectionable. + +### FEES AND PAYMENT + +We accept the following forms of payment: + +- \$EDI Token +- \$USDC +- ACH +- Wire Transfer +- SWIFT +- USD Deposit +- Other Currencies ($ETH, $BTC, \$USDT) + +You may be required to purchase or pay a fee to access some of our services. You agree to provide current, complete, and accurate purchase and account information for all purchases made via the Site. You further agree to promptly update account and payment information, including email address, payment method, and payment card expiration date, so that we can complete your transactions and contact you as needed. We bill you through an online billing account for purchases made via the Site. Sales tax will be added to the price of purchases as deemed required by us. We may change prices at any time. All payments shall be in U.S. dollars. + +You agree to pay all charges or fees at the prices then in effect for your purchases, and you authorize us to charge your chosen payment provider for any such amounts upon making your purchase. If your purchase is subject to recurring charges, then you consent to our charging your payment method on a recurring basis without requiring your prior approval for each recurring charge, until you notify us of your cancellation. + +We reserve the right to correct any errors or mistakes in pricing, even if we have already requested or received payment. We also reserve the right to refuse any order placed through the Site. + +### FREE TRIAL + +We offer a 30-day free trial to new users who register with the Site. The account will be charged according to the user’s chosen subscription at the end of the free trial. + +### CANCELLATION + +All purchases are non-refundable. You can cancel your subscription at any time by contacting us using the contact information provided below. Your cancellation will take effect at the end of the current paid term. + +If you are unsatisfied with our services, please email us at admin@freighttrust.com or call us at (+1)628 221 5916. + +### SOFTWARE + +We may include software for use in connection with our services. If such software is accompanied by an end user license agreement (“EULA”), the terms of the EULA will govern your use of the software. If such software is not accompanied by a EULA, then we grant to you a non-exclusive, revocable, personal, and non-transferable license to use such software solely in connection with our services and in accordance with these Terms of Use. Any Software and any related documentation is provided “as is” without warranty of any kind, either express or implied, including, without limitation, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. You accept any and all risk arising out of use or performance of any Software. You may not reproduce or redistribute any software except in accordance with the EULA or these Terms of Use. + +### PROHIBITED ACTIVITIES + +You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us. + +#### As a user of the Site, you agree not to: + +1. Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us. +2. Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses. +3. Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein. +4. Engage in unauthorized framing of or linking to the Site. +5. Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords. +6. Make improper use of our support services or submit false reports of abuse or misconduct. +7. Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools. +8. Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site. +9. Attempt to impersonate another user or person or use the username of another user. +10. Sell or otherwise transfer your profile. +11. Use any information obtained from the Site in order to harass, abuse, or harm another person. +12. Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise. +13. Decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site. +14. Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site. +15. Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you. +16. Delete the copyright or other proprietary rights notice from any Content. +17. Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site. +18. Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code. +19. Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”). +20. Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software. +21. Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site. +22. Use the Site in a manner inconsistent with any applicable laws or regulations. +23. Use the Site to advertise or offer to sell goods and services. +24. Use a buying agent or purchasing agent to make purchases on the Site. +25. Anything that FreightTrust and Clearing Corporation deems undesirable +26. Malicious Attacks such as DDoS or Spamming Transactions +27. Attempting to Decompile or Exploit any Smart Contracts on-network or off network +28. Attempting to disrupt normal network operations +29. Anything that FreightTrust and Clearing Corporation has listed in its Network Rulebook + +### USER GENERATED CONTRIBUTIONS + +The Site may invite you to chat, contribute to, or participate in blogs, message boards, online forums, and other functionality, and may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated as non-confidential and non-proprietary. When you create or make available any Contributions, you thereby represent and warrant that: + +1. The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party. +2. You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use. +3. You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use. +4. Your Contributions are not false, inaccurate, or misleading. +5. Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation. +6. Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us). +7. Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone. +8. Your Contributions do not advocate the violent overthrow of any government or incite, encourage, or threaten physical harm against another. +9. Your Contributions do not violate any applicable law, regulation, or rule. +10. Your Contributions do not violate the privacy or publicity rights of any third party. +11. Your Contributions do not contain any material that solicits personal information from anyone under the age of 18 or exploits people under the age of 18 in a sexual or violent manner. +12. Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors. +13. Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap. +14. Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation. + +Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site. + +### CONTRIBUTION LICENSE + +By posting your Contributions to any part of the Site, you automatically grant, and you represent and warrant that you have the right to grant, to us an unrestricted, unlimited, irrevocable, perpetual, non-exclusive, transferable, royalty-free, fully-paid, worldwide right, and license to host, use, copy, reproduce, disclose, sell, resell, publish, broadcast, retitle, archive, store, cache, publicly perform, publicly display, reformat, translate, transmit, excerpt (in whole or in part), and distribute such Contributions (including, without limitation, your image and voice) for any purpose, commercial, advertising, or otherwise, and to prepare derivative works of, or incorporate into other works, such Contributions, and grant and authorize sublicenses of the foregoing. The use and distribution may occur in any media formats and through any media channels. + +This license will apply to any form, media, or technology now known or hereafter developed, and includes our use of your name, company name, and franchise name, as applicable, and any of the trademarks, service marks, trade names, logos, and personal and commercial images you provide. You waive all moral rights in your Contributions, and you warrant that moral rights have not otherwise been asserted in your Contributions. + +We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions. + +We have the right, in our sole and absolute discretion, (1) to edit, redact, or otherwise change any Contributions; (2) to re-categorize any Contributions to place them in more appropriate locations on the Site; and (3) to pre-screen or delete any Contributions at any time and for any reason, without notice. We have no obligation to monitor your Contributions. + +### GUIDELINES FOR REVIEWS + +We may provide you areas on the Site to leave reviews or ratings. When posting a review, you must comply with the following criteria: (1) you should have firsthand experience with the person/entity being reviewed; (2) your reviews should not contain offensive profanity, or abusive, racist, offensive, or hate language; (3) your reviews should not contain discriminatory references based on religion, race, gender, national origin, age, marital status, sexual orientation, or disability; (4) your reviews should not contain references to illegal activity; (5) you should not be affiliated with competitors if posting negative reviews; (6) you should not make any conclusions as to the legality of conduct; (7) you may not post any false or misleading statements; and (8) you may not organize a campaign encouraging others to post reviews, whether positive or negative. + +We may accept, reject, or remove reviews in our sole discretion. We have absolutely no obligation to screen reviews or to delete reviews, even if anyone considers reviews objectionable or inaccurate. Reviews are not endorsed by us, and do not necessarily represent our opinions or the views of any of our affiliates or partners. We do not assume liability for any review or for any claims, liabilities, or losses resulting from any review. By posting a review, you hereby grant to us a perpetual, non-exclusive, worldwide, royalty-free, fully-paid, assignable, and sublicensable right and license to reproduce, modify, translate, transmit by any means, display, perform, and/or distribute all content relating to reviews. + +### MOBILE APPLICATION LICENSE + +#### Use License + +If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application. + +### Apple and Android Devices + +The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof. + +### SUBMISSIONS + +You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions. + +### THIRD-PARTY WEBSITES AND CONTENT + +The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites. + +### U.S. GOVERNMENT RIGHTS + +Our services are “commercial items” as defined in Federal Acquisition Regulation (“FAR”) 2.101. If our services are acquired by or on behalf of any agency not within the Department of Defense (“DOD”), our services are subject to the terms of these Terms of Use in accordance with FAR 12.212 (for computer software) and FAR 12.211 (for technical data). If our services are acquired by or on behalf of any agency within the Department of Defense, our services are subject to the terms of these Terms of Use in accordance with Defense Federal Acquisition Regulation (“DFARS”) 227.7202‑3. In addition, DFARS 252.227‑7015 applies to technical data acquired by the DOD. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFARS, or other clause or provision that addresses government rights in computer software or technical data under these Terms of Use. + +### SITE MANAGEMENT + +We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site. + +### PRIVACY POLICY + +We care about data privacy and security. Please review our Privacy Policy: freighttrust.com/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States. + +### DIGITAL MILLENNIUM COPYRIGHT ACT (DMCA) NOTICE AND POLICY + +#### Notifications + +We respect the intellectual property rights of others. If you believe that any material available on or through the Site infringes upon any copyright you own or control, please immediately notify our Designated Copyright Agent using the contact information provided below (a “Notification”). A copy of your Notification will be sent to the person who posted or stored the material addressed in the Notification. Please be advised that pursuant to federal law you may be held liable for damages if you make material misrepresentations in a Notification. Thus, if you are not sure that material located on or linked to by the Site infringes your copyright, you should consider first contacting an attorney. + +All Notifications should meet the requirements of DMCA 17 U.S.C. § 512(c)(3) and include the following information: (1) A physical or electronic signature of a person authorized to act on behalf of the owner of an exclusive right that is allegedly infringed; (2) identification of the copyrighted work claimed to have been infringed, or, if multiple copyrighted works on the Site are covered by the Notification, a representative list of such works on the Site; (3) identification of the material that is claimed to be infringing or to be the subject of infringing activity and that is to be removed or access to which is to be disabled, and information reasonably sufficient to permit us to locate the material; (4) information reasonably sufficient to permit us to contact the complaining party, such as an address, telephone number, and, if available, an email address at which the complaining party may be contacted; (5) a statement that the complaining party has a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law; and (6) a statement that the information in the notification is accurate, and under penalty of perjury, that the complaining party is authorized to act on behalf of the owner of an exclusive right that is allegedly infringed upon. + +#### Counter Notification + +If you believe your own copyrighted material has been removed from the Site as a result of a mistake or misidentification, you may submit a written counter notification to [us/our Designated Copyright Agent] using the contact information provided below (a “Counter Notification”). To be an effective Counter Notification under the DMCA, your Counter Notification must include substantially the following: (1) identification of the material that has been removed or disabled and the location at which the material appeared before it was removed or disabled; (2) a statement that you consent to the jurisdiction of the Federal District Court in which your address is located, or if your address is outside the United States, for any judicial district in which we are located; (3) a statement that you will accept service of process from the party that filed the Notification or the party's agent; (4) your name, address, and telephone number; (5) a statement under penalty of perjury that you have a good faith belief that the material in question was removed or disabled as a result of a mistake or misidentification of the material to be removed or disabled; and (6) your physical or electronic signature. + +If you send us a valid, written Counter Notification meeting the requirements described above, we will restore your removed or disabled material, unless we first receive notice from the party filing the Notification informing us that such party has filed a court action to restrain you from engaging in infringing activity related to the material in question. Please note that if you materially misrepresent that the disabled or removed content was removed by mistake or misidentification, you may be liable for damages, including costs and attorney's fees. Filing a false Counter Notification constitutes perjury. + +Designated Copyright Agent +Copyright Agent +Attn: Copyright Agent +admin@freighttrust.com + +TERM AND TERMINATION + +These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION. + +If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress. + +### MODIFICATIONS AND INTERRUPTIONS + +We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site. + +We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith. + +### GOVERNING LAW + +These Terms of Use and your use of the Site are governed by and construed in accordance with the laws of the State of Delaware applicable to agreements made and to be entirely performed within the State of Delaware, without regard to its conflict of law principles. + +### DISPUTE RESOLUTION + +Informal Negotiations + +To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each a "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least sixty (60) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party. + +B### inding Arbitration + +Any dispute arising out of or in connection with this contract, including any question regarding its existence, validity, or termination, shall be referred to and finally resolved by the International Commercial Arbitration Court under the European Arbitration Chamber (Belgium, Brussels, Avenue Louise, 146) according to the Rules of this ICAC, which, as a result of referring to it, is considered as the part of this clause. The number of arbitrators shall be of our choosing. The seat, or legal place, of arbitration shall be of our choosing. The language to be used in the arbitral proceedings shall be of our choosing. The governing law of the contract shall be the substantive law of our choosing. + +### Restrictions + +The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons. + +#### Exceptions to Informal Negotiations and Arbitration + +The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court. + +### CORRECTIONS + +There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice. + +### DISCLAIMER + +THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE. + +### LIMITATIONS OF LIABILITY + +IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE THREE (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR \$25,000.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS. + +### INDEMNIFICATION + +You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) your Contributions; (2) use of the Site; (3) breach of these Terms of Use; (4) any breach of your representations and warranties set forth in these Terms of Use; (5) your violation of the rights of a third party, including but not limited to intellectual property rights; or (6) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it. + +### USER DATA + +We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data. + +### ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES + +Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means. + +### CALIFORNIA USERS AND RESIDENTS + +If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254. + +### MISCELLANEOUS + +These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use. + +See Omnibus Documentation for Additional Clauses. Any clauses may be added at any time without prior notice. + +### CONTACT US + +In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at: + +FreightTrust and Clearing Corporation +Phone: (+1)628 221 5916 +admin@freighttrust.com diff --git a/VERSIONING.md b/VERSIONING.md new file mode 100644 index 0000000..290084d --- /dev/null +++ b/VERSIONING.md @@ -0,0 +1,48 @@ + + + +# Versioning + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this +document are to be interpreted as described in +[BCP 14](https://tools.ietf.org/html/bcp14) +[RFC2119](https://tools.ietf.org/html/rfc2119) +[RFC8174](https://tools.ietf.org/html/rfc8174) when, and only when, they appear +in all capitals, as shown here. + +## Introduction + +This document is to describe how a project is to version its releases + +It also describes standardized tooling around manipulating the version + +## Semver + +A project MUST use Semantic Versioning [semver](https://semver.org). Build +metadata MAY NOT be used in a project. Build metadata SHOULD be ignored. + +A Basic summary of Semantic Versioning taken from: +[semver.org](https://semver.org) + +### Semver Types + +#### Regular + +^(0|[1-9]\d\\\\\\\\\\\*).(0|[1-9]\d\\\\\\\\\\\*).(0|[1-9]\d\\\\\\\\\\\*)(-(0|[1-9]\d\\\\\\\\\\\*|\d\\\\\\\\\\\*[a-zA-Z-][0-9a-za-z-])(.(0|[1-9]\d|\d\\\\\\\\\\\*[a-zA-Z-][0-9a-za-z-])))?(+[0-9a-zA-Z-]+(.[0-9a-zA-Z-]+)\\\\\\\\\\\\*)?\\\\\\\$ +^(0|[1-9]\d\\\\\\*).(0|[1-9]\d\\\\\\*).(0|[1-9]\d\\\\\\*)(-(0|[1-9]\d\\\\\\*|\d\\\\\\*[a-zA-Z-][0-9a-za-z-])(.(0|[1-9]\d|\d\\\\\\*[a-zA-Z-][0-9a-za-z-])))?(+[0-9a-zA-Z-]+(.[0-9a-zA-Z-]+)\\\\\\\*)?\$ + +#### LTS + +(?nx)^ (?0|[1-9]\d\\\\\\*). (?0|[1-9]\d\\\\\\*). (?0|[1-9]\d\\\\\\*) (? -(? +((0|[1-9]\d\\\\\\*|\d\\\\\\*[A-Z-a-z-][\da-za-z-]))(.(0|[1-9]\d|\d\\\\\\*[A-Za-z-][\da-za-z-])) +) )? (? +(?[\dA-Za-z-]+(.[\dA-Za-z-])) )?\$ + +### Summary: + +Given a version number MAJOR.MINOR.PATCH, increment the: + +MAJOR version when you make incompatible API changes, MINOR version when you add +functionality in a backwards-compatible manner, and PATCH version when you make +backwards-compatible bug fixes. Additional labels for pre-release and build +metadata are available as extensions to the MAJOR.MINOR.PATCH format. diff --git a/buidler.config.ts b/buidler.config.ts new file mode 100644 index 0000000..ed344f1 --- /dev/null +++ b/buidler.config.ts @@ -0,0 +1,93 @@ +import { config as dotenvConfig } from "dotenv"; +import { resolve } from "path"; +dotenvConfig({ path: resolve(__dirname, "./.env") }); + +import { BuidlerConfig, usePlugin } from "@nomiclabs/buidler/config"; +import { HDAccountsConfig } from "@nomiclabs/buidler/types"; +import "./tasks/accounts"; +import "./tasks/clean"; +import "./tasks/typechain"; + +usePlugin("@nomiclabs/buidler-waffle"); +usePlugin("solidity-coverage"); + +interface HDAccountsConfigExtended extends HDAccountsConfig { + url: string; +} + +/** + * @dev You must have a `.env` file. Follow the example in `.env.example`. + * @param {string} network The name of the testnet + */ +function createHDAccountConfig(network: string): HDAccountsConfigExtended { + if (!process.env.MNEMONIC) { + console.log("Please set your MNEMONIC in a .env file"); + process.exit(1); + } + + if (!process.env.INFURA_API_KEY) { + console.log("Please set your INFURA_API_KEY"); + process.exit(1); + } + + return { + initialIndex: 0, + mnemonic: process.env.MNEMONIC, + path: "m/44'/60'/0'/0", + url: `https://${network}.infura.io/v3/${process.env.INFURA_API_KEY}`, + }; +} + +const config: BuidlerConfig = { + defaultNetwork: "buidlerevm", + mocha: { + delay: true, + }, + networks: { + buidlerevm: { + chainId: 31337, + }, + coverage: { + url: "http://127.0.0.1:8555", + }, + goerli: { + ...createHDAccountConfig("goerli"), + chainId: 5, + }, + kovan: { + ...createHDAccountConfig("kovan"), + chainId: 42, + }, + rinkeby: { + ...createHDAccountConfig("rinkeby"), + chainId: 4, + }, + ropsten: { + ...createHDAccountConfig("ropsten"), + chainId: 3, + }, + }, + paths: { + artifacts: "./artifacts", + cache: "./cache", + coverage: "./coverage", + coverageJson: "./coverage.json", + root: "./", + sources: "./contracts", + tests: "./test", + }, + solc: { + /* https://buidler.dev/buidler-evm/#solidity-optimizer-support */ + optimizer: { + enabled: false, + runs: 200, + }, + version: "0.6.10", + }, + typechain: { + outDir: "typechain", + target: "ethers-v5", + }, +}; + +export default config; diff --git a/contracts/ConvertLib.sol b/contracts/ConvertLib.sol new file mode 100644 index 0000000..b97c88d --- /dev/null +++ b/contracts/ConvertLib.sol @@ -0,0 +1,8 @@ +pragma solidity ^0.4.4; + +library ConvertLib{ + function convert(uint amount,uint conversionRate) returns (uint convertedAmount) + { + return amount * conversionRate; + } +} diff --git a/contracts/Greeter.sol b/contracts/Greeter.sol new file mode 100644 index 0000000..6377e6d --- /dev/null +++ b/contracts/Greeter.sol @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: MIT */ +pragma solidity ^0.6.10; + +import "@nomiclabs/buidler/console.sol"; + +contract Greeter { + string public greeting; + + constructor(string memory _greeting) public { + console.log("Deploying a Greeter with greeting:", _greeting); + greeting = _greeting; + } + + function greet() public view returns (string memory) { + return greeting; + } + + function setGreeting(string memory _greeting) public { + console.log("Changing greeting from '%s' to '%s'", greeting, _greeting); + greeting = _greeting; + } +} diff --git a/contracts/JEDToken.sol b/contracts/JEDToken.sol new file mode 100644 index 0000000..b7f1958 --- /dev/null +++ b/contracts/JEDToken.sol @@ -0,0 +1,239 @@ +/*SPDX-License-Identifier: MPL-2.0 +SPDXVersion: SPDX-2.2 +SPDX-FileCopyrightText: Copyright 2020 FreightTrust and Clearing Corporation +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/.*/ + +pragma solidity >=0.4.22 <0.6.0;; + +import "./RelayStake.sol"; + +contract JoinedPoolToken{ + function pause() {} + function unpause() {} + function setHouseCut(uint house_cut) {} + function setHouseCutTie(uint house_cut_tie) {} + function setBountyPercent(uint bounty_percent) {} + function withdrawTreasury() {} + function setBufferTime(uint time) {} + function setTimeAdd(uint time) {} +} + + /* @dev - ERC Interface Token, implements all ERC20 */ +contract JEDIToken{ + + /* Name and ticker information */ + string public constant name = "JEDIToken"; + string public constant symbol = "JEDI"; + uint8 public constant decimals = 2; + + /* Keeps track of where token holders currently have their votes allocated. */ + + struct Vote{ + address to; + uint votes; + } + + /* + * @dev - The Amounts each user/agent holds + */ + + mapping(address => uint) balances; + + /* + *Amounts approved for spending by the owner account + */ + + mapping(address => mapping(address => uint)) allowed; + + /* + * Keeps track of how many votes each address receives for 'privileged' status + */ + + mapping(address => uint) votes; + + /* + * Maps a voter to the address they have already voted on, as well as how many votes they have sent + */ + + mapping(address => Vote) current_votes; + /* + * @dev - The Address of the 'privileged 'account that can interact with the `RelaySwapPool` contract + */ + address public privileged; + + /* + * RelaySwapPool instance along with the address + */ + + RelaySwapPool JEDIContract; /* @dev/@user - */ + address public JEDIAddr; + + uint totalSupply = 1000; + + event Transfer(address indexed _from, address indexed _to, uint _value); + + event Approval(address indexed _owner, address indexed _spender, uint _value); + +/* + * @dev - Constructor + */ + function JEDIToken(){ + privileged = msg.sender; + balances[msg.sender] = totalSupply; + JEDIContract = new RelaySwapPool(JEDIAddr); + + } + + modifier onlyPrivileged(){ + require(msg.sender == privileged); + _; + } + +/* + * Returns the balance of the address passed in + */ + + function balanceOf(address _address) constant returns(uint){ + return balances[_address]; + } + + /* + * Returns the amount allocated to the spender by the owner's account + */ + + function allowance(address _owner, address _spender) constant returns(uint){ + return allowed[_owner][_spender]; + } + /* + * Transfers tokens from the owner's account to the address provided + */ + function transfer(address _to, uint _amount) returns(bool success){ + require(balances[msg.sender] >= _amount); + require(_amount > 0); + require(balances[_to] + _amount > balances[_to]); + balances[msg.sender] -= _amount; + balances[_to] += _amount; + Transfer(msg.sender, _to, _amount); + return true; + } + + /* + * @dev - Use allowed/allocated funds to transfer from on account to another + */ + + function transferFrom(address _from, address _to, uint _amount) returns (bool success){ + require(balances[_from] >= _amount); + require(_amount > 0); + require(balances[_to] + _amount > balances[_to]); + require(allowed[_from][msg.sender] >= _amount); + balances[_from] -= _amount; + allowed[_from][msg.sender] -= _amount; + balances[_to] += _amount; + Transfer(_from, _to, _amount); + return true; + } + + function approve(address _spender, uint _amount) returns(bool success){ + allowed[msg.sender][_spender] = _amount; + Approval(msg.sender, _spender, _amount); + return true; + } + +/* + * Allocates your portion of the vote to the given address + */ + function votePrivilegedAddr(address _choice) returns(bool success){ + require(balances[msg.sender] > 0); + uint to_allocate = balances[msg.sender]; + /* + //Remove any previous votes the sender has created + */ + uint to_remove = current_votes[msg.sender].votes; + if(to_remove != 0){ + address remove_from = current_votes[msg.sender].to; + votes[remove_from] -= to_remove; + } + /* + * @dev - Add the new votes to the submitted choice + */ + votes[_choice] += to_allocate; + current_votes[msg.sender] = Vote({ + to: _choice, + votes: to_allocate + }) + + + /* + * Update privileged address, if necessary + */ + + if(votes[_privileged] <= votes[_choice]){ + _privileged = _choice; + } + + return true; + + } + + /* + * Burns the number of tokens specified , it THEN + * --> sends that proportion of the totalSupply from the treasury + */ + + function claim(uint tokens) returns(bool success){ + require(balances[msg.sender] >= tokens); + require(totalSupply >= tokens); + uint to_transfer = this.balance * tokens / totalSupply; + balances[msg.sender] -= tokens; + totalSupply -= tokens; + msg.sender.transfer(to_transfer); + return true; + } + + /* + * @dev - !! Privileged functions !! + */ + function pauseGame() onlyPrivileged returns(bool success){ + JEDIContract.pause(); + return true; + } + + function unpauseGame() onlyPrivileged returns(bool success){ + JEDIContract.unpause(); + return true; + } + + function setHouseCut(uint house_cut) returns(bool success){ + JEDIContract.setHouseCut(house_cut); + return true; + } + + function setHouseCutTie(uint house_cut_tie) returns(bool success){ + JEDIContract.setHouseCutTie(house_cut_tie); + return true; + } + + function withdrawTreasury() returns(bool success){ + JEDIContract.withdrawTreasury(); + return true; + } + + function setBufferTime(uint time) returns(bool success){ + JEDIContract.setBufferTime(time); + return true; + } + + function setTimeAdd(uint time) returns(bool success){ + JEDIContract.setTimeAdd(time); + return true; + } + + function setBountyPercent(uint percent) returns(bool success){ + JEDIContact.setBountyPercent(percent); + return true; + } + + +} diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol new file mode 100644 index 0000000..9209c91 --- /dev/null +++ b/contracts/Migrations.sol @@ -0,0 +1,29 @@ +/*SPDX-License-Identifier: MPL-2.0 +SPDXVersion: SPDX-2.2 +SPDX-FileCopyrightText: Copyright 2020 FreightTrust and Clearing Corporation +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/.*/ +pragma solidity >=0.4.22 <0.6.0; + +contract Migrations { + address public owner; + uint public last_completed_migration; + + modifier restricted() { + if (msg.sender == owner) _; + } + + function Migrations() { + owner = msg.sender; + } + + function setCompleted(uint completed) restricted { + last_completed_migration = completed; + } + + function upgrade(address new_address) restricted { + Migrations upgraded = Migrations(new_address); + upgraded.setCompleted(last_completed_migration); + } +} diff --git a/contracts/README.md b/contracts/README.md new file mode 100644 index 0000000..d6cc928 --- /dev/null +++ b/contracts/README.md @@ -0,0 +1,84 @@ +# Continuous Oversight & Protocol DevOps + + +- [Continuous Oversight & Protocol DevOps](#continuous-oversight---protocol-devops) + * [Solidity Conventions](#solidity-conventions) + * [Security](#security) + * [Smart Contract Disclaimer & DevOps](#smart-contract-disclaimer---devops) + - [Fail Safe Mechanism](#fail-safe-mechanism) + - [Monitoring](#monitoring) + * [Active Monitoring](#active-monitoring) + + + +> Note: Read our IRP, Defects, and other Disclaimers here: [Freight Trust Omnibus Documentation](https://ft-docs.netlify.app/operations/irp/) + + +## Solidity Conventions + + +We use leading underscores and mark `struct`s to make it clear to the user that its contents and layout are not part of the API. + +pragma => 0.4.22> <=5.90 + +Ideally = 0.5.11=> <=0.7.0 + +## Security + +See [Security](./.github/SECURITY.md) + +support@freight.zendesk.com + +Please Read our SOFTWARE DEFECTS, INCIDENT RESPONSE PLAN, and [SMART CONTRACT PRACTICES](https://ft-docs.netlify.app/blockchain/smart-contract-dev/) + +## Smart Contract Disclaimer & DevOps + +#### Fail Safe Mechanism + +Smart contracts may not include appropriate or sufficient backup / failover mechanisms in case something goes awry. + +Smart contracts may depend on other systems to fulfill contract terms. These other systems may have vulnerabilities that could prevent the smart contract from functioning as intended. + +Some smart contract platforms may be missing critical system safeguards and customer protections. + +Where smart contracts are linked to a blockchain, forks in the chain could create operational problems. + +In case of an operational failure, recourse may be limited or non-existent — complete loss of a virtual asset is possible. + +Please read our [DISCLAIMERS](./DISCLAIMERS.md) && [SOFTWARE DEFECTS](./SOFTWARE_DEFECTS.md) + + +#### Monitoring + +** We monitor ** + +* Governance. +Smart contracts may require attention, action, and possible revision subject to appropriate governance and liability mechanisms. + +* Application State +Low Level Monotiroing of Deployed Contracts + +* Suspicous Activity +Failsafe mechanism to return to us in case of attack or error + + +##### Active Monitoring + +Smart Contract Monitoring: +Actively monitor one (or more) Ethereum smart contracts and user accounts (or any combination) watching for odd or “known-dangerous” transactional patterns. Report to anomalies to a list of email, SMS, web site, or individuals whenever something of interest happens. +End Users: Smart contract developers, smart contract participants (i.e. token holders) +Notes: “Weird” things include recursive attacks, violations of invariants (token balances to ether balance), largest purchases, most active trader accounts, etc.; Could potentially spawn an “insured” smart contract industry expectation. +Smart Contract Reporting: + +“Quarterly” reports may be available. On demand reports generated for margin accounts, activity (report on token holders), individual ether holdings and transaction histories (i.e. bank statements) on a per-account, per-contract-group, by industry, or system wide. +End Users: Smart contract developers, smart contract participants (i.e. token holders), economists, regulators. + +Please see our [DOCUMENT RETENTION POLICY](./DOCUMENT_RETENTION_POLICY.md) + +*NOTE*: Allows for self-reporting on business processes, expenditures, and revenue from outside an organization—​no need to wait for company reports; marketing efforts might engender an expectation that every smart contract’s accounting is fully transparent. +Auditing Support: + +Provide data and transactional information to third parties not associated with the development team of a smart contract system. Interesting to potential investors, industry analysts, auditors and/or regulators. + +End Users: regulators, auditors, potential investors +*NOTE*: Fully parsed data makes for much easier auditing of smart contracts, could expose non-delivery of promised behavior. \ No newline at end of file diff --git a/contracts/RelaySwapPool.sol b/contracts/RelaySwapPool.sol new file mode 100644 index 0000000..d491d08 --- /dev/null +++ b/contracts/RelaySwapPool.sol @@ -0,0 +1,580 @@ +/*SPDX-License-Identifier: MPL-2.0 +SPDXVersion: SPDX-2.2 +SPDX-FileCopyrightText: Copyright 2020 FreightTrust and Clearing Corporation +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/.*/ + +pragma solidity >=0.4.22 <0.6.0; + +contract RelaySwapPool{ + + + /* + * TODO - UTILIZE OPENZEPPELIN, FOR NOW USING OWN SAFE MATH LIBRARY: + */ + function mul(uint256 a, uint256 b) internal constant returns (uint256) { + uint256 c = a * b; + assert(a == 0 || c / a == b); + return c; + } + + function div(uint256 a, uint256 b) internal constant returns (uint256) { + /* assert(b > 0); // Solidity automatically throws when dividing by 0 */ + uint256 c = a / b; + /* assert(a == b * c + a % b); // There is no case in which this doesn't hold */ + return c; + } + + function sub(uint256 a, uint256 b) internal constant returns (uint256) { + assert(b <= a); + return a - b; + } + + function add(uint256 a, uint256 b) internal constant returns (uint256) { + uint256 c = a + b; + assert(c >= a); + return c; + } + + /* + * @DEV -- STRUCTS: + */ + + /* + * Allows for a mapping between a user's address, and the amounts they have + * contributed to both sides of the game + */ + + struct BackingAmt{ + uint amtA; + uint amtB; + } + + //Represents a single Game period */ + struct Game{ + //For access and Ether withdrawal from previous games */ + uint gameId; + //Keeps track of every backer for this game */ + mapping(address => BackingAmt) backers; + + uint startTime; + uint endTime; + + //Keeps track of the overall amounts sent to A and B */ + //Remains constant after a game is finished */ + uint totalInA; + uint totalInB; + + //Keeps track of the total Ether the game holds. Changes based on */ + //withdrawals after a game. Is calculated post-game */ + uint totalInGame; + + //0 - In progress, 1 - A won, 2 - B won, 3 - Tie */ + uint8 winner; + + //Keeps track of this game's house cut and bounty percentages, so that */ + //In the event of a vote to change any of these, they remain the same */ + //for the current game. */ + uint current_house_cut; + uint current_house_cut_tie; + uint current_bounty; + } + + /* + * CONTRACT VARIABLES: + */ + + //The current running game's id */ + uint curGameId; + //Mapping of all gameIds to their respective games */ + mapping(uint => Game) games; + //privileged address - allows the token contract to interact */ + address public privileged; /*TODO push token addr here*/ + + //Amount of Ether taken from house edge and not withdrawn from the contract */ + uint public treasury; + + bool public paused; + + uint public gameDur; + + //The amount of time during which the game time will be extended if a bet is placed */ + //within this amount of the endTime of the game */ + uint public bufferTime; + + //If we need to extend the game, we add this amount */ + uint public timeAdd; + + uint public house_cut_percent; + uint public house_cut_percent_tie; + + //Percent of the house_cut received by anyone who calls startNewGame when */ + //there is no current running game */ + uint public startgame_bounty_percent; + + //Defined so no magic constants are used */ + uint8 public constant IN_PROGRESS = 0; + uint8 public constant SIDE_A = 1; + uint8 public constant SIDE_B = 2; + uint8 public constant TIE = 3; + + + //Constructor + function RelaySwapPool(){ + privileged = msg.sender; + paused = false; + gameDur = 1 days; + games[0] = Game({ + gameId:0, + startTime:now, + endTime: add(now, gameDur), + totalInA:0, + totalInB:0, + totalInGame:0, + winner:IN_PROGRESS, + current_house_cut:20, + current_house_cut_tie:10, + current_bounty:100 + }); + bufferTime = 1 minutes; + timeAdd = 5 minutes; + curGameId = 0; + house_cut_percent = 20; /* ENV_DEFAULT_CUT=5% */ + house_cut_percent_tie = 10; /* ENV_DEFAULT_PERCENT_TIE=10% */ + startgame_bounty_percent = 100; /* ENV_DEFAULT_BOUNTY_PERCENT=1% */ + } + + /* + * @dev - SANITY AND MODIFIERS: + */ + + /* Throws if there is not an active game */ + modifier activeGameExists(){ + require(now <= games[curGameId].endTime); + _; + } + + /* Throws if there is an active game */ + modifier noActiveGameExists(){ + require(now > games[curGameId].endTime); + _; + } + + /* Throws if the gameId provided pertains to a game in session */ + modifier notRunning(uint gameId){ + require(now > games[gameId].endTime); + _; + } + + modifier validSideChoice(uint8 choice){ + require(choice == SIDE_A || choice == SIDE_B); + _; + } + + modifier notPaused(){ + require(paused == false); + _; + } + + modifier onlyPrivileged(){ + require(msg.sender == privileged); + _; + } + + /* + * EVENTS: + */ + + /* Event displays a user backing a side */ + event LogBack(address sender, string choice, uint value); + + /* Event displays amounts added to the treasury */ + event HouseCut(uint cut_amount, uint cut_percent, uint treasury_amt); + + /* Event displays the start of a new game */ + event NewGame(uint indexed startTime, uint indexed endTime); + + /* Event displays a payment to a winner */ + event PaidOut(uint amt_paid, uint indexed gameId, address _to); + + /* + * Functions for privileged address: + */ + function pause() onlyPrivileged { + paused = true; + } + + function unpause() onlyPrivileged { + paused = false; + } + + function newPrivileged(address new_privileged_address) onlyPrivileged { + privileged = new_privileged_address; + } + + function setHouseCut(uint house_cut) onlyPrivileged { + house_cut_percent = house_cut; + } + + function setHouseCutTie(uint house_cut_tie) onlyPrivileged { + house_cut_percent_tie = house_cut_tie; + } + + function setBountyPercent(uint bounty_percent) onlyPrivileged { + startgame_bounty_percent = bounty_percent; + } + + /* Used by the token contract to withdraw treasury */ + function withdrawTreasury() onlyPrivileged{ + uint temp = treasury; + treasury = 0; + msg.sender.transfer(temp); + } + + function setBufferTime(uint time) onlyPrivileged{ + bufferTime = time; + } + + function setTimeAdd(uint time) onlyPrivileged{ + timeAdd = time; + } + + /*CORE LOGIC - PLAYER LOGIC + * FOLLOWING ENABLES A PLAYER TO 'BACK A SIDE': SIDE_A OR SIDE_B BY CALLING THIS FUNCTION + * CALL THIS FUNCTION AND PASSING IN ``AN INTEGER`` INDICATING THEIR PREFERENCE, "SIDE" + * ACCEPTED INTEGERS: ONE (1) __OR__ TWO (2). 'A' == (1)ONE ; 'B' == (2)TWO + * @dev */ + + function back(uint8 choice) + activeGameExists + validSideChoice(choice) + notPaused + payable + returns(bool success) + { + if(choice == SIDE_A){ + + /* + * User backs side A by sending 1 to the function + * If the current game will end soon, we want to extend the game to prevent a miner + * from submitting the final bet + */ + if(games[curGameId].endTime - bufferTime < now){ + games[curGameId].endTime = add(games[curGameId].endTime, timeAdd); + } + games[curGameId].totalInA = add(games[curGameId].totalInA, msg.value); + games[curGameId].backers[msg.sender].amtA = + add(games[curGameId].backers[msg.sender].amtA, msg.value); + LogBack(msg.sender, "A", msg.value); + return true; + } else if (choice == SIDE_B){ + + /* + * User backs side B by sending 2 to the function + * If the current game will end soon, we want to extend the game to prevent a miner + * from submitting the final bet + */ + if(games[curGameId].endTime - bufferTime < now){ + games[curGameId].endTime = add(games[curGameId].endTime, timeAdd); + } + games[curGameId].totalInB = add(games[curGameId].totalInB, msg.value); + games[curGameId].backers[msg.sender].amtB = + add(games[curGameId].backers[msg.sender].amtB, msg.value); + LogBack(msg.sender, "B", msg.value); + return true; + } else { + + /* @dev -- No choice, or an invalid choice was made */ + /* !!! WARNING - This should NEVER be accessed, _because_ of the `validSideChoice` modifier */ + return false; + } + } + + /* + * Create a new game if there is no game running + * The person who calls this function will receive a bounty equal to a portion + * of the house cut from this game as a reward + */ + + function startGame() + noActiveGameExists + notPaused + returns(bool success) + { + + //To save on gas, if the previous game had no ether in it, we simply + //extend the endTime and return. Unfortunately in this case there is no + //bounty for the sender but the gas cost is also low + if(games[curGameId].totalInA == 0 && games[curGameId].totalInB == 0){ + games[curGameId].endTime = add(games[curGameId].endTime, gameDur); + return true; + } else { + //Calculating the total Ether in this game + games[curGameId].totalInGame = + add(games[curGameId].totalInA, games[curGameId].totalInB); + } + + //Decide the winner based on amounts in A and B + if(games[curGameId].totalInA < games[curGameId].totalInB){ + games[curGameId].winner = SIDE_A; + } else if (games[curGameId].totalInB < games[curGameId].totalInA){ + games[curGameId].winner = SIDE_B; + } else { + games[curGameId].winner = TIE; + } + + /* If either side didn't have any bets placed, we want to give refunds to anyone that bet + * So, we create a new game without taking a house cut + */ + if(games[curGameId].totalInA == 0 || games[curGameId].totalInB == 0){ + curGameId = add(curGameId, 1); + games[curGameId] = Game({ + startTime: now, + endTime: add(now, gameDur), + gameId: curGameId, + totalInA: 0, + totalInB: 0, + totalInGame: 0, + winner: IN_PROGRESS, + current_house_cut:house_cut_percent, + current_house_cut_tie:house_cut_percent_tie, + current_bounty:startgame_bounty_percent + }); + + NewGame(games[curGameId].startTime, games[curGameId].endTime); + + return true; + } + + uint house_cut = 0; + uint bounty = 0; + + /* @dev NOTE+ House cut is different if the game is a tie */ + /* @dev NOTE+ Using SafeMath reduces readability in this case - but the house cut should never overflow */ + if(games[curGameId].winner == TIE){ + house_cut += div(games[curGameId].totalInGame, games[curGameId].current_house_cut_tie); + } else { + house_cut += div(games[curGameId].totalInGame, games[curGameId].current_house_cut); + } + + games[curGameId].totalInGame = sub(games[curGameId].totalInGame, house_cut); + bounty = add(bounty, (house_cut * games[curGameId].current_bounty) / 100); + house_cut = sub(house_cut, bounty); + treasury = add(treasury, house_cut); + + /* @dev PROCESS@ Now increment 'curGameId' and create a new game */ + curGameId = add(curGameId, 1); + games[curGameId] = Game({ + startTime: now, + endTime: add(now, gameDur), + gameId: curGameId, + totalInA: 0, + totalInB: 0, + totalInGame: 0, + winner: IN_PROGRESS, + current_house_cut:house_cut_percent, + current_house_cut_tie:house_cut_percent_tie, + current_bounty:startgame_bounty_percent + }); + + /* @dev ACTION>> Attempt to send the person who called this function the bounty *// + msg.sender.transfer(bounty); + + NewGame(games[curGameId].startTime, games[curGameId].endTime); + + return true; + + } + + /* + * Once a game is complete, winnings can be withdrawn. This will fail + * if the game is still running or if there is not a current game running, + * to prevent withdrawals from the previous game if the startGame function + * has not been called + * gameId: The id of the game to withdraw from + */ + function withdrawWinnings(uint gameId) + notRunning(gameId) + activeGameExists + notPaused + returns (bool success) + { + /* ?IF: side A won */ + uint amount_to_withdraw = 0; + if(games[gameId].winner == SIDE_A){ + /* ?IF: no one submitted a bet to the other side, issue a refund */ + if(games[gameId].totalInA == 0 + && games[gameId].backers[msg.sender].amtB != 0){ + + amount_to_withdraw = games[gameId].backers[msg.sender].amtB; + games[gameId].totalInGame = + sub(games[gameId].totalInGame, amount_to_withdraw); + delete games[gameId].backers[msg.sender]; + msg.sender.transfer(amount_to_withdraw); + return true; + } + + /* ?IF: CHECK^ msg.sender did not contribute to side A, or has already withdrawn */ + if(games[gameId].backers[msg.sender].amtA == 0){ + return false; + } + + amount_to_withdraw = + add(amount_to_withdraw, games[gameId].backers[msg.sender].amtA); + + amount_to_withdraw += ((games[gameId].backers[msg.sender].amtA + * games[gameId].totalInB) / games[gameId].totalInA); + + /* @dev -- THIS TAKES THE `HOUSE CUT` IT DOES NOT ADD TO TREASURY! (this is done in the startGame function) */ + + amount_to_withdraw -= div(amount_to_withdraw, games[gameId].current_house_cut); + + /* @dev -- CHECK^ Check that the game has at least 'amount_to_withdraw' in the game: */ + if(games[gameId].totalInGame < amount_to_withdraw){ + return false; + } + + delete games[gameId].backers[msg.sender]; + games[gameId].totalInGame = + sub(games[gameId].totalInGame, amount_to_withdraw); + msg.sender.transfer(amount_to_withdraw); + PaidOut(amount_to_withdraw, gameId, msg.sender); + + } else if (games[gameId].winner == SIDE_B){ + /* @dev -- ACTION>> If no one submitted a bet to the other side, issue a refund */ + if(games[gameId].totalInB == 0 + && games[gameId].backers[msg.sender].amtA != 0){ + + amount_to_withdraw = games[gameId].backers[msg.sender].amtA; + games[gameId].totalInGame = + sub(games[gameId].totalInGame, amount_to_withdraw); + delete games[gameId].backers[msg.sender]; + msg.sender.transfer(amount_to_withdraw); + return true; + } + + /* */ + + if(games[gameId].totalInGame < amount_to_withdraw){ + return false; + } + + delete games[gameId].backers[msg.sender]; + games[gameId].totalInGame = + sub(games[gameId].totalInGame, amount_to_withdraw); + msg.sender.transfer(amount_to_withdraw); + PaidOut(amount_to_withdraw, gameId, msg.sender); + } else { + + /* GAME ENDED IN A __TIE__. (I.E. 0=0) + * @dev DISALLOW - withdrawal if the user has not backed a side, or has already withdrawn */ + if(games[gameId].backers[msg.sender].amtA == 0 + && games[gameId].backers[msg.sender].amtB == 0){ + return false; + } + + amount_to_withdraw = + add(amount_to_withdraw, games[gameId].backers[msg.sender].amtA); + amount_to_withdraw = + add(amount_to_withdraw, games[gameId].backers[msg.sender].amtB); + + /* + * @dev ACTION>> Take out the house cut but do not add to treasury (this is done in the startGame function) + */ + + amount_to_withdraw -= div(amount_to_withdraw, games[gameId].current_house_cut_tie); + + if(games[gameId].totalInGame < amount_to_withdraw){ + return false; + } + + delete games[gameId].backers[msg.sender]; + games[gameId].totalInGame = + sub(games[gameId].totalInGame, amount_to_withdraw); + msg.sender.transfer(amount_to_withdraw); + PaidOut(amount_to_withdraw, gameId, msg.sender); + } + return true; + } + + /* + * @dev -- TODO: GET methods + * @NOTE - POSTMAN API CONFIGURATION - UNISWAPV2 API REFERENCE NEEDS TO BE DONE , OVERLAP AS MUCH AS POSSIBLE. + */ + function isGameRunning(uint gameId) constant returns(bool){ + return now <= games[gameId].endTime; + } + + function getTotalInGame(uint gameId) constant returns(uint){ + return add(games[gameId].totalInA, games[gameId].totalInB); + } + + function getTotalInA(uint gameId) constant returns(uint){ + return games[gameId].totalInA; + } + + function getTotalInB(uint gameId) constant returns(uint){ + return games[gameId].totalInB; + } + + function getMyAmtInA(uint gameId) constant returns(uint){ + return games[gameId].backers[msg.sender].amtA; + } + + function getMyAmtInB(uint gameId) constant returns(uint){ + return games[gameId].backers[msg.sender].amtB; + } + + function getCurGameId() constant returns(uint){ + return curGameId; + } + + function getGameHouseCut(uint gameId) constant returns(uint){ + return games[gameId].current_house_cut; + } + + function getGameHouseCutTie(uint gameId) constant returns(uint){ + return games[gameId].current_house_cut_tie; + } + + function getGameBounty(uint gameId) constant returns(uint){ + return games[gameId].current_bounty; + } + + function getGameWinner(uint gameId) constant returns(string){ + if(games[gameId].winner == SIDE_A){ + return 'A'; + } else if(games[gameId].winner == SIDE_B){ + return 'B'; + } else if(games[gameId].winner == TIE){ + return 'T'; + } else { + return 'P'; + + /* @dev -- TODO: IN PROGRESS */ + } + } + + function getCurSideA() constant returns(uint){ + return games[curGameId].totalInA; + } + + function getCurSideB() constant returns(uint){ + return games[curGameId].totalInB; + } +} diff --git a/contracts/inventory b/contracts/inventory new file mode 100644 index 0000000..1fea206 --- /dev/null +++ b/contracts/inventory @@ -0,0 +1,12 @@ +Contract Inventory: + + + +ConvertLib.sol +JEDToken.sol +Migrations.sol +RelaySwapPool.sol +natspec3 + + + diff --git a/contracts/natspec3 b/contracts/natspec3 new file mode 100644 index 0000000..aed96db --- /dev/null +++ b/contracts/natspec3 @@ -0,0 +1,9 @@ +?IF: = propositional statement + +CHECK^ ^ + +PROCESS@ @ + +ACTION>> >> + +NOTE+ + \ No newline at end of file diff --git a/lib/AccountRulesProxy.sol b/lib/AccountRulesProxy.sol new file mode 100644 index 0000000..05c0cd6 --- /dev/null +++ b/lib/AccountRulesProxy.sol @@ -0,0 +1,12 @@ +pragma solidity >=0.5.9 <0.6.0;; + +interface AccountRulesProxy { + function transactionAllowed( + address sender, + address target, + uint256 value, + uint256 gasPrice, + uint256 gasLimit, + bytes calldata payload + ) external view returns (bool); +} diff --git a/node_modules/@openzeppelin/contracts/GSN/Context.sol b/node_modules/@openzeppelin/contracts/GSN/Context.sol new file mode 100644 index 0000000..337acb1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/Context.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/* + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with GSN meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address payable) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes memory) { + this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 + return msg.data; + } +} diff --git a/node_modules/@openzeppelin/contracts/GSN/GSNRecipient.sol b/node_modules/@openzeppelin/contracts/GSN/GSNRecipient.sol new file mode 100644 index 0000000..a719ab8 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/GSNRecipient.sol @@ -0,0 +1,230 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IRelayRecipient.sol"; +import "./IRelayHub.sol"; +import "./Context.sol"; + +/** + * @dev Base GSN recipient contract: includes the {IRelayRecipient} interface + * and enables GSN support on all contracts in the inheritance tree. + * + * TIP: This contract is abstract. The functions {IRelayRecipient-acceptRelayedCall}, + * {_preRelayedCall}, and {_postRelayedCall} are not implemented and must be + * provided by derived contracts. See the + * xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategies] for more + * information on how to use the pre-built {GSNRecipientSignature} and + * {GSNRecipientERC20Fee}, or how to write your own. + */ +abstract contract GSNRecipient is IRelayRecipient, Context { + // Default RelayHub address, deployed on mainnet and all testnets at the same address + address private _relayHub = 0xD216153c06E857cD7f72665E0aF1d7D82172F494; + + uint256 constant private _RELAYED_CALL_ACCEPTED = 0; + uint256 constant private _RELAYED_CALL_REJECTED = 11; + + // How much gas is forwarded to postRelayedCall + uint256 constant internal _POST_RELAYED_CALL_MAX_GAS = 100000; + + /** + * @dev Emitted when a contract changes its {IRelayHub} contract to a new one. + */ + event RelayHubChanged(address indexed oldRelayHub, address indexed newRelayHub); + + /** + * @dev Returns the address of the {IRelayHub} contract for this recipient. + */ + function getHubAddr() public view override returns (address) { + return _relayHub; + } + + /** + * @dev Switches to a new {IRelayHub} instance. This method is added for future-proofing: there's no reason to not + * use the default instance. + * + * IMPORTANT: After upgrading, the {GSNRecipient} will no longer be able to receive relayed calls from the old + * {IRelayHub} instance. Additionally, all funds should be previously withdrawn via {_withdrawDeposits}. + */ + function _upgradeRelayHub(address newRelayHub) internal virtual { + address currentRelayHub = _relayHub; + require(newRelayHub != address(0), "GSNRecipient: new RelayHub is the zero address"); + require(newRelayHub != currentRelayHub, "GSNRecipient: new RelayHub is the current one"); + + emit RelayHubChanged(currentRelayHub, newRelayHub); + + _relayHub = newRelayHub; + } + + /** + * @dev Returns the version string of the {IRelayHub} for which this recipient implementation was built. If + * {_upgradeRelayHub} is used, the new {IRelayHub} instance should be compatible with this version. + */ + // This function is view for future-proofing, it may require reading from + // storage in the future. + function relayHubVersion() public view returns (string memory) { + this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 + return "1.0.0"; + } + + /** + * @dev Withdraws the recipient's deposits in `RelayHub`. + * + * Derived contracts should expose this in an external interface with proper access control. + */ + function _withdrawDeposits(uint256 amount, address payable payee) internal virtual { + IRelayHub(_relayHub).withdraw(amount, payee); + } + + // Overrides for Context's functions: when called from RelayHub, sender and + // data require some pre-processing: the actual sender is stored at the end + // of the call data, which in turns means it needs to be removed from it + // when handling said data. + + /** + * @dev Replacement for msg.sender. Returns the actual sender of a transaction: msg.sender for regular transactions, + * and the end-user for GSN relayed calls (where msg.sender is actually `RelayHub`). + * + * IMPORTANT: Contracts derived from {GSNRecipient} should never use `msg.sender`, and use {_msgSender} instead. + */ + function _msgSender() internal view virtual override returns (address payable) { + if (msg.sender != _relayHub) { + return msg.sender; + } else { + return _getRelayedCallSender(); + } + } + + /** + * @dev Replacement for msg.data. Returns the actual calldata of a transaction: msg.data for regular transactions, + * and a reduced version for GSN relayed calls (where msg.data contains additional information). + * + * IMPORTANT: Contracts derived from {GSNRecipient} should never use `msg.data`, and use {_msgData} instead. + */ + function _msgData() internal view virtual override returns (bytes memory) { + if (msg.sender != _relayHub) { + return msg.data; + } else { + return _getRelayedCallData(); + } + } + + // Base implementations for pre and post relayedCall: only RelayHub can invoke them, and data is forwarded to the + // internal hook. + + /** + * @dev See `IRelayRecipient.preRelayedCall`. + * + * This function should not be overriden directly, use `_preRelayedCall` instead. + * + * * Requirements: + * + * - the caller must be the `RelayHub` contract. + */ + function preRelayedCall(bytes memory context) public virtual override returns (bytes32) { + require(msg.sender == getHubAddr(), "GSNRecipient: caller is not RelayHub"); + return _preRelayedCall(context); + } + + /** + * @dev See `IRelayRecipient.preRelayedCall`. + * + * Called by `GSNRecipient.preRelayedCall`, which asserts the caller is the `RelayHub` contract. Derived contracts + * must implement this function with any relayed-call preprocessing they may wish to do. + * + */ + function _preRelayedCall(bytes memory context) internal virtual returns (bytes32); + + /** + * @dev See `IRelayRecipient.postRelayedCall`. + * + * This function should not be overriden directly, use `_postRelayedCall` instead. + * + * * Requirements: + * + * - the caller must be the `RelayHub` contract. + */ + function postRelayedCall(bytes memory context, bool success, uint256 actualCharge, bytes32 preRetVal) public virtual override { + require(msg.sender == getHubAddr(), "GSNRecipient: caller is not RelayHub"); + _postRelayedCall(context, success, actualCharge, preRetVal); + } + + /** + * @dev See `IRelayRecipient.postRelayedCall`. + * + * Called by `GSNRecipient.postRelayedCall`, which asserts the caller is the `RelayHub` contract. Derived contracts + * must implement this function with any relayed-call postprocessing they may wish to do. + * + */ + function _postRelayedCall(bytes memory context, bool success, uint256 actualCharge, bytes32 preRetVal) internal virtual; + + /** + * @dev Return this in acceptRelayedCall to proceed with the execution of a relayed call. Note that this contract + * will be charged a fee by RelayHub + */ + function _approveRelayedCall() internal pure returns (uint256, bytes memory) { + return _approveRelayedCall(""); + } + + /** + * @dev See `GSNRecipient._approveRelayedCall`. + * + * This overload forwards `context` to _preRelayedCall and _postRelayedCall. + */ + function _approveRelayedCall(bytes memory context) internal pure returns (uint256, bytes memory) { + return (_RELAYED_CALL_ACCEPTED, context); + } + + /** + * @dev Return this in acceptRelayedCall to impede execution of a relayed call. No fees will be charged. + */ + function _rejectRelayedCall(uint256 errorCode) internal pure returns (uint256, bytes memory) { + return (_RELAYED_CALL_REJECTED + errorCode, ""); + } + + /* + * @dev Calculates how much RelayHub will charge a recipient for using `gas` at a `gasPrice`, given a relayer's + * `serviceFee`. + */ + function _computeCharge(uint256 gas, uint256 gasPrice, uint256 serviceFee) internal pure returns (uint256) { + // The fee is expressed as a percentage. E.g. a value of 40 stands for a 40% fee, so the recipient will be + // charged for 1.4 times the spent amount. + return (gas * gasPrice * (100 + serviceFee)) / 100; + } + + function _getRelayedCallSender() private pure returns (address payable result) { + // We need to read 20 bytes (an address) located at array index msg.data.length - 20. In memory, the array + // is prefixed with a 32-byte length value, so we first add 32 to get the memory read index. However, doing + // so would leave the address in the upper 20 bytes of the 32-byte word, which is inconvenient and would + // require bit shifting. We therefore subtract 12 from the read index so the address lands on the lower 20 + // bytes. This can always be done due to the 32-byte prefix. + + // The final memory read index is msg.data.length - 20 + 32 - 12 = msg.data.length. Using inline assembly is the + // easiest/most-efficient way to perform this operation. + + // These fields are not accessible from assembly + bytes memory array = msg.data; + uint256 index = msg.data.length; + + // solhint-disable-next-line no-inline-assembly + assembly { + // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those. + result := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff) + } + return result; + } + + function _getRelayedCallData() private pure returns (bytes memory) { + // RelayHub appends the sender address at the end of the calldata, so in order to retrieve the actual msg.data, + // we must strip the last 20 bytes (length of an address type) from it. + + uint256 actualDataLength = msg.data.length - 20; + bytes memory actualData = new bytes(actualDataLength); + + for (uint256 i = 0; i < actualDataLength; ++i) { + actualData[i] = msg.data[i]; + } + + return actualData; + } +} diff --git a/node_modules/@openzeppelin/contracts/GSN/GSNRecipientERC20Fee.sol b/node_modules/@openzeppelin/contracts/GSN/GSNRecipientERC20Fee.sol new file mode 100644 index 0000000..2405325 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/GSNRecipientERC20Fee.sol @@ -0,0 +1,152 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./GSNRecipient.sol"; +import "../math/SafeMath.sol"; +import "../access/Ownable.sol"; +import "../token/ERC20/SafeERC20.sol"; +import "../token/ERC20/ERC20.sol"; + +/** + * @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20 + * token, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the + * recipient. This means that the token is essentially pegged to the value of Ether. + * + * The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token + * whose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the + * internal {_mint} function. + */ +contract GSNRecipientERC20Fee is GSNRecipient { + using SafeERC20 for __unstable__ERC20Owned; + using SafeMath for uint256; + + enum GSNRecipientERC20FeeErrorCodes { + INSUFFICIENT_BALANCE + } + + __unstable__ERC20Owned private _token; + + /** + * @dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18. + */ + constructor(string memory name, string memory symbol) public { + _token = new __unstable__ERC20Owned(name, symbol); + } + + /** + * @dev Returns the gas payment token. + */ + function token() public view returns (IERC20) { + return IERC20(_token); + } + + /** + * @dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms. + */ + function _mint(address account, uint256 amount) internal virtual { + _token.mint(account, amount); + } + + /** + * @dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN. + */ + function acceptRelayedCall( + address, + address from, + bytes memory, + uint256 transactionFee, + uint256 gasPrice, + uint256, + uint256, + bytes memory, + uint256 maxPossibleCharge + ) + public + view + virtual + override + returns (uint256, bytes memory) + { + if (_token.balanceOf(from) < maxPossibleCharge) { + return _rejectRelayedCall(uint256(GSNRecipientERC20FeeErrorCodes.INSUFFICIENT_BALANCE)); + } + + return _approveRelayedCall(abi.encode(from, maxPossibleCharge, transactionFee, gasPrice)); + } + + /** + * @dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and + * fee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the + * actual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder + * is returned to the user in {_postRelayedCall}. + */ + function _preRelayedCall(bytes memory context) internal virtual override returns (bytes32) { + (address from, uint256 maxPossibleCharge) = abi.decode(context, (address, uint256)); + + // The maximum token charge is pre-charged from the user + _token.safeTransferFrom(from, address(this), maxPossibleCharge); + } + + /** + * @dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known. + */ + function _postRelayedCall(bytes memory context, bool, uint256 actualCharge, bytes32) internal virtual override { + (address from, uint256 maxPossibleCharge, uint256 transactionFee, uint256 gasPrice) = + abi.decode(context, (address, uint256, uint256, uint256)); + + // actualCharge is an _estimated_ charge, which assumes postRelayedCall will use all available gas. + // This implementation's gas cost can be roughly estimated as 10k gas, for the two SSTORE operations in an + // ERC20 transfer. + uint256 overestimation = _computeCharge(_POST_RELAYED_CALL_MAX_GAS.sub(10000), gasPrice, transactionFee); + actualCharge = actualCharge.sub(overestimation); + + // After the relayed call has been executed and the actual charge estimated, the excess pre-charge is returned + _token.safeTransfer(from, maxPossibleCharge.sub(actualCharge)); + } +} + +/** + * @title __unstable__ERC20Owned + * @dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive + * anyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used + * outside of this context. + */ +// solhint-disable-next-line contract-name-camelcase +contract __unstable__ERC20Owned is ERC20, Ownable { + uint256 private constant _UINT256_MAX = 2**256 - 1; + + constructor(string memory name, string memory symbol) public ERC20(name, symbol) { } + + // The owner (GSNRecipientERC20Fee) can mint tokens + function mint(address account, uint256 amount) public onlyOwner { + _mint(account, amount); + } + + // The owner has 'infinite' allowance for all token holders + function allowance(address tokenOwner, address spender) public view override returns (uint256) { + if (spender == owner()) { + return _UINT256_MAX; + } else { + return super.allowance(tokenOwner, spender); + } + } + + // Allowance for the owner cannot be changed (it is always 'infinite') + function _approve(address tokenOwner, address spender, uint256 value) internal override { + if (spender == owner()) { + return; + } else { + super._approve(tokenOwner, spender, value); + } + } + + function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { + if (recipient == owner()) { + _transfer(sender, recipient, amount); + return true; + } else { + return super.transferFrom(sender, recipient, amount); + } + } +} diff --git a/node_modules/@openzeppelin/contracts/GSN/GSNRecipientSignature.sol b/node_modules/@openzeppelin/contracts/GSN/GSNRecipientSignature.sol new file mode 100644 index 0000000..ee514de --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/GSNRecipientSignature.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./GSNRecipient.sol"; +import "../cryptography/ECDSA.sol"; + +/** + * @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that allows relayed transactions through when they are + * accompanied by the signature of a trusted signer. The intent is for this signature to be generated by a server that + * performs validations off-chain. Note that nothing is charged to the user in this scheme. Thus, the server should make + * sure to account for this in their economic and threat model. + */ +contract GSNRecipientSignature is GSNRecipient { + using ECDSA for bytes32; + + address private _trustedSigner; + + enum GSNRecipientSignatureErrorCodes { + INVALID_SIGNER + } + + /** + * @dev Sets the trusted signer that is going to be producing signatures to approve relayed calls. + */ + constructor(address trustedSigner) public { + require(trustedSigner != address(0), "GSNRecipientSignature: trusted signer is the zero address"); + _trustedSigner = trustedSigner; + } + + /** + * @dev Ensures that only transactions with a trusted signature can be relayed through the GSN. + */ + function acceptRelayedCall( + address relay, + address from, + bytes memory encodedFunction, + uint256 transactionFee, + uint256 gasPrice, + uint256 gasLimit, + uint256 nonce, + bytes memory approvalData, + uint256 + ) + public + view + virtual + override + returns (uint256, bytes memory) + { + bytes memory blob = abi.encodePacked( + relay, + from, + encodedFunction, + transactionFee, + gasPrice, + gasLimit, + nonce, // Prevents replays on RelayHub + getHubAddr(), // Prevents replays in multiple RelayHubs + address(this) // Prevents replays in multiple recipients + ); + if (keccak256(blob).toEthSignedMessageHash().recover(approvalData) == _trustedSigner) { + return _approveRelayedCall(); + } else { + return _rejectRelayedCall(uint256(GSNRecipientSignatureErrorCodes.INVALID_SIGNER)); + } + } + + function _preRelayedCall(bytes memory) internal virtual override returns (bytes32) { } + + function _postRelayedCall(bytes memory, bool, uint256, bytes32) internal virtual override { } +} diff --git a/node_modules/@openzeppelin/contracts/GSN/IRelayHub.sol b/node_modules/@openzeppelin/contracts/GSN/IRelayHub.sol new file mode 100644 index 0000000..81d65c1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/IRelayHub.sol @@ -0,0 +1,269 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface for `RelayHub`, the core contract of the GSN. Users should not need to interact with this contract + * directly. + * + * See the https://github.com/OpenZeppelin/openzeppelin-gsn-helpers[OpenZeppelin GSN helpers] for more information on + * how to deploy an instance of `RelayHub` on your local test network. + */ +interface IRelayHub { + // Relay management + + /** + * @dev Adds stake to a relay and sets its `unstakeDelay`. If the relay does not exist, it is created, and the caller + * of this function becomes its owner. If the relay already exists, only the owner can call this function. A relay + * cannot be its own owner. + * + * All Ether in this function call will be added to the relay's stake. + * Its unstake delay will be assigned to `unstakeDelay`, but the new value must be greater or equal to the current one. + * + * Emits a {Staked} event. + */ + function stake(address relayaddr, uint256 unstakeDelay) external payable; + + /** + * @dev Emitted when a relay's stake or unstakeDelay are increased + */ + event Staked(address indexed relay, uint256 stake, uint256 unstakeDelay); + + /** + * @dev Registers the caller as a relay. + * The relay must be staked for, and not be a contract (i.e. this function must be called directly from an EOA). + * + * This function can be called multiple times, emitting new {RelayAdded} events. Note that the received + * `transactionFee` is not enforced by {relayCall}. + * + * Emits a {RelayAdded} event. + */ + function registerRelay(uint256 transactionFee, string calldata url) external; + + /** + * @dev Emitted when a relay is registered or re-registerd. Looking at these events (and filtering out + * {RelayRemoved} events) lets a client discover the list of available relays. + */ + event RelayAdded(address indexed relay, address indexed owner, uint256 transactionFee, uint256 stake, uint256 unstakeDelay, string url); + + /** + * @dev Removes (deregisters) a relay. Unregistered (but staked for) relays can also be removed. + * + * Can only be called by the owner of the relay. After the relay's `unstakeDelay` has elapsed, {unstake} will be + * callable. + * + * Emits a {RelayRemoved} event. + */ + function removeRelayByOwner(address relay) external; + + /** + * @dev Emitted when a relay is removed (deregistered). `unstakeTime` is the time when unstake will be callable. + */ + event RelayRemoved(address indexed relay, uint256 unstakeTime); + + /** Deletes the relay from the system, and gives back its stake to the owner. + * + * Can only be called by the relay owner, after `unstakeDelay` has elapsed since {removeRelayByOwner} was called. + * + * Emits an {Unstaked} event. + */ + function unstake(address relay) external; + + /** + * @dev Emitted when a relay is unstaked for, including the returned stake. + */ + event Unstaked(address indexed relay, uint256 stake); + + // States a relay can be in + enum RelayState { + Unknown, // The relay is unknown to the system: it has never been staked for + Staked, // The relay has been staked for, but it is not yet active + Registered, // The relay has registered itself, and is active (can relay calls) + Removed // The relay has been removed by its owner and can no longer relay calls. It must wait for its unstakeDelay to elapse before it can unstake + } + + /** + * @dev Returns a relay's status. Note that relays can be deleted when unstaked or penalized, causing this function + * to return an empty entry. + */ + function getRelay(address relay) external view returns (uint256 totalStake, uint256 unstakeDelay, uint256 unstakeTime, address payable owner, RelayState state); + + // Balance management + + /** + * @dev Deposits Ether for a contract, so that it can receive (and pay for) relayed transactions. + * + * Unused balance can only be withdrawn by the contract itself, by calling {withdraw}. + * + * Emits a {Deposited} event. + */ + function depositFor(address target) external payable; + + /** + * @dev Emitted when {depositFor} is called, including the amount and account that was funded. + */ + event Deposited(address indexed recipient, address indexed from, uint256 amount); + + /** + * @dev Returns an account's deposits. These can be either a contracts's funds, or a relay owner's revenue. + */ + function balanceOf(address target) external view returns (uint256); + + /** + * Withdraws from an account's balance, sending it back to it. Relay owners call this to retrieve their revenue, and + * contracts can use it to reduce their funding. + * + * Emits a {Withdrawn} event. + */ + function withdraw(uint256 amount, address payable dest) external; + + /** + * @dev Emitted when an account withdraws funds from `RelayHub`. + */ + event Withdrawn(address indexed account, address indexed dest, uint256 amount); + + // Relaying + + /** + * @dev Checks if the `RelayHub` will accept a relayed operation. + * Multiple things must be true for this to happen: + * - all arguments must be signed for by the sender (`from`) + * - the sender's nonce must be the current one + * - the recipient must accept this transaction (via {acceptRelayedCall}) + * + * Returns a `PreconditionCheck` value (`OK` when the transaction can be relayed), or a recipient-specific error + * code if it returns one in {acceptRelayedCall}. + */ + function canRelay( + address relay, + address from, + address to, + bytes calldata encodedFunction, + uint256 transactionFee, + uint256 gasPrice, + uint256 gasLimit, + uint256 nonce, + bytes calldata signature, + bytes calldata approvalData + ) external view returns (uint256 status, bytes memory recipientContext); + + // Preconditions for relaying, checked by canRelay and returned as the corresponding numeric values. + enum PreconditionCheck { + OK, // All checks passed, the call can be relayed + WrongSignature, // The transaction to relay is not signed by requested sender + WrongNonce, // The provided nonce has already been used by the sender + AcceptRelayedCallReverted, // The recipient rejected this call via acceptRelayedCall + InvalidRecipientStatusCode // The recipient returned an invalid (reserved) status code + } + + /** + * @dev Relays a transaction. + * + * For this to succeed, multiple conditions must be met: + * - {canRelay} must `return PreconditionCheck.OK` + * - the sender must be a registered relay + * - the transaction's gas price must be larger or equal to the one that was requested by the sender + * - the transaction must have enough gas to not run out of gas if all internal transactions (calls to the + * recipient) use all gas available to them + * - the recipient must have enough balance to pay the relay for the worst-case scenario (i.e. when all gas is + * spent) + * + * If all conditions are met, the call will be relayed and the recipient charged. {preRelayedCall}, the encoded + * function and {postRelayedCall} will be called in that order. + * + * Parameters: + * - `from`: the client originating the request + * - `to`: the target {IRelayRecipient} contract + * - `encodedFunction`: the function call to relay, including data + * - `transactionFee`: fee (%) the relay takes over actual gas cost + * - `gasPrice`: gas price the client is willing to pay + * - `gasLimit`: gas to forward when calling the encoded function + * - `nonce`: client's nonce + * - `signature`: client's signature over all previous params, plus the relay and RelayHub addresses + * - `approvalData`: dapp-specific data forwared to {acceptRelayedCall}. This value is *not* verified by the + * `RelayHub`, but it still can be used for e.g. a signature. + * + * Emits a {TransactionRelayed} event. + */ + function relayCall( + address from, + address to, + bytes calldata encodedFunction, + uint256 transactionFee, + uint256 gasPrice, + uint256 gasLimit, + uint256 nonce, + bytes calldata signature, + bytes calldata approvalData + ) external; + + /** + * @dev Emitted when an attempt to relay a call failed. + * + * This can happen due to incorrect {relayCall} arguments, or the recipient not accepting the relayed call. The + * actual relayed call was not executed, and the recipient not charged. + * + * The `reason` parameter contains an error code: values 1-10 correspond to `PreconditionCheck` entries, and values + * over 10 are custom recipient error codes returned from {acceptRelayedCall}. + */ + event CanRelayFailed(address indexed relay, address indexed from, address indexed to, bytes4 selector, uint256 reason); + + /** + * @dev Emitted when a transaction is relayed. + * Useful when monitoring a relay's operation and relayed calls to a contract + * + * Note that the actual encoded function might be reverted: this is indicated in the `status` parameter. + * + * `charge` is the Ether value deducted from the recipient's balance, paid to the relay's owner. + */ + event TransactionRelayed(address indexed relay, address indexed from, address indexed to, bytes4 selector, RelayCallStatus status, uint256 charge); + + // Reason error codes for the TransactionRelayed event + enum RelayCallStatus { + OK, // The transaction was successfully relayed and execution successful - never included in the event + RelayedCallFailed, // The transaction was relayed, but the relayed call failed + PreRelayedFailed, // The transaction was not relayed due to preRelatedCall reverting + PostRelayedFailed, // The transaction was relayed and reverted due to postRelatedCall reverting + RecipientBalanceChanged // The transaction was relayed and reverted due to the recipient's balance changing + } + + /** + * @dev Returns how much gas should be forwarded to a call to {relayCall}, in order to relay a transaction that will + * spend up to `relayedCallStipend` gas. + */ + function requiredGas(uint256 relayedCallStipend) external view returns (uint256); + + /** + * @dev Returns the maximum recipient charge, given the amount of gas forwarded, gas price and relay fee. + */ + function maxPossibleCharge(uint256 relayedCallStipend, uint256 gasPrice, uint256 transactionFee) external view returns (uint256); + + // Relay penalization. + // Any account can penalize relays, removing them from the system immediately, and rewarding the + // reporter with half of the relay's stake. The other half is burned so that, even if the relay penalizes itself, it + // still loses half of its stake. + + /** + * @dev Penalize a relay that signed two transactions using the same nonce (making only the first one valid) and + * different data (gas price, gas limit, etc. may be different). + * + * The (unsigned) transaction data and signature for both transactions must be provided. + */ + function penalizeRepeatedNonce(bytes calldata unsignedTx1, bytes calldata signature1, bytes calldata unsignedTx2, bytes calldata signature2) external; + + /** + * @dev Penalize a relay that sent a transaction that didn't target ``RelayHub``'s {registerRelay} or {relayCall}. + */ + function penalizeIllegalTransaction(bytes calldata unsignedTx, bytes calldata signature) external; + + /** + * @dev Emitted when a relay is penalized. + */ + event Penalized(address indexed relay, address sender, uint256 amount); + + /** + * @dev Returns an account's nonce in `RelayHub`. + */ + function getNonce(address from) external view returns (uint256); +} + diff --git a/node_modules/@openzeppelin/contracts/GSN/IRelayRecipient.sol b/node_modules/@openzeppelin/contracts/GSN/IRelayRecipient.sol new file mode 100644 index 0000000..be0ffe5 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/IRelayRecipient.sol @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Base interface for a contract that will be called via the GSN from {IRelayHub}. + * + * TIP: You don't need to write an implementation yourself! Inherit from {GSNRecipient} instead. + */ +interface IRelayRecipient { + /** + * @dev Returns the address of the {IRelayHub} instance this recipient interacts with. + */ + function getHubAddr() external view returns (address); + + /** + * @dev Called by {IRelayHub} to validate if this recipient accepts being charged for a relayed call. Note that the + * recipient will be charged regardless of the execution result of the relayed call (i.e. if it reverts or not). + * + * The relay request was originated by `from` and will be served by `relay`. `encodedFunction` is the relayed call + * calldata, so its first four bytes are the function selector. The relayed call will be forwarded `gasLimit` gas, + * and the transaction executed with a gas price of at least `gasPrice`. ``relay``'s fee is `transactionFee`, and the + * recipient will be charged at most `maxPossibleCharge` (in wei). `nonce` is the sender's (`from`) nonce for + * replay attack protection in {IRelayHub}, and `approvalData` is a optional parameter that can be used to hold a signature + * over all or some of the previous values. + * + * Returns a tuple, where the first value is used to indicate approval (0) or rejection (custom non-zero error code, + * values 1 to 10 are reserved) and the second one is data to be passed to the other {IRelayRecipient} functions. + * + * {acceptRelayedCall} is called with 50k gas: if it runs out during execution, the request will be considered + * rejected. A regular revert will also trigger a rejection. + */ + function acceptRelayedCall( + address relay, + address from, + bytes calldata encodedFunction, + uint256 transactionFee, + uint256 gasPrice, + uint256 gasLimit, + uint256 nonce, + bytes calldata approvalData, + uint256 maxPossibleCharge + ) + external + view + returns (uint256, bytes memory); + + /** + * @dev Called by {IRelayHub} on approved relay call requests, before the relayed call is executed. This allows to e.g. + * pre-charge the sender of the transaction. + * + * `context` is the second value returned in the tuple by {acceptRelayedCall}. + * + * Returns a value to be passed to {postRelayedCall}. + * + * {preRelayedCall} is called with 100k gas: if it runs out during exection or otherwise reverts, the relayed call + * will not be executed, but the recipient will still be charged for the transaction's cost. + */ + function preRelayedCall(bytes calldata context) external returns (bytes32); + + /** + * @dev Called by {IRelayHub} on approved relay call requests, after the relayed call is executed. This allows to e.g. + * charge the user for the relayed call costs, return any overcharges from {preRelayedCall}, or perform + * contract-specific bookkeeping. + * + * `context` is the second value returned in the tuple by {acceptRelayedCall}. `success` is the execution status of + * the relayed call. `actualCharge` is an estimate of how much the recipient will be charged for the transaction, + * not including any gas used by {postRelayedCall} itself. `preRetVal` is {preRelayedCall}'s return value. + * + * + * {postRelayedCall} is called with 100k gas: if it runs out during execution or otherwise reverts, the relayed call + * and the call to {preRelayedCall} will be reverted retroactively, but the recipient will still be charged for the + * transaction's cost. + */ + function postRelayedCall(bytes calldata context, bool success, uint256 actualCharge, bytes32 preRetVal) external; +} diff --git a/node_modules/@openzeppelin/contracts/GSN/README.adoc b/node_modules/@openzeppelin/contracts/GSN/README.adoc new file mode 100644 index 0000000..30c57dd --- /dev/null +++ b/node_modules/@openzeppelin/contracts/GSN/README.adoc @@ -0,0 +1,28 @@ += Gas Station Network (GSN) + +This set of contracts provide all the tools required to make a contract callable via the https://gsn.openzeppelin.com[Gas Station Network]. + +TIP: If you're new to the GSN, head over to our xref:learn::sending-gasless-transactions.adoc[overview of the system] and basic guide to xref:ROOT:gsn.adoc[creating a GSN-capable contract]. + +The core contract a recipient must inherit from is {GSNRecipient}: it includes all necessary interfaces, as well as some helper methods to make interacting with the GSN easier. + +Utilities to make writing xref:ROOT:gsn-strategies.adoc[GSN strategies] easy are available in {GSNRecipient}, or you can simply use one of our pre-made strategies: + +* {GSNRecipientERC20Fee} charges the end user for gas costs in an application-specific xref:ROOT:tokens.adoc#ERC20[ERC20 token] +* {GSNRecipientSignature} accepts all relayed calls that have been signed by a trusted third party (e.g. a private key in a backend) + +You can also take a look at the two contract interfaces that make up the GSN protocol: {IRelayRecipient} and {IRelayHub}, but you won't need to use those directly. + +== Recipient + +{{GSNRecipient}} + +== Strategies + +{{GSNRecipientSignature}} +{{GSNRecipientERC20Fee}} + +== Protocol + +{{IRelayRecipient}} +{{IRelayHub}} diff --git a/node_modules/@openzeppelin/contracts/README.md b/node_modules/@openzeppelin/contracts/README.md new file mode 100644 index 0000000..6032ad6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/README.md @@ -0,0 +1,78 @@ +# OpenZeppelin + +[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/contracts) +[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/contracts.svg)](https://www.npmjs.org/package/@openzeppelin/contracts) +[![Build Status](https://circleci.com/gh/OpenZeppelin/openzeppelin-contracts.svg?style=shield)](https://circleci.com/gh/OpenZeppelin/openzeppelin-contracts) +[![Coverage Status](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts/graph/badge.svg)](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts) + +**A library for secure smart contract development.** Build on a solid foundation of community-vetted code. + + * Implementations of standards like [ERC20](https://docs.openzeppelin.com/contracts/erc20) and [ERC721](https://docs.openzeppelin.com/contracts/erc721). + * Flexible [role-based permissioning](https://docs.openzeppelin.com/contracts/access-control) scheme. + * Reusable [Solidity components](https://docs.openzeppelin.com/contracts/utilities) to build custom contracts and complex decentralized systems. + * First-class integration with the [Gas Station Network](https://docs.openzeppelin.com/contracts/gsn) for systems with no gas fees! + * Audited by leading security firms (_last full audit on v2.0.0_). + +## Overview + +### Installation + +```console +$ npm install @openzeppelin/contracts +``` + +OpenZeppelin Contracts features a [stable API](https://docs.openzeppelin.com/contracts/releases-stability#api-stability), which means your contracts won't break unexpectedly when upgrading to a newer minor version. + +### Usage + +Once installed, you can use the contracts in the library by importing them: + +```solidity +pragma solidity ^0.6.0; + +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; + +contract MyNFT is ERC721 { + constructor() ERC721("MyNFT", "MNFT") public { + } +} +``` + +_If you're new to smart contract development, head to [Developing Smart Contracts](https://docs.openzeppelin.com/learn/developing-smart-contracts) to learn about creating a new project and compiling your contracts._ + +To keep your system secure, you should **always** use the installed code as-is, and neither copy-paste it from online sources, nor modify it yourself. The library is designed so that only the contracts and functions you use are deployed, so you don't need to worry about it needlessly increasing gas costs. + +## Learn More + +The guides in the sidebar will teach about different concepts, and how to use the related contracts that OpenZeppelin Contracts provides: + +* [Access Control](https://docs.openzeppelin.com/contracts/access-control): decide who can perform each of the actions on your system. +* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives, and distribute them via [Crowdsales](https://docs.openzeppelin.com/contracts/crowdsales). +* [Gas Station Network](https://docs.openzeppelin.com/contracts/gsn): let your users interact with your contracts without having to pay for gas themselves. +* [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools, including non-overflowing math, signature verification, and trustless paying systems. + +The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts's development in the [community forum](https://forum.openzeppelin.com). + +Finally, you may want to take a look at the [guides on our blog](https://blog.openzeppelin.com/guides), which cover several common use cases and good practices.. The following articles provide great background reading, though please note, some of the referenced tools have changed as the tooling in the ecosystem continues to rapidly evolve. + +* [The Hitchhiker’s Guide to Smart Contracts in Ethereum](https://blog.openzeppelin.com/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05) will help you get an overview of the various tools available for smart contract development, and help you set up your environment. +* [A Gentle Introduction to Ethereum Programming, Part 1](https://blog.openzeppelin.com/a-gentle-introduction-to-ethereum-programming-part-1-783cc7796094) provides very useful information on an introductory level, including many basic concepts from the Ethereum platform. +* For a more in-depth dive, you may read the guide [Designing the Architecture for Your Ethereum Application](https://blog.openzeppelin.com/designing-the-architecture-for-your-ethereum-application-9cec086f8317), which discusses how to better structure your application and its relationship to the real world. + +## Security + +This project is maintained by [OpenZeppelin](https://openzeppelin.com), and developed following our high standards for code quality and security. OpenZeppelin is meant to provide tested and community-audited code, but please use common sense when doing anything that deals with real money! We take no responsibility for your implementation decisions and any security problems you might experience. + +The core development principles and strategies that OpenZeppelin is based on include: security in depth, simple and modular code, clarity-driven naming conventions, comprehensive unit testing, pre-and-post-condition sanity checks, code consistency, and regular audits. + +The latest audit was done on October 2018 on version 2.0.0. + +Please report any security issues you find to security@openzeppelin.org. + +## Contribute + +OpenZeppelin exists thanks to its contributors. There are many ways you can participate and help build high quality software. Check out the [contribution guide](CONTRIBUTING.md)! + +## License + +OpenZeppelin is released under the [MIT License](LICENSE). diff --git a/node_modules/@openzeppelin/contracts/access/AccessControl.sol b/node_modules/@openzeppelin/contracts/access/AccessControl.sol new file mode 100644 index 0000000..27ba9e8 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/access/AccessControl.sol @@ -0,0 +1,217 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../utils/EnumerableSet.sol"; +import "../utils/Address.sol"; +import "../GSN/Context.sol"; + +/** + * @dev Contract module that allows children to implement role-based access + * control mechanisms. + * + * Roles are referred to by their `bytes32` identifier. These should be exposed + * in the external API and be unique. The best way to achieve this is by + * using `public constant` hash digests: + * + * ``` + * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); + * ``` + * + * Roles can be used to represent a set of permissions. To restrict access to a + * function call, use {hasRole}: + * + * ``` + * function foo() public { + * require(hasRole(MY_ROLE, msg.sender)); + * ... + * } + * ``` + * + * Roles can be granted and revoked dynamically via the {grantRole} and + * {revokeRole} functions. Each role has an associated admin role, and only + * accounts that have a role's admin role can call {grantRole} and {revokeRole}. + * + * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means + * that only accounts with this role will be able to grant or revoke other + * roles. More complex role relationships can be created by using + * {_setRoleAdmin}. + * + * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to + * grant and revoke this role. Extra precautions should be taken to secure + * accounts that have been granted it. + */ +abstract contract AccessControl is Context { + using EnumerableSet for EnumerableSet.AddressSet; + using Address for address; + + struct RoleData { + EnumerableSet.AddressSet members; + bytes32 adminRole; + } + + mapping (bytes32 => RoleData) private _roles; + + bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; + + /** + * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` + * + * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite + * {RoleAdminChanged} not being emitted signaling this. + * + * _Available since v3.1._ + */ + event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); + + /** + * @dev Emitted when `account` is granted `role`. + * + * `sender` is the account that originated the contract call, an admin role + * bearer except when using {_setupRole}. + */ + event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); + + /** + * @dev Emitted when `account` is revoked `role`. + * + * `sender` is the account that originated the contract call: + * - if using `revokeRole`, it is the admin role bearer + * - if using `renounceRole`, it is the role bearer (i.e. `account`) + */ + event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); + + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole(bytes32 role, address account) public view returns (bool) { + return _roles[role].members.contains(account); + } + + /** + * @dev Returns the number of accounts that have `role`. Can be used + * together with {getRoleMember} to enumerate all bearers of a role. + */ + function getRoleMemberCount(bytes32 role) public view returns (uint256) { + return _roles[role].members.length(); + } + + /** + * @dev Returns one of the accounts that have `role`. `index` must be a + * value between 0 and {getRoleMemberCount}, non-inclusive. + * + * Role bearers are not sorted in any particular way, and their ordering may + * change at any point. + * + * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure + * you perform all queries on the same block. See the following + * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] + * for more information. + */ + function getRoleMember(bytes32 role, uint256 index) public view returns (address) { + return _roles[role].members.at(index); + } + + /** + * @dev Returns the admin role that controls `role`. See {grantRole} and + * {revokeRole}. + * + * To change a role's admin, use {_setRoleAdmin}. + */ + function getRoleAdmin(bytes32 role) public view returns (bytes32) { + return _roles[role].adminRole; + } + + /** + * @dev Grants `role` to `account`. + * + * If `account` had not been already granted `role`, emits a {RoleGranted} + * event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + */ + function grantRole(bytes32 role, address account) public virtual { + require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant"); + + _grantRole(role, account); + } + + /** + * @dev Revokes `role` from `account`. + * + * If `account` had been granted `role`, emits a {RoleRevoked} event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + */ + function revokeRole(bytes32 role, address account) public virtual { + require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke"); + + _revokeRole(role, account); + } + + /** + * @dev Revokes `role` from the calling account. + * + * Roles are often managed via {grantRole} and {revokeRole}: this function's + * purpose is to provide a mechanism for accounts to lose their privileges + * if they are compromised (such as when a trusted device is misplaced). + * + * If the calling account had been granted `role`, emits a {RoleRevoked} + * event. + * + * Requirements: + * + * - the caller must be `account`. + */ + function renounceRole(bytes32 role, address account) public virtual { + require(account == _msgSender(), "AccessControl: can only renounce roles for self"); + + _revokeRole(role, account); + } + + /** + * @dev Grants `role` to `account`. + * + * If `account` had not been already granted `role`, emits a {RoleGranted} + * event. Note that unlike {grantRole}, this function doesn't perform any + * checks on the calling account. + * + * [WARNING] + * ==== + * This function should only be called from the constructor when setting + * up the initial roles for the system. + * + * Using this function in any other way is effectively circumventing the admin + * system imposed by {AccessControl}. + * ==== + */ + function _setupRole(bytes32 role, address account) internal virtual { + _grantRole(role, account); + } + + /** + * @dev Sets `adminRole` as ``role``'s admin role. + * + * Emits a {RoleAdminChanged} event. + */ + function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { + emit RoleAdminChanged(role, _roles[role].adminRole, adminRole); + _roles[role].adminRole = adminRole; + } + + function _grantRole(bytes32 role, address account) private { + if (_roles[role].members.add(account)) { + emit RoleGranted(role, account, _msgSender()); + } + } + + function _revokeRole(bytes32 role, address account) private { + if (_roles[role].members.remove(account)) { + emit RoleRevoked(role, account, _msgSender()); + } + } +} diff --git a/node_modules/@openzeppelin/contracts/access/Ownable.sol b/node_modules/@openzeppelin/contracts/access/Ownable.sol new file mode 100644 index 0000000..353e79c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/access/Ownable.sol @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../GSN/Context.sol"; +/** + * @dev Contract module which provides a basic access control mechanism, where + * there is an account (an owner) that can be granted exclusive access to + * specific functions. + * + * By default, the owner account will be the one that deploys the contract. This + * can later be changed with {transferOwnership}. + * + * This module is used through inheritance. It will make available the modifier + * `onlyOwner`, which can be applied to your functions to restrict their use to + * the owner. + */ +contract Ownable is Context { + address private _owner; + + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + /** + * @dev Initializes the contract setting the deployer as the initial owner. + */ + constructor () internal { + address msgSender = _msgSender(); + _owner = msgSender; + emit OwnershipTransferred(address(0), msgSender); + } + + /** + * @dev Returns the address of the current owner. + */ + function owner() public view returns (address) { + return _owner; + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + require(_owner == _msgSender(), "Ownable: caller is not the owner"); + _; + } + + /** + * @dev Leaves the contract without owner. It will not be possible to call + * `onlyOwner` functions anymore. Can only be called by the current owner. + * + * NOTE: Renouncing ownership will leave the contract without an owner, + * thereby removing any functionality that is only available to the owner. + */ + function renounceOwnership() public virtual onlyOwner { + emit OwnershipTransferred(_owner, address(0)); + _owner = address(0); + } + + /** + * @dev Transfers ownership of the contract to a new account (`newOwner`). + * Can only be called by the current owner. + */ + function transferOwnership(address newOwner) public virtual onlyOwner { + require(newOwner != address(0), "Ownable: new owner is the zero address"); + emit OwnershipTransferred(_owner, newOwner); + _owner = newOwner; + } +} diff --git a/node_modules/@openzeppelin/contracts/access/README.adoc b/node_modules/@openzeppelin/contracts/access/README.adoc new file mode 100644 index 0000000..1eac523 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/access/README.adoc @@ -0,0 +1,9 @@ += Access + +Contract modules for authorization and access control mechanisms. + +== Contracts + +{{Ownable}} + +{{AccessControl}} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/AccessControl.json b/node_modules/@openzeppelin/contracts/build/contracts/AccessControl.json new file mode 100644 index 0000000..b5cb4dd --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/AccessControl.json @@ -0,0 +1,3894 @@ +{ + "fileName": "AccessControl.sol", + "contractName": "AccessControl", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/EnumerableSet.sol\";\nimport \"../utils/Address.sol\";\nimport \"../GSN/Context.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context {\n using EnumerableSet for EnumerableSet.AddressSet;\n using Address for address;\n\n struct RoleData {\n EnumerableSet.AddressSet members;\n bytes32 adminRole;\n }\n\n mapping (bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view returns (bool) {\n return _roles[role].members.contains(account);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view returns (uint256) {\n return _roles[role].members.length();\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view returns (address) {\n return _roles[role].members.at(index);\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, _msgSender()), \"AccessControl: sender must be an admin to grant\");\n\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) public virtual {\n require(hasRole(_roles[role].adminRole, _msgSender()), \"AccessControl: sender must be an admin to revoke\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) public virtual {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);\n _roles[role].adminRole = adminRole;\n }\n\n function _grantRole(bytes32 role, address account) private {\n if (_roles[role].members.add(account)) {\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n function _revokeRole(bytes32 role, address account) private {\n if (_roles[role].members.remove(account)) {\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n", + "sourcePath": "contracts/access/AccessControl.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/AccessControl.sol", + "exportedSymbols": { + "AccessControl": [ + 1467 + ] + }, + "id": 1468, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1186, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:6" + }, + { + "absolutePath": "contracts/utils/EnumerableSet.sol", + "file": "../utils/EnumerableSet.sol", + "id": 1187, + "nodeType": "ImportDirective", + "scope": 1468, + "sourceUnit": 13908, + "src": "58:36:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../utils/Address.sol", + "id": 1188, + "nodeType": "ImportDirective", + "scope": 1468, + "sourceUnit": 12815, + "src": "95:30:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 1189, + "nodeType": "ImportDirective", + "scope": 1468, + "sourceUnit": 23, + "src": "126:28:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1191, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "1468:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 1192, + "nodeType": "InheritanceSpecifier", + "src": "1468:7:6" + } + ], + "contractDependencies": [ + 22 + ], + "contractKind": "contract", + "documentation": { + "id": 1190, + "nodeType": "StructuredDocumentation", + "src": "156:1276:6", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it." + }, + "fullyImplemented": true, + "id": 1467, + "linearizedBaseContracts": [ + 1467, + 22 + ], + "name": "AccessControl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1195, + "libraryName": { + "contractScope": null, + "id": 1193, + "name": "EnumerableSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13907, + "src": "1488:13:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableSet_$13907", + "typeString": "library EnumerableSet" + } + }, + "nodeType": "UsingForDirective", + "src": "1482:49:6", + "typeName": { + "contractScope": null, + "id": 1194, + "name": "EnumerableSet.AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "1506:24:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "id": 1198, + "libraryName": { + "contractScope": null, + "id": 1196, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "1542:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "1536:26:6", + "typeName": { + "id": 1197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1554:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "canonicalName": "AccessControl.RoleData", + "id": 1203, + "members": [ + { + "constant": false, + "id": 1200, + "mutability": "mutable", + "name": "members", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1203, + "src": "1594:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 1199, + "name": "EnumerableSet.AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "1594:24:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1202, + "mutability": "mutable", + "name": "adminRole", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1203, + "src": "1636:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1201, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1636:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "RoleData", + "nodeType": "StructDefinition", + "scope": 1467, + "src": "1568:92:6", + "visibility": "public" + }, + { + "constant": false, + "id": 1207, + "mutability": "mutable", + "name": "_roles", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1467, + "src": "1666:44:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "typeName": { + "id": 1206, + "keyType": { + "id": 1204, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1675:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1666:29:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData)" + }, + "valueType": { + "contractScope": null, + "id": 1205, + "name": "RoleData", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1203, + "src": "1686:8:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage_ptr", + "typeString": "struct AccessControl.RoleData" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 1210, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1467, + "src": "1717:49:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1208, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1717:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783030", + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1762:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": { + "id": 1211, + "nodeType": "StructuredDocumentation", + "src": "1773:292:6", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._" + }, + "id": 1219, + "name": "RoleAdminChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 1218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1213, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1219, + "src": "2093:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1212, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2093:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1215, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1219, + "src": "2115:33:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1214, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2115:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1217, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1219, + "src": "2150:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1216, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2150:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2092:87:6" + }, + "src": "2070:110:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1220, + "nodeType": "StructuredDocumentation", + "src": "2186:198:6", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {_setupRole}." + }, + "id": 1228, + "name": "RoleGranted", + "nodeType": "EventDefinition", + "parameters": { + "id": 1227, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1222, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1228, + "src": "2407:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1221, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2407:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1224, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1228, + "src": "2429:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2429:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1226, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1228, + "src": "2454:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2454:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2406:71:6" + }, + "src": "2389:89:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1229, + "nodeType": "StructuredDocumentation", + "src": "2484:275:6", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "id": 1237, + "name": "RoleRevoked", + "nodeType": "EventDefinition", + "parameters": { + "id": 1236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1231, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1237, + "src": "2782:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2782:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1233, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1237, + "src": "2804:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2804:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1235, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1237, + "src": "2829:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2829:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2781:71:6" + }, + "src": "2764:89:6" + }, + { + "body": { + "id": 1255, + "nodeType": "Block", + "src": "3015:62:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1252, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1242, + "src": "3062:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1247, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "3032:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1249, + "indexExpression": { + "argumentTypes": null, + "id": 1248, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "3039:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3032:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1250, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1200, + "src": "3032:20:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 13772, + "src": "3032:29:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$13703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$13703_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3032:38:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1246, + "id": 1254, + "nodeType": "Return", + "src": "3025:45:6" + } + ] + }, + "documentation": { + "id": 1238, + "nodeType": "StructuredDocumentation", + "src": "2859:76:6", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 1256, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1240, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1256, + "src": "2957:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1239, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2957:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1242, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1256, + "src": "2971:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1241, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2971:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2956:31:6" + }, + "returnParameters": { + "id": 1246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1245, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1256, + "src": "3009:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1244, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3009:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3008:6:6" + }, + "scope": 1467, + "src": "2940:137:6", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1271, + "nodeType": "Block", + "src": "3317:53:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1264, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "3334:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1266, + "indexExpression": { + "argumentTypes": null, + "id": 1265, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1259, + "src": "3341:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3334:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1200, + "src": "3334:20:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1268, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 13786, + "src": "3334:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$13703_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$13703_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3334:29:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1263, + "id": 1270, + "nodeType": "Return", + "src": "3327:36:6" + } + ] + }, + "documentation": { + "id": 1257, + "nodeType": "StructuredDocumentation", + "src": "3083:157:6", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 1272, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1259, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1272, + "src": "3273:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1258, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3273:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3272:14:6" + }, + "returnParameters": { + "id": 1263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1262, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1272, + "src": "3308:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3308:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3307:9:6" + }, + "scope": 1467, + "src": "3245:125:6", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1290, + "nodeType": "Block", + "src": "4037:54:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1287, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "4078:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1282, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "4054:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1284, + "indexExpression": { + "argumentTypes": null, + "id": 1283, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "4061:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4054:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1285, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1200, + "src": "4054:20:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 13809, + "src": "4054:23:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$13703_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$13703_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 1288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4054:30:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1281, + "id": 1289, + "nodeType": "Return", + "src": "4047:37:6" + } + ] + }, + "documentation": { + "id": 1273, + "nodeType": "StructuredDocumentation", + "src": "3376:574:6", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 1291, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1291, + "src": "3978:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1274, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3978:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1277, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1291, + "src": "3992:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3992:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3977:29:6" + }, + "returnParameters": { + "id": 1281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1280, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1291, + "src": "4028:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4028:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4027:9:6" + }, + "scope": 1467, + "src": "3955:136:6", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1304, + "nodeType": "Block", + "src": "4338:46:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1299, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "4355:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1301, + "indexExpression": { + "argumentTypes": null, + "id": 1300, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1294, + "src": "4362:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4355:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1302, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1202, + "src": "4355:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1298, + "id": 1303, + "nodeType": "Return", + "src": "4348:29:6" + } + ] + }, + "documentation": { + "id": 1292, + "nodeType": "StructuredDocumentation", + "src": "4097:170:6", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 1305, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1294, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1305, + "src": "4294:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1293, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4294:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4293:14:6" + }, + "returnParameters": { + "id": 1298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1297, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1305, + "src": "4329:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1296, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4329:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4328:9:6" + }, + "scope": 1467, + "src": "4272:112:6", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1330, + "nodeType": "Block", + "src": "4699:158:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1315, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "4725:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1317, + "indexExpression": { + "argumentTypes": null, + "id": 1316, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1308, + "src": "4732:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4725:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1202, + "src": "4725:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1319, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4749:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4749:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1314, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "4717:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4717:45:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74", + "id": 1322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4764:49:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811", + "typeString": "literal_string \"AccessControl: sender must be an admin to grant\"" + }, + "value": "AccessControl: sender must be an admin to grant" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0ba7116025f1ef6b158a2bd2238e617f30e17c9e456917d901086ca4f8ad2811", + "typeString": "literal_string \"AccessControl: sender must be an admin to grant\"" + } + ], + "id": 1313, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4709:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4709:105:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1324, + "nodeType": "ExpressionStatement", + "src": "4709:105:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1326, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1308, + "src": "4836:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1327, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "4842:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1325, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "4825:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4825:25:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "4825:25:6" + } + ] + }, + "documentation": { + "id": 1306, + "nodeType": "StructuredDocumentation", + "src": "4390:239:6", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 1331, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1308, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1331, + "src": "4653:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4653:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1310, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1331, + "src": "4667:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4667:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4652:31:6" + }, + "returnParameters": { + "id": 1312, + "nodeType": "ParameterList", + "parameters": [], + "src": "4699:0:6" + }, + "scope": 1467, + "src": "4634:223:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1356, + "nodeType": "Block", + "src": "5157:160:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1341, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "5183:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1343, + "indexExpression": { + "argumentTypes": null, + "id": 1342, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1334, + "src": "5190:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5183:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1344, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1202, + "src": "5183:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1345, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5207:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5207:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1340, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "5175:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5175:45:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65", + "id": 1348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5222:50:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3", + "typeString": "literal_string \"AccessControl: sender must be an admin to revoke\"" + }, + "value": "AccessControl: sender must be an admin to revoke" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64344570eab7406ca49d34d38bf2b2496dfda914405390c5057c8b0aabf798a3", + "typeString": "literal_string \"AccessControl: sender must be an admin to revoke\"" + } + ], + "id": 1339, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5167:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5167:106:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1350, + "nodeType": "ExpressionStatement", + "src": "5167:106:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1352, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1334, + "src": "5296:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1353, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "5302:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1351, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1466, + "src": "5284:11:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5284:26:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "5284:26:6" + } + ] + }, + "documentation": { + "id": 1332, + "nodeType": "StructuredDocumentation", + "src": "4863:223:6", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 1357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1334, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1357, + "src": "5111:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1333, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5111:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1336, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1357, + "src": "5125:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5125:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5110:31:6" + }, + "returnParameters": { + "id": 1338, + "nodeType": "ParameterList", + "parameters": [], + "src": "5157:0:6" + }, + "scope": 1467, + "src": "5091:226:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1378, + "nodeType": "Block", + "src": "5876:137:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1366, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1362, + "src": "5894:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1367, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5905:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5905:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5894:23:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66", + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5919:49:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "typeString": "literal_string \"AccessControl: can only renounce roles for self\"" + }, + "value": "AccessControl: can only renounce roles for self" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "typeString": "literal_string \"AccessControl: can only renounce roles for self\"" + } + ], + "id": 1365, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5886:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5886:83:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1372, + "nodeType": "ExpressionStatement", + "src": "5886:83:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1374, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1360, + "src": "5992:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1375, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1362, + "src": "5998:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1373, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1466, + "src": "5980:11:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5980:26:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1377, + "nodeType": "ExpressionStatement", + "src": "5980:26:6" + } + ] + }, + "documentation": { + "id": 1358, + "nodeType": "StructuredDocumentation", + "src": "5323:480:6", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`." + }, + "functionSelector": "36568abe", + "id": 1379, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1360, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1379, + "src": "5830:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1359, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5830:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1362, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1379, + "src": "5844:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5844:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5829:31:6" + }, + "returnParameters": { + "id": 1364, + "nodeType": "ParameterList", + "parameters": [], + "src": "5876:0:6" + }, + "scope": 1467, + "src": "5808:205:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1392, + "nodeType": "Block", + "src": "6646:42:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1388, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "6667:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1389, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "6673:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1387, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "6656:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6656:25:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1391, + "nodeType": "ExpressionStatement", + "src": "6656:25:6" + } + ] + }, + "documentation": { + "id": 1380, + "nodeType": "StructuredDocumentation", + "src": "6019:554:6", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====" + }, + "id": 1393, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setupRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1382, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1393, + "src": "6598:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6598:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1393, + "src": "6612:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6612:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6597:31:6" + }, + "returnParameters": { + "id": 1386, + "nodeType": "ParameterList", + "parameters": [], + "src": "6646:0:6" + }, + "scope": 1467, + "src": "6578:110:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1417, + "nodeType": "Block", + "src": "6886:123:6", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1402, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "6918:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1403, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "6924:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1405, + "indexExpression": { + "argumentTypes": null, + "id": 1404, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "6931:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6924:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1406, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1202, + "src": "6924:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1407, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1398, + "src": "6948:9:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1401, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1219, + "src": "6901:16:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 1408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6901:57:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1409, + "nodeType": "EmitStatement", + "src": "6896:62:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1410, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "6968:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1412, + "indexExpression": { + "argumentTypes": null, + "id": 1411, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "6975:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6968:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 1202, + "src": "6968:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1414, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1398, + "src": "6993:9:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6968:34:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1416, + "nodeType": "ExpressionStatement", + "src": "6968:34:6" + } + ] + }, + "documentation": { + "id": 1394, + "nodeType": "StructuredDocumentation", + "src": "6694:114:6", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 1418, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1396, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1418, + "src": "6836:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1395, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6836:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1398, + "mutability": "mutable", + "name": "adminRole", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1418, + "src": "6850:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1397, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6850:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6835:33:6" + }, + "returnParameters": { + "id": 1400, + "nodeType": "ParameterList", + "parameters": [], + "src": "6886:0:6" + }, + "scope": 1467, + "src": "6813:196:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1441, + "nodeType": "Block", + "src": "7074:125:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1430, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1422, + "src": "7113:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1425, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "7088:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1427, + "indexExpression": { + "argumentTypes": null, + "id": 1426, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1420, + "src": "7095:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7088:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1428, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1200, + "src": "7088:20:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1429, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 13726, + "src": "7088:24:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$13703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$13703_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7088:33:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1440, + "nodeType": "IfStatement", + "src": "7084:109:6", + "trueBody": { + "id": 1439, + "nodeType": "Block", + "src": "7123:70:6", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1433, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1420, + "src": "7154:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1434, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1422, + "src": "7160:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1435, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7169:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7169:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1432, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "7142:11:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 1437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7142:40:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1438, + "nodeType": "EmitStatement", + "src": "7137:45:6" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1420, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1442, + "src": "7035:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1419, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7035:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1422, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1442, + "src": "7049:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7049:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7034:31:6" + }, + "returnParameters": { + "id": 1424, + "nodeType": "ParameterList", + "parameters": [], + "src": "7074:0:6" + }, + "scope": 1467, + "src": "7015:184:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1465, + "nodeType": "Block", + "src": "7265:128:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1454, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "7307:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1449, + "name": "_roles", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "7279:6:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$1203_storage_$", + "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" + } + }, + "id": 1451, + "indexExpression": { + "argumentTypes": null, + "id": 1450, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "7286:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7279:12:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$1203_storage", + "typeString": "struct AccessControl.RoleData storage ref" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "members", + "nodeType": "MemberAccess", + "referencedDeclaration": 1200, + "src": "7279:20:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 1453, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 13749, + "src": "7279:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$13703_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$13703_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7279:36:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1464, + "nodeType": "IfStatement", + "src": "7275:112:6", + "trueBody": { + "id": 1463, + "nodeType": "Block", + "src": "7317:70:6", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1457, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1444, + "src": "7348:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1458, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "7354:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1459, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7363:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7363:12:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1456, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1237, + "src": "7336:11:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7336:40:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1462, + "nodeType": "EmitStatement", + "src": "7331:45:6" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1466, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1444, + "mutability": "mutable", + "name": "role", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1466, + "src": "7226:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1443, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7226:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1446, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1466, + "src": "7240:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7240:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7225:31:6" + }, + "returnParameters": { + "id": 1448, + "nodeType": "ParameterList", + "parameters": [], + "src": "7265:0:6" + }, + "scope": 1467, + "src": "7205:188:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1468, + "src": "1433:5962:6" + } + ], + "src": "33:7363:6" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/AccessControlMock.json b/node_modules/@openzeppelin/contracts/build/contracts/AccessControlMock.json new file mode 100644 index 0000000..ac13ef3 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/AccessControlMock.json @@ -0,0 +1,613 @@ +{ + "fileName": "AccessControlMock.sol", + "contractName": "AccessControlMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../access/AccessControl.sol\";\n\ncontract AccessControlMock is AccessControl {\n constructor() public {\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n }\n\n function setRoleAdmin(bytes32 roleId, bytes32 adminRoleId) public {\n _setRoleAdmin(roleId, adminRoleId);\n }\n}\n", + "sourcePath": "contracts/mocks/AccessControlMock.sol", + "sourceMap": "97:257:20:-:0;;;147:82;;;;;;;;;;178:44;1762:4:6;189:18:20;;209:12;:10;;;:12;;:::i;:::-;178:10;;;:44;;:::i;:::-;97:257;;768:104:0;821:15;855:10;848:17;;768:104;:::o;6165:110:6:-;6243:25;6254:4;6260:7;6243:10;;;:25;;:::i;:::-;6165:110;;:::o;6482:184::-;6555:33;6580:7;6555:6;:12;6562:4;6555:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;6551:109;;;6636:12;:10;;;:12;;:::i;:::-;6609:40;;6627:7;6609:40;;6621:4;6609:40;;;;;;;;;;6551:109;6482:184;;:::o;4864:141:96:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;;;:41;;:::i;:::-;4950:48;;4864:141;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;;;:21;;:::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;97:257:20:-;;;;;;;", + "deployedSourceMap": "97:257:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;235:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3859:112:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4221:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5395:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3542:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2527:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1717:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2832:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4678:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;235:117:20;311:34;325:6;333:11;311:13;:34::i;:::-;235:117;;:::o;3859:112:6:-;3916:7;3942:6;:12;3949:4;3942:12;;;;;;;;;;;:22;;;3935:29;;3859:112;;;:::o;4221:223::-;4304:45;4312:6;:12;4319:4;4312:12;;;;;;;;;;;:22;;;4336:12;:10;:12::i;:::-;4304:7;:45::i;:::-;4296:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4412:25;4423:4;4429:7;4412:10;:25::i;:::-;4221:223;;:::o;5395:205::-;5492:12;:10;:12::i;:::-;5481:23;;:7;:23;;;5473:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5567:26;5579:4;5585:7;5567:11;:26::i;:::-;5395:205;;:::o;3542:136::-;3615:7;3641:30;3665:5;3641:6;:12;3648:4;3641:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;3634:37;;3542:136;;;;:::o;2527:137::-;2596:4;2619:38;2649:7;2619:6;:12;2626:4;2619:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;2612:45;;2527:137;;;;:::o;1717:49::-;1762:4;1717:49;;;:::o;2832:125::-;2895:7;2921:29;:6;:12;2928:4;2921:12;;;;;;;;;;;:20;;:27;:29::i;:::-;2914:36;;2832:125;;;:::o;4678:226::-;4762:45;4770:6;:12;4777:4;4770:12;;;;;;;;;;;:22;;;4794:12;:10;:12::i;:::-;4762:7;:45::i;:::-;4754:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4871:26;4883:4;4889:7;4871:11;:26::i;:::-;4678:226;;:::o;4864:141:96:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;:41::i;:::-;4950:48;;4864:141;;;;:::o;6352:124:6:-;6460:9;6435:6;:12;6442:4;6435:12;;;;;;;;;;;:22;;:34;;;;6352:124;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;6482:184:6:-;6555:33;6580:7;6555:6;:12;6562:4;6555:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;6551:109;;;6636:12;:10;:12::i;:::-;6609:40;;6627:7;6609:40;;6621:4;6609:40;;;;;;;;;;6551:109;6482:184;;:::o;6672:188::-;6746:36;6774:7;6746:6;:12;6753:4;6746:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;6742:112;;;6830:12;:10;:12::i;:::-;6803:40;;6821:7;6803:40;;6815:4;6803:40;;;;;;;;;;6742:112;6672:188;;:::o;6085:147:96:-;6159:7;6201:22;6205:3;:10;;6217:5;6201:3;:22::i;:::-;6193:31;;6178:47;;6085:147;;;;:::o;5401:156::-;5481:4;5504:46;5514:3;:10;;5542:5;5534:14;;5526:23;;5504:9;:46::i;:::-;5497:53;;5401:156;;;;:::o;5638:115::-;5701:7;5727:19;5735:3;:10;;5727:7;:19::i;:::-;5720:26;;5638:115;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;5173:147::-;5246:4;5269:44;5277:3;:10;;5305:5;5297:14;;5289:23;;5269:7;:44::i;:::-;5262:51;;5173:147;;;;:::o;4423:201::-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;3984:107::-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;2183:1512::-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "roleId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "adminRoleId", + "type": "bytes32" + } + ], + "name": "setRoleAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/AccessControlMock.sol", + "exportedSymbols": { + "AccessControlMock": [ + 3017 + ] + }, + "id": 3018, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2990, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:20" + }, + { + "absolutePath": "contracts/access/AccessControl.sol", + "file": "../access/AccessControl.sol", + "id": 2991, + "nodeType": "ImportDirective", + "scope": 3018, + "sourceUnit": 1454, + "src": "58:37:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2992, + "name": "AccessControl", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1453, + "src": "127:13:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AccessControl_$1453", + "typeString": "contract AccessControl" + } + }, + "id": 2993, + "nodeType": "InheritanceSpecifier", + "src": "127:13:20" + } + ], + "contractDependencies": [ + 26, + 1453 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3017, + "linearizedBaseContracts": [ + 3017, + 1453, + 26 + ], + "name": "AccessControlMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3002, + "nodeType": "Block", + "src": "168:61:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2997, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1214, + "src": "189:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2998, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "209:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "209:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2996, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "178:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 3000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "178:44:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3001, + "nodeType": "ExpressionStatement", + "src": "178:44:20" + } + ] + }, + "documentation": null, + "id": 3003, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2994, + "nodeType": "ParameterList", + "parameters": [], + "src": "158:2:20" + }, + "returnParameters": { + "id": 2995, + "nodeType": "ParameterList", + "parameters": [], + "src": "168:0:20" + }, + "scope": 3017, + "src": "147:82:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3015, + "nodeType": "Block", + "src": "301:51:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3011, + "name": "roleId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3005, + "src": "325:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3012, + "name": "adminRoleId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3007, + "src": "333:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3010, + "name": "_setRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "311:13:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32)" + } + }, + "id": 3013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "311:34:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3014, + "nodeType": "ExpressionStatement", + "src": "311:34:20" + } + ] + }, + "documentation": null, + "functionSelector": "1e4e0091", + "id": 3016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setRoleAdmin", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3005, + "mutability": "mutable", + "name": "roleId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3016, + "src": "257:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3004, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "257:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3007, + "mutability": "mutable", + "name": "adminRoleId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3016, + "src": "273:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3006, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "273:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "256:37:20" + }, + "returnParameters": { + "id": 3009, + "nodeType": "ParameterList", + "parameters": [], + "src": "301:0:20" + }, + "scope": 3017, + "src": "235:117:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3018, + "src": "97:257:20" + } + ], + "src": "33:322:20" + }, + "bytecode": "0x608060405234801561001057600080fd5b506100316000801b61002661003660201b60201c565b61003e60201b60201c565b6101be565b600033905090565b61004e828261005260201b60201c565b5050565b61007d816000808581526020019081526020016000206000016100ef60201b6105a11790919060201c565b156100eb5761009061003660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061011d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61012560201b60201c565b905092915050565b6000610137838361019b60201b60201c565b610190578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610195565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b610aa1806101cd6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80639010d07c116100665780639010d07c146101ae57806391d1485414610226578063a217fddf1461028c578063ca15c873146102aa578063d547741f146102ec57610093565b80631e4e009114610098578063248a9ca3146100d05780632f2ff15d1461011257806336568abe14610160575b600080fd5b6100ce600480360360408110156100ae57600080fd5b81019080803590602001909291908035906020019092919050505061033a565b005b6100fc600480360360208110156100e657600080fd5b8101908080359060200190929190505050610348565b6040518082815260200191505060405180910390f35b61015e6004803603604081101561012857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610367565b005b6101ac6004803603604081101561017657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103f0565b005b6101e4600480360360408110156101c457600080fd5b810190808035906020019092919080359060200190929190505050610489565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102726004803603604081101561023c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ba565b604051808215151515815260200191505060405180910390f35b6102946104eb565b6040518082815260200191505060405180910390f35b6102d6600480360360208110156102c057600080fd5b81019080803590602001909291905050506104f2565b6040518082815260200191505060405180910390f35b6103386004803603604081101561030257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610518565b005b61034482826105d1565b5050565b6000806000838152602001908152602001600020600201549050919050565b61038d600080848152602001908152602001600020600201546103886105ef565b6104ba565b6103e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806109de602f913960400191505060405180910390fd5b6103ec82826105f7565b5050565b6103f86105ef565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180610a3d602f913960400191505060405180910390fd5b610485828261068a565b5050565b60006104b28260008086815260200190815260200160002060000161071d90919063ffffffff16565b905092915050565b60006104e38260008086815260200190815260200160002060000161073790919063ffffffff16565b905092915050565b6000801b81565b6000610511600080848152602001908152602001600020600001610767565b9050919050565b61053e600080848152602001908152602001600020600201546105396105ef565b6104ba565b610593576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610a0d6030913960400191505060405180910390fd5b61059d828261068a565b5050565b60006105c9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61077c565b905092915050565b80600080848152602001908152602001600020600201819055505050565b600033905090565b61061e816000808581526020019081526020016000206000016105a190919063ffffffff16565b156106865761062b6105ef565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6106b1816000808581526020019081526020016000206000016107ec90919063ffffffff16565b15610719576106be6105ef565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061072c836000018361081c565b60001c905092915050565b600061075f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61089f565b905092915050565b6000610775826000016108c2565b9050919050565b6000610788838361089f565b6107e15782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506107e6565b600090505b92915050565b6000610814836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6108d3565b905092915050565b60008183600001805490501161087d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806109bc6022913960400191505060405180910390fd5b82600001828154811061088c57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020549050600081146109af576000600182039050600060018660000180549050039050600086600001828154811061091e57fe5b906000526020600020015490508087600001848154811061093b57fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061097357fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109b5565b60009150505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122083649214cd86199de4088fdd4ce0020def4c8b43a2b3b30e45534e351df48bf864736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c80639010d07c116100665780639010d07c146101ae57806391d1485414610226578063a217fddf1461028c578063ca15c873146102aa578063d547741f146102ec57610093565b80631e4e009114610098578063248a9ca3146100d05780632f2ff15d1461011257806336568abe14610160575b600080fd5b6100ce600480360360408110156100ae57600080fd5b81019080803590602001909291908035906020019092919050505061033a565b005b6100fc600480360360208110156100e657600080fd5b8101908080359060200190929190505050610348565b6040518082815260200191505060405180910390f35b61015e6004803603604081101561012857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610367565b005b6101ac6004803603604081101561017657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103f0565b005b6101e4600480360360408110156101c457600080fd5b810190808035906020019092919080359060200190929190505050610489565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102726004803603604081101561023c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ba565b604051808215151515815260200191505060405180910390f35b6102946104eb565b6040518082815260200191505060405180910390f35b6102d6600480360360208110156102c057600080fd5b81019080803590602001909291905050506104f2565b6040518082815260200191505060405180910390f35b6103386004803603604081101561030257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610518565b005b61034482826105d1565b5050565b6000806000838152602001908152602001600020600201549050919050565b61038d600080848152602001908152602001600020600201546103886105ef565b6104ba565b6103e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806109de602f913960400191505060405180910390fd5b6103ec82826105f7565b5050565b6103f86105ef565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461047b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180610a3d602f913960400191505060405180910390fd5b610485828261068a565b5050565b60006104b28260008086815260200190815260200160002060000161071d90919063ffffffff16565b905092915050565b60006104e38260008086815260200190815260200160002060000161073790919063ffffffff16565b905092915050565b6000801b81565b6000610511600080848152602001908152602001600020600001610767565b9050919050565b61053e600080848152602001908152602001600020600201546105396105ef565b6104ba565b610593576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610a0d6030913960400191505060405180910390fd5b61059d828261068a565b5050565b60006105c9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61077c565b905092915050565b80600080848152602001908152602001600020600201819055505050565b600033905090565b61061e816000808581526020019081526020016000206000016105a190919063ffffffff16565b156106865761062b6105ef565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6106b1816000808581526020019081526020016000206000016107ec90919063ffffffff16565b15610719576106be6105ef565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061072c836000018361081c565b60001c905092915050565b600061075f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61089f565b905092915050565b6000610775826000016108c2565b9050919050565b6000610788838361089f565b6107e15782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506107e6565b600090505b92915050565b6000610814836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6108d3565b905092915050565b60008183600001805490501161087d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806109bc6022913960400191505060405180910390fd5b82600001828154811061088c57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020549050600081146109af576000600182039050600060018660000180549050039050600086600001828154811061091e57fe5b906000526020600020015490508087600001848154811061093b57fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061097357fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109b5565b60009150505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122083649214cd86199de4088fdd4ce0020def4c8b43a2b3b30e45534e351df48bf864736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Address.json b/node_modules/@openzeppelin/contracts/build/contracts/Address.json new file mode 100644 index 0000000..0507330 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Address.json @@ -0,0 +1,2925 @@ +{ + "fileName": "Address.sol", + "contractName": "Address", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\n // for accounts without code, i.e. `keccak256('')`\n bytes32 codehash;\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n // solhint-disable-next-line no-inline-assembly\n assembly { codehash := extcodehash(account) }\n return (codehash != accountHash && codehash != 0x0);\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n return _functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n return _functionCallWithValue(target, data, value, errorMessage);\n }\n\n function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {\n require(isContract(target), \"Address: call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n", + "sourcePath": "contracts/utils/Address.sol", + "sourceMap": "126:5951:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "126:5951:104:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 12814 + ] + }, + "id": 12815, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12612, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:104" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 12613, + "nodeType": "StructuredDocumentation", + "src": "58:67:104", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 12814, + "linearizedBaseContracts": [ + 12814 + ], + "name": "Address", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 12638, + "nodeType": "Block", + "src": "784:544:104", + "statements": [ + { + "assignments": [ + 12622 + ], + "declarations": [ + { + "constant": false, + "id": 12622, + "mutability": "mutable", + "name": "codehash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12638, + "src": "1036:16:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12621, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1036:7:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12623, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1036:16:104" + }, + { + "assignments": [ + 12625 + ], + "declarations": [ + { + "constant": false, + "id": 12625, + "mutability": "mutable", + "name": "accountHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12638, + "src": "1062:19:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12624, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1062:7:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12627, + "initialValue": { + "argumentTypes": null, + "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730", + "id": 12626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1084:66:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1", + "typeString": "int_const 8947...(69 digits omitted)...1552" + }, + "value": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1062:88:104" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1225:36:104", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1227:32:104", + "value": { + "arguments": [ + { + "name": "account", + "nodeType": "YulIdentifier", + "src": "1251:7:104" + } + ], + "functionName": { + "name": "extcodehash", + "nodeType": "YulIdentifier", + "src": "1239:11:104" + }, + "nodeType": "YulFunctionCall", + "src": "1239:20:104" + }, + "variableNames": [ + { + "name": "codehash", + "nodeType": "YulIdentifier", + "src": "1227:8:104" + } + ] + } + ] + }, + "evmVersion": "petersburg", + "externalReferences": [ + { + "declaration": 12616, + "isOffset": false, + "isSlot": false, + "src": "1251:7:104", + "valueSize": 1 + }, + { + "declaration": 12622, + "isOffset": false, + "isSlot": false, + "src": "1227:8:104", + "valueSize": 1 + } + ], + "id": 12628, + "nodeType": "InlineAssembly", + "src": "1216:45:104" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 12631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12629, + "name": "codehash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12622, + "src": "1278:8:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 12630, + "name": "accountHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "1290:11:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1278:23:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 12634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12632, + "name": "codehash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12622, + "src": "1305:8:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "307830", + "id": 12633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1317:3:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + }, + "src": "1305:15:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1278:42:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 12636, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1277:44:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 12620, + "id": 12637, + "nodeType": "Return", + "src": "1270:51:104" + } + ] + }, + "documentation": { + "id": 12614, + "nodeType": "StructuredDocumentation", + "src": "148:565:104", + "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====" + }, + "id": 12639, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12616, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12639, + "src": "738:15:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:17:104" + }, + "returnParameters": { + "id": 12620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12619, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12639, + "src": "778:4:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "778:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "777:6:104" + }, + "scope": 12814, + "src": "718:610:104", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12672, + "nodeType": "Block", + "src": "2316:320:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12650, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2342:4:104", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + ], + "id": 12649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2334:7:104", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2334:7:104", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2334:13:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2334:21:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 12653, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12644, + "src": "2359:6:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2334:31:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": 12655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2367:31:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + }, + "value": "Address: insufficient balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + } + ], + "id": 12647, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2326:7:104", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2326:73:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12657, + "nodeType": "ExpressionStatement", + "src": "2326:73:104" + }, + { + "assignments": [ + 12659, + null + ], + "declarations": [ + { + "constant": false, + "id": 12659, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12672, + "src": "2488:12:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12658, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2488:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 12666, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "", + "id": 12664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2538:2:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12660, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12642, + "src": "2506:9:104", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 12661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2506:14:104", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 12663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 12662, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12644, + "src": "2529:6:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2506:31:104", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 12665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2506:35:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2487:54:104" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12668, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12659, + "src": "2559:7:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": 12669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2568:60:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "value": "Address: unable to send value, recipient may have reverted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "id": 12667, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2551:7:104", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2551:78:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12671, + "nodeType": "ExpressionStatement", + "src": "2551:78:104" + } + ] + }, + "documentation": { + "id": 12640, + "nodeType": "StructuredDocumentation", + "src": "1334:906:104", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 12673, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12642, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12673, + "src": "2264:25:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 12641, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2264:15:104", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12644, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12673, + "src": "2291:14:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2291:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2263:43:104" + }, + "returnParameters": { + "id": 12646, + "nodeType": "ParameterList", + "parameters": [], + "src": "2316:0:104" + }, + "scope": 12814, + "src": "2245:391:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12689, + "nodeType": "Block", + "src": "3466:82:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12684, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12676, + "src": "3494:6:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12685, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12678, + "src": "3502:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 12686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3508:32:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + }, + "value": "Address: low-level call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + } + ], + "id": 12683, + "name": "functionCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 12690, + 12710 + ], + "referencedDeclaration": 12710, + "src": "3481:12:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 12687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3481:60:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 12682, + "id": 12688, + "nodeType": "Return", + "src": "3474:67:104" + } + ] + }, + "documentation": { + "id": 12674, + "nodeType": "StructuredDocumentation", + "src": "2642:730:104", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._" + }, + "id": 12690, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12676, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12690, + "src": "3399:14:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3399:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12678, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12690, + "src": "3415:17:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12677, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3415:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3398:35:104" + }, + "returnParameters": { + "id": 12682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12681, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12690, + "src": "3452:12:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12680, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3452:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3451:14:104" + }, + "scope": 12814, + "src": "3377:171:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12709, + "nodeType": "Block", + "src": "3887:77:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12703, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12693, + "src": "3927:6:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12704, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12695, + "src": "3935:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 12705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3941:1:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 12706, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12697, + "src": "3944:12:104", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 12702, + "name": "_functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12813, + "src": "3904:22:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 12707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3904:53:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 12701, + "id": 12708, + "nodeType": "Return", + "src": "3897:60:104" + } + ] + }, + "documentation": { + "id": 12691, + "nodeType": "StructuredDocumentation", + "src": "3554:211:104", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 12710, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12693, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12710, + "src": "3792:14:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3792:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12695, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12710, + "src": "3808:17:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12694, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3808:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12697, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12710, + "src": "3827:26:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12696, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3827:6:104", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3791:63:104" + }, + "returnParameters": { + "id": 12701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12700, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12710, + "src": "3873:12:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12699, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3873:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3872:14:104" + }, + "scope": 12814, + "src": "3770:194:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12729, + "nodeType": "Block", + "src": "4439:111:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12723, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12713, + "src": "4478:6:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12724, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12715, + "src": "4486:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12725, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12717, + "src": "4492:5:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": 12726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4499:43:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + }, + "value": "Address: low-level call with value failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + } + ], + "id": 12722, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 12730, + 12763 + ], + "referencedDeclaration": 12763, + "src": "4456:21:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 12727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4456:87:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 12721, + "id": 12728, + "nodeType": "Return", + "src": "4449:94:104" + } + ] + }, + "documentation": { + "id": 12711, + "nodeType": "StructuredDocumentation", + "src": "3970:351:104", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._" + }, + "id": 12730, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12713, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12730, + "src": "4357:14:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4357:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12715, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12730, + "src": "4373:17:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4373:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12717, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12730, + "src": "4392:13:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12716, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4392:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4356:50:104" + }, + "returnParameters": { + "id": 12721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12720, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12730, + "src": "4425:12:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12719, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4425:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4424:14:104" + }, + "scope": 12814, + "src": "4326:224:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12762, + "nodeType": "Block", + "src": "4939:172:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12747, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4965:4:104", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + ], + "id": 12746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4957:7:104", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4957:7:104", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4957:13:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4957:21:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 12750, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12737, + "src": "4982:5:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4957:30:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": 12752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4989:40:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + }, + "value": "Address: insufficient balance for call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + } + ], + "id": 12744, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4949:7:104", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4949:81:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12754, + "nodeType": "ExpressionStatement", + "src": "4949:81:104" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12756, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12733, + "src": "5070:6:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12757, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12735, + "src": "5078:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12737, + "src": "5084:5:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12759, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12739, + "src": "5091:12:104", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 12755, + "name": "_functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12813, + "src": "5047:22:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 12760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5047:57:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 12743, + "id": 12761, + "nodeType": "Return", + "src": "5040:64:104" + } + ] + }, + "documentation": { + "id": 12731, + "nodeType": "StructuredDocumentation", + "src": "4556:237:104", + "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 12763, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12733, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12763, + "src": "4829:14:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4829:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12735, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12763, + "src": "4845:17:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12734, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4845:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12737, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12763, + "src": "4864:13:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4864:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12739, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12763, + "src": "4879:26:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12738, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4879:6:104", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4828:78:104" + }, + "returnParameters": { + "id": 12743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12742, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12763, + "src": "4925:12:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12741, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4925:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4924:14:104" + }, + "scope": 12814, + "src": "4798:313:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12812, + "nodeType": "Block", + "src": "5261:814:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12778, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12765, + "src": "5290:6:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12777, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12639, + "src": "5279:10:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 12779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5279:18:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 12780, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5299:31:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + }, + "value": "Address: call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + } + ], + "id": 12776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5271:7:104", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5271:60:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12782, + "nodeType": "ExpressionStatement", + "src": "5271:60:104" + }, + { + "assignments": [ + 12784, + 12786 + ], + "declarations": [ + { + "constant": false, + "id": 12784, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12812, + "src": "5402:12:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12783, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5402:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12786, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12812, + "src": "5416:23:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12785, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5416:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12793, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12791, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12767, + "src": "5474:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12787, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12765, + "src": "5443:6:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5443:11:104", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 12790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 12789, + "name": "weiValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12769, + "src": "5463:8:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "5443:30:104", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 12792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5443:36:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5401:78:104" + }, + { + "condition": { + "argumentTypes": null, + "id": 12794, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12784, + "src": "5493:7:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12810, + "nodeType": "Block", + "src": "5550:519:104", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12798, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12786, + "src": "5634:10:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 12799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5634:17:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5654:1:104", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5634:21:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12808, + "nodeType": "Block", + "src": "6006:53:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12805, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12771, + "src": "6031:12:104", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 12804, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "6024:6:104", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 12806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6024:20:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12807, + "nodeType": "ExpressionStatement", + "src": "6024:20:104" + } + ] + }, + "id": 12809, + "nodeType": "IfStatement", + "src": "5630:429:104", + "trueBody": { + "id": 12803, + "nodeType": "Block", + "src": "5657:343:104", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5841:145:104", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5863:40:104", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "5892:10:104" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5886:5:104" + }, + "nodeType": "YulFunctionCall", + "src": "5886:17:104" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "5867:15:104", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5935:2:104", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "5939:10:104" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5931:3:104" + }, + "nodeType": "YulFunctionCall", + "src": "5931:19:104" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "5952:15:104" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5924:6:104" + }, + "nodeType": "YulFunctionCall", + "src": "5924:44:104" + }, + "nodeType": "YulExpressionStatement", + "src": "5924:44:104" + } + ] + }, + "evmVersion": "petersburg", + "externalReferences": [ + { + "declaration": 12786, + "isOffset": false, + "isSlot": false, + "src": "5892:10:104", + "valueSize": 1 + }, + { + "declaration": 12786, + "isOffset": false, + "isSlot": false, + "src": "5939:10:104", + "valueSize": 1 + } + ], + "id": 12802, + "nodeType": "InlineAssembly", + "src": "5832:154:104" + } + ] + } + } + ] + }, + "id": 12811, + "nodeType": "IfStatement", + "src": "5489:580:104", + "trueBody": { + "id": 12797, + "nodeType": "Block", + "src": "5502:42:104", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12795, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12786, + "src": "5523:10:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 12775, + "id": 12796, + "nodeType": "Return", + "src": "5516:17:104" + } + ] + } + } + ] + }, + "documentation": null, + "id": 12813, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12765, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12813, + "src": "5149:14:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5149:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12767, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12813, + "src": "5165:17:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12766, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5165:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12769, + "mutability": "mutable", + "name": "weiValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12813, + "src": "5184:16:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5184:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12771, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12813, + "src": "5202:26:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12770, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5202:6:104", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5148:81:104" + }, + "returnParameters": { + "id": 12775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12774, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12813, + "src": "5247:12:104", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12773, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5247:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5246:14:104" + }, + "scope": 12814, + "src": "5117:958:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 12815, + "src": "126:5951:104" + } + ], + "src": "33:6045:104" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2113640aaf6c19785c7d6461d1b9f7633e327625919081a30220f5102e5273964736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2113640aaf6c19785c7d6461d1b9f7633e327625919081a30220f5102e5273964736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/AddressImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/AddressImpl.json new file mode 100644 index 0000000..894da5d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/AddressImpl.json @@ -0,0 +1,496 @@ +{ + "fileName": "AddressImpl.sol", + "contractName": "AddressImpl", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/Address.sol\";\n\ncontract AddressImpl {\n function isContract(address account) external view returns (bool) {\n return Address.isContract(account);\n }\n\n function sendValue(address payable receiver, uint256 amount) external {\n Address.sendValue(receiver, amount);\n }\n\n // sendValue's tests require the contract to hold Ether\n receive () external payable { }\n}\n", + "sourcePath": "contracts/mocks/AddressImpl.sol", + "sourceMap": "90:371:21:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "90:371:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;117:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;240:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;117:117;177:4;200:27;219:7;200:18;:27::i;:::-;193:34;;117:117;;;:::o;240:122::-;320:35;338:8;348:6;320:17;:35::i;:::-;240:122;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;2245:391::-;2359:6;2342:4;2334:21;;;:31;;2326:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:12;2506:9;:14;;2529:6;2506:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:54;;;2559:7;2551:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:391;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "sendValue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "ast": { + "absolutePath": "contracts/mocks/AddressImpl.sol", + "exportedSymbols": { + "AddressImpl": [ + 3053 + ] + }, + "id": 3054, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3019, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:21" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../utils/Address.sol", + "id": 3020, + "nodeType": "ImportDirective", + "scope": 3054, + "sourceUnit": 10901, + "src": "58:30:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3053, + "linearizedBaseContracts": [ + 3053 + ], + "name": "AddressImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3032, + "nodeType": "Block", + "src": "183:51:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3029, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3022, + "src": "219:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3027, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10900, + "src": "200:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$10900_$", + "typeString": "type(library Address)" + } + }, + "id": 3028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 10865, + "src": "200:18:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "200:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3026, + "id": 3031, + "nodeType": "Return", + "src": "193:34:21" + } + ] + }, + "documentation": null, + "functionSelector": "16279055", + "id": 3033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3022, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3033, + "src": "137:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "137:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "136:17:21" + }, + "returnParameters": { + "id": 3026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3025, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3033, + "src": "177:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3024, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "177:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "176:6:21" + }, + "scope": 3053, + "src": "117:117:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3047, + "nodeType": "Block", + "src": "310:52:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3043, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "338:8:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 3044, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3037, + "src": "348:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3040, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10900, + "src": "320:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$10900_$", + "typeString": "type(library Address)" + } + }, + "id": 3042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 10899, + "src": "320:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "320:35:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3046, + "nodeType": "ExpressionStatement", + "src": "320:35:21" + } + ] + }, + "documentation": null, + "functionSelector": "24a084df", + "id": 3048, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3035, + "mutability": "mutable", + "name": "receiver", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3048, + "src": "259:24:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "259:15:21", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3037, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3048, + "src": "285:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "285:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "258:42:21" + }, + "returnParameters": { + "id": 3039, + "nodeType": "ParameterList", + "parameters": [], + "src": "310:0:21" + }, + "scope": 3053, + "src": "240:122:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3051, + "nodeType": "Block", + "src": "456:3:21", + "statements": [] + }, + "documentation": null, + "id": 3052, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3049, + "nodeType": "ParameterList", + "parameters": [], + "src": "436:2:21" + }, + "returnParameters": { + "id": 3050, + "nodeType": "ParameterList", + "parameters": [], + "src": "456:0:21" + }, + "scope": 3053, + "src": "428:31:21", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3054, + "src": "90:371:21" + } + ], + "src": "33:429:21" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610329806100206000396000f3fe60806040526004361061002d5760003560e01c8063162790551461003957806324a084df146100a257610034565b3661003457005b600080fd5b34801561004557600080fd5b506100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100fd565b604051808215151515815260200191505060405180910390f35b3480156100ae57600080fd5b506100fb600480360360408110156100c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061010f565b005b60006101088261011d565b9050919050565b6101198282610168565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561015f57506000801b8214155b92505050919050565b803073ffffffffffffffffffffffffffffffffffffffff163110156101f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610255576040519150601f19603f3d011682016040523d82523d6000602084013e61025a565b606091505b50509050806102b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806102ba603a913960400191505060405180910390fd5b50505056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564a2646970667358221220ae0282146ca2c102e9ade1db57a5cfdcd9d5a4bf6958972f48a83def578972cf64736f6c63430006090033", + "deployedBytecode": "0x60806040526004361061002d5760003560e01c8063162790551461003957806324a084df146100a257610034565b3661003457005b600080fd5b34801561004557600080fd5b506100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100fd565b604051808215151515815260200191505060405180910390f35b3480156100ae57600080fd5b506100fb600480360360408110156100c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061010f565b005b60006101088261011d565b9050919050565b6101198282610168565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561015f57506000801b8214155b92505050919050565b803073ffffffffffffffffffffffffffffffffffffffff163110156101f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610255576040519150601f19603f3d011682016040523d82523d6000602084013e61025a565b606091505b50509050806102b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806102ba603a913960400191505060405180910390fd5b50505056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564a2646970667358221220ae0282146ca2c102e9ade1db57a5cfdcd9d5a4bf6958972f48a83def578972cf64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsale.json new file mode 100644 index 0000000..8fe881e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsale.json @@ -0,0 +1,1269 @@ +{ + "fileName": "AllowanceCrowdsale.sol", + "contractName": "AllowanceCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Crowdsale.sol\";\nimport \"../../token/ERC20/IERC20.sol\";\nimport \"../../token/ERC20/SafeERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../math/Math.sol\";\n\n/**\n * @title AllowanceCrowdsale\n * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.\n */\ncontract AllowanceCrowdsale is Crowdsale {\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n address private _tokenWallet;\n\n /**\n * @dev Constructor, takes token wallet address.\n * @param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale.\n */\n constructor (address tokenWallet) public {\n require(tokenWallet != address(0), \"AllowanceCrowdsale: token wallet is the zero address\");\n _tokenWallet = tokenWallet;\n }\n\n /**\n * @return the address of the wallet that will hold the tokens.\n */\n function tokenWallet() public view returns (address) {\n return _tokenWallet;\n }\n\n /**\n * @dev Checks the amount of tokens left in the allowance.\n * @return Amount of tokens left in the allowance\n */\n function remainingTokens() public view returns (uint256) {\n return Math.min(token().balanceOf(_tokenWallet), token().allowance(_tokenWallet, address(this)));\n }\n\n /**\n * @dev Overrides parent behavior by transferring tokens from wallet.\n * @param beneficiary Token purchaser\n * @param tokenAmount Amount of tokens purchased\n */\n function _deliverTokens(address beneficiary, uint256 tokenAmount) internal {\n token().safeTransferFrom(_tokenWallet, beneficiary, tokenAmount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/emission/AllowanceCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "tokenWallet", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "remainingTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/emission/AllowanceCrowdsale.sol", + "exportedSymbols": { + "AllowanceCrowdsale": [ + 2556 + ] + }, + "id": 2557, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2474, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:18" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 2475, + "nodeType": "ImportDirective", + "scope": 2557, + "sourceUnit": 2120, + "src": "25:26:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2476, + "nodeType": "ImportDirective", + "scope": 2557, + "sourceUnit": 10217, + "src": "52:38:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../../token/ERC20/SafeERC20.sol", + "id": 2477, + "nodeType": "ImportDirective", + "scope": 2557, + "sourceUnit": 10437, + "src": "91:41:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2478, + "nodeType": "ImportDirective", + "scope": 2557, + "sourceUnit": 5300, + "src": "133:33:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/Math.sol", + "file": "../../math/Math.sol", + "id": 2479, + "nodeType": "ImportDirective", + "scope": 2557, + "sourceUnit": 5113, + "src": "167:29:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2480, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "378:9:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2481, + "nodeType": "InheritanceSpecifier", + "src": "378:9:18" + } + ], + "contractDependencies": [ + 26, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": "@title AllowanceCrowdsale\n@dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.", + "fullyImplemented": false, + "id": 2556, + "linearizedBaseContracts": [ + 2556, + 2119, + 13820, + 26 + ], + "name": "AllowanceCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2484, + "libraryName": { + "contractScope": null, + "id": 2482, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "400:8:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "394:27:18", + "typeName": { + "id": 2483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "413:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 2487, + "libraryName": { + "contractScope": null, + "id": 2485, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10436, + "src": "432:9:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$10436", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "426:27:18", + "typeName": { + "contractScope": null, + "id": 2486, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "446:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 2489, + "name": "_tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 2556, + "src": "459:28:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "459:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2507, + "nodeType": "Block", + "src": "705:143:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2495, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2491, + "src": "723:11:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "746:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "738:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "738:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "723:25:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416c6c6f77616e636543726f776473616c653a20746f6b656e2077616c6c657420697320746865207a65726f2061646472657373", + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "750:54:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_28c1622b0801c3eb285f8898679329f97ee387a915f45db479efe1790a08620d", + "typeString": "literal_string \"AllowanceCrowdsale: token wallet is the zero address\"" + }, + "value": "AllowanceCrowdsale: token wallet is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_28c1622b0801c3eb285f8898679329f97ee387a915f45db479efe1790a08620d", + "typeString": "literal_string \"AllowanceCrowdsale: token wallet is the zero address\"" + } + ], + "id": 2494, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "715:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "715:90:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2502, + "nodeType": "ExpressionStatement", + "src": "715:90:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 2505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2503, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2489, + "src": "815:12:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2504, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2491, + "src": "830:11:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "815:26:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2506, + "nodeType": "ExpressionStatement", + "src": "815:26:18" + } + ] + }, + "documentation": "@dev Constructor, takes token wallet address.\n@param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale.", + "id": 2508, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "name": "tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 2508, + "src": "677:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "677:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "676:21:18" + }, + "returnParameters": { + "id": 2493, + "nodeType": "ParameterList", + "parameters": [], + "src": "705:0:18" + }, + "scope": 2556, + "src": "664:184:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2515, + "nodeType": "Block", + "src": "991:36:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2513, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2489, + "src": "1008:12:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2512, + "id": 2514, + "nodeType": "Return", + "src": "1001:19:18" + } + ] + }, + "documentation": "@return the address of the wallet that will hold the tokens.", + "id": 2516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenWallet", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2509, + "nodeType": "ParameterList", + "parameters": [], + "src": "958:2:18" + }, + "returnParameters": { + "id": 2512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2511, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2516, + "src": "982:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "982:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "981:9:18" + }, + "scope": 2556, + "src": "938:89:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2538, + "nodeType": "Block", + "src": "1223:113:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2526, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2489, + "src": "1267:12:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2523, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "1249:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$10216_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1249:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 2525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 10161, + "src": "1249:17:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1249:31:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2531, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2489, + "src": "1300:12:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2533, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14025, + "src": "1322:4:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$2556", + "typeString": "contract AllowanceCrowdsale" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$2556", + "typeString": "contract AllowanceCrowdsale" + } + ], + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1314:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1314:13:18", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2528, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "1282:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$10216_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 2529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1282:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 2530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 10179, + "src": "1282:17:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 2535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1282:46:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2521, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5112, + "src": "1240:4:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$5112_$", + "typeString": "type(library Math)" + } + }, + "id": 2522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 5079, + "src": "1240:8:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1240:89:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2520, + "id": 2537, + "nodeType": "Return", + "src": "1233:96:18" + } + ] + }, + "documentation": "@dev Checks the amount of tokens left in the allowance.\n@return Amount of tokens left in the allowance", + "id": 2539, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remainingTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2517, + "nodeType": "ParameterList", + "parameters": [], + "src": "1190:2:18" + }, + "returnParameters": { + "id": 2520, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2519, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2539, + "src": "1214:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2518, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1214:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1213:9:18" + }, + "scope": 2556, + "src": "1166:170:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2554, + "nodeType": "Block", + "src": "1602:81:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2549, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2489, + "src": "1637:12:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2550, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "1651:11:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2551, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2543, + "src": "1664:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2546, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "1612:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$10216_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 2547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1612:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 2548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 10274, + "src": "1612:24:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10216_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1612:64:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2553, + "nodeType": "ExpressionStatement", + "src": "1612:64:18" + } + ] + }, + "documentation": "@dev Overrides parent behavior by transferring tokens from wallet.\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 2555, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2541, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2555, + "src": "1551:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1551:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2543, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 2555, + "src": "1572:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1572:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1550:42:18" + }, + "returnParameters": { + "id": 2545, + "nodeType": "ParameterList", + "parameters": [], + "src": "1602:0:18" + }, + "scope": 2556, + "src": "1527:156:18", + "stateMutability": "nonpayable", + "superFunction": 2073, + "visibility": "internal" + } + ], + "scope": 2557, + "src": "347:1338:18" + } + ], + "src": "0:1686:18" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsaleImpl.json new file mode 100644 index 0000000..07a5724 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/AllowanceCrowdsaleImpl.json @@ -0,0 +1,514 @@ +{ + "fileName": "AllowanceCrowdsaleImpl.sol", + "contractName": "AllowanceCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/emission/AllowanceCrowdsale.sol\";\n\ncontract AllowanceCrowdsaleImpl is AllowanceCrowdsale {\n constructor (uint256 rate, address payable wallet, IERC20 token, address tokenWallet)\n public\n Crowdsale(rate, wallet, token)\n AllowanceCrowdsale(tokenWallet)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/AllowanceCrowdsaleImpl.sol", + "sourceMap": "117:310:47:-;;;177:248;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:248:47;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;177:248:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:11;296:4;302:6;310:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;746:1:18;723:25;;:11;:25;;;;715:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;830:11;815:12;;:26;;;;;;;;;;;;;;;;;;664:184;177:248:47;;;;117:310;;;;;;", + "deployedSourceMap": "117:310:47:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;117:310:47;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1166:170:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:170:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;938:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;938:89:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;3430:75::-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;3258:87::-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;1166:170:18:-;1214:7;1240:89;1249:7;:5;:7::i;:::-;:17;;;1267:12;;;;;;;;;;;1249:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1249:31:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1249:31:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1249:31:18;;;;;;;;;;;;;;;;1282:7;:5;:7::i;:::-;:17;;;1300:12;;;;;;;;;;;1322:4;1282:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1282:46:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1282:46:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1282:46:18;;;;;;;;;;;;;;;;1240:8;:89::i;:::-;1233:96;;1166:170;:::o;938:89::-;982:7;1008:12;;;;;;;;;;;1001:19;;938:89;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;5057:376::-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;7358:120::-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;358:104:44:-;416:7;446:1;442;:5;:13;;454:1;442:13;;;450:1;442:13;435:20;;358:104;;;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;1527:156:18:-;1612:64;1637:12;;;;;;;;;;;1651:11;1664;1612:7;:5;:7::i;:::-;:24;;;;:64;;;;;;:::i;:::-;1527:156;;:::o;842:202:126:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:126;942:18;:95::i;:::-;842:202;;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenWallet", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "remainingTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/AllowanceCrowdsaleImpl.sol", + "exportedSymbols": { + "AllowanceCrowdsaleImpl": [ + 5375 + ] + }, + "id": 5376, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5350, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:47" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 5351, + "nodeType": "ImportDirective", + "scope": 5376, + "sourceUnit": 10217, + "src": "25:35:47", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/emission/AllowanceCrowdsale.sol", + "file": "../crowdsale/emission/AllowanceCrowdsale.sol", + "id": 5352, + "nodeType": "ImportDirective", + "scope": 5376, + "sourceUnit": 2557, + "src": "61:54:47", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5353, + "name": "AllowanceCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2556, + "src": "152:18:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$2556", + "typeString": "contract AllowanceCrowdsale" + } + }, + "id": 5354, + "nodeType": "InheritanceSpecifier", + "src": "152:18:47" + } + ], + "contractDependencies": [ + 26, + 2119, + 2556, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5375, + "linearizedBaseContracts": [ + 5375, + 2556, + 2119, + 13820, + 26 + ], + "name": "AllowanceCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5373, + "nodeType": "Block", + "src": "361:64:47", + "statements": [] + }, + "documentation": null, + "id": 5374, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5365, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5356, + "src": "296:4:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5366, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5358, + "src": "302:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5367, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5360, + "src": "310:5:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 5368, + "modifierName": { + "argumentTypes": null, + "id": 5364, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "286:9:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "286:30:47" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 5370, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5362, + "src": "344:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 5371, + "modifierName": { + "argumentTypes": null, + "id": 5369, + "name": "AllowanceCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "325:18:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AllowanceCrowdsale_$2556_$", + "typeString": "type(contract AllowanceCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "325:31:47" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5356, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 5374, + "src": "190:12:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "190:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5358, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 5374, + "src": "204:22:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5357, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "204:15:47", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5360, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5374, + "src": "228:12:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5359, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "228:6:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5362, + "name": "tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 5374, + "src": "242:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "242:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "189:73:47" + }, + "returnParameters": { + "id": 5372, + "nodeType": "ParameterList", + "parameters": [], + "src": "361:0:47" + }, + "scope": 5375, + "src": "177:248:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5376, + "src": "117:310:47" + } + ], + "src": "0:428:47" + }, + "bytecode": "0x608060405234801561001057600080fd5b506040516111c23803806111c28339818101604052608081101561003357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508084848460016000806101000a81548160ff021916908315150217905550600083116100f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561017c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061119d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806111796024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610314576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806111456034913960400191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050610ddc806103696000396000f3fe6080604052600436106100705760003560e01c8063bf5839031161004e578063bf5839031461012f578063bff99c6c1461015a578063ec8ac4d8146101b1578063fc0c546a146101f557610070565b80632c4e722e146100825780634042b66f146100ad578063521eb273146100d8575b61008061007b61024c565b610254565b005b34801561008e57600080fd5b506100976103df565b6040518082815260200191505060405180910390f35b3480156100b957600080fd5b506100c26103e9565b6040518082815260200191505060405180910390f35b3480156100e457600080fd5b506100ed6103f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013b57600080fd5b5061014461041d565b6040518082815260200191505060405180910390f35b34801561016657600080fd5b5061016f610622565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f3600480360360208110156101c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610254565b005b34801561020157600080fd5b5061020a61064c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166102d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506102fe8282610675565b600061030982610776565b90506103208260035461079490919063ffffffff16565b600381905550610330838261081c565b8273ffffffffffffffffffffffffffffffffffffffff1661034f61024c565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103ae838361082a565b6103b661082e565b6103c08383610899565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061061d61042a61064c565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104c857600080fd5b505afa1580156104dc573d6000803e3d6000fd5b505050506040513d60208110156104f257600080fd5b810190808051906020019092919050505061050b61064c565b73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156105dd57600080fd5b505afa1580156105f1573d6000803e3d6000fd5b505050506040513d602081101561060757600080fd5b810190808051906020019092919050505061089d565b905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610d54602a913960400191505060405180910390fd5b6000811415610772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600061078d600254836108b690919063ffffffff16565b9050919050565b600080828401905083811015610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610826828261093c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610896573d6000803e3d6000fd5b50565b5050565b60008183106108ac57816108ae565b825b905092915050565b6000808314156108c95760009050610936565b60008284029050828482816108da57fe5b0414610931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610d336021913960400191505060405180910390fd5b809150505b92915050565b610992600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838361096c61064c565b73ffffffffffffffffffffffffffffffffffffffff16610996909392919063ffffffff16565b5050565b610a96848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a9c565b50505050565b610abb8273ffffffffffffffffffffffffffffffffffffffff16610ce7565b610b2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610b7c5780518252602082019150602081019050602083039250610b59565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bde576040519150601f19603f3d011682016040523d82523d6000602084013e610be3565b606091505b509150915081610c5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610ce157808060200190516020811015610c7a57600080fd5b8101908080519060200190929190505050610ce0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610d7e602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610d2957506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820df37e4e92a0fa7ca6431430afc43678f88458f3e52795e4f287b07f4321c149264736f6c63430005110032416c6c6f77616e636543726f776473616c653a20746f6b656e2077616c6c657420697320746865207a65726f206164647265737343726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100705760003560e01c8063bf5839031161004e578063bf5839031461012f578063bff99c6c1461015a578063ec8ac4d8146101b1578063fc0c546a146101f557610070565b80632c4e722e146100825780634042b66f146100ad578063521eb273146100d8575b61008061007b61024c565b610254565b005b34801561008e57600080fd5b506100976103df565b6040518082815260200191505060405180910390f35b3480156100b957600080fd5b506100c26103e9565b6040518082815260200191505060405180910390f35b3480156100e457600080fd5b506100ed6103f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013b57600080fd5b5061014461041d565b6040518082815260200191505060405180910390f35b34801561016657600080fd5b5061016f610622565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f3600480360360208110156101c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610254565b005b34801561020157600080fd5b5061020a61064c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166102d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506102fe8282610675565b600061030982610776565b90506103208260035461079490919063ffffffff16565b600381905550610330838261081c565b8273ffffffffffffffffffffffffffffffffffffffff1661034f61024c565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103ae838361082a565b6103b661082e565b6103c08383610899565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061061d61042a61064c565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104c857600080fd5b505afa1580156104dc573d6000803e3d6000fd5b505050506040513d60208110156104f257600080fd5b810190808051906020019092919050505061050b61064c565b73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156105dd57600080fd5b505afa1580156105f1573d6000803e3d6000fd5b505050506040513d602081101561060757600080fd5b810190808051906020019092919050505061089d565b905090565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610d54602a913960400191505060405180910390fd5b6000811415610772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600061078d600254836108b690919063ffffffff16565b9050919050565b600080828401905083811015610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610826828261093c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610896573d6000803e3d6000fd5b50565b5050565b60008183106108ac57816108ae565b825b905092915050565b6000808314156108c95760009050610936565b60008284029050828482816108da57fe5b0414610931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610d336021913960400191505060405180910390fd5b809150505b92915050565b610992600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838361096c61064c565b73ffffffffffffffffffffffffffffffffffffffff16610996909392919063ffffffff16565b5050565b610a96848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a9c565b50505050565b610abb8273ffffffffffffffffffffffffffffffffffffffff16610ce7565b610b2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610b7c5780518252602082019150602081019050602083039250610b59565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bde576040519150601f19603f3d011682016040523d82523d6000602084013e610be3565b606091505b509150915081610c5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610ce157808060200190516020811015610c7a57600080fd5b8101908080519060200190929190505050610ce0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610d7e602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610d2957506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820df37e4e92a0fa7ca6431430afc43678f88458f3e52795e4f287b07f4321c149264736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Arrays.json b/node_modules/@openzeppelin/contracts/build/contracts/Arrays.json new file mode 100644 index 0000000..c7a31a2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Arrays.json @@ -0,0 +1,1110 @@ +{ + "fileName": "Arrays.sol", + "contractName": "Arrays", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../math/Math.sol\";\n\n/**\n * @dev Collection of functions related to array types.\n */\nlibrary Arrays {\n /**\n * @dev Searches a sorted `array` and returns the first index that contains\n * a value greater or equal to `element`. If no such index exists (i.e. all\n * values in the array are strictly less than `element`), the array length is\n * returned. Time complexity O(log n).\n *\n * `array` is expected to be sorted in ascending order, and to contain no\n * repeated elements.\n */\n function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) {\n if (array.length == 0) {\n return 0;\n }\n\n uint256 low = 0;\n uint256 high = array.length;\n\n while (low < high) {\n uint256 mid = Math.average(low, high);\n\n // Note that mid will always be strictly less than high (i.e. it will be a valid array index)\n // because Math.average rounds down (it does integer division with truncation).\n if (array[mid] > element) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound.\n if (low > 0 && array[low - 1] == element) {\n return low - 1;\n } else {\n return low;\n }\n }\n}\n", + "sourcePath": "contracts/utils/Arrays.sol", + "sourceMap": "150:1326:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "150:1326:105:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/Arrays.sol", + "exportedSymbols": { + "Arrays": [ + 12899 + ] + }, + "id": 12900, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12816, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:105" + }, + { + "absolutePath": "contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 12817, + "nodeType": "ImportDirective", + "scope": 12900, + "sourceUnit": 2226, + "src": "58:26:105", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 12818, + "nodeType": "StructuredDocumentation", + "src": "86:63:105", + "text": " @dev Collection of functions related to array types." + }, + "fullyImplemented": true, + "id": 12899, + "linearizedBaseContracts": [ + 12899 + ], + "name": "Arrays", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 12897, + "nodeType": "Block", + "src": "680:794:105", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12829, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12822, + "src": "694:5:105", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 12830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "694:12:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "710:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "694:17:105", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 12836, + "nodeType": "IfStatement", + "src": "690:56:105", + "trueBody": { + "id": 12835, + "nodeType": "Block", + "src": "713:33:105", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "734:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 12828, + "id": 12834, + "nodeType": "Return", + "src": "727:8:105" + } + ] + } + }, + { + "assignments": [ + 12838 + ], + "declarations": [ + { + "constant": false, + "id": 12838, + "mutability": "mutable", + "name": "low", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12897, + "src": "756:11:105", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "756:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12840, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 12839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "770:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "756:15:105" + }, + { + "assignments": [ + 12842 + ], + "declarations": [ + { + "constant": false, + "id": 12842, + "mutability": "mutable", + "name": "high", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12897, + "src": "781:12:105", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "781:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12845, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12843, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12822, + "src": "796:5:105", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 12844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "796:12:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "781:27:105" + }, + { + "body": { + "id": 12875, + "nodeType": "Block", + "src": "838:395:105", + "statements": [ + { + "assignments": [ + 12850 + ], + "declarations": [ + { + "constant": false, + "id": 12850, + "mutability": "mutable", + "name": "mid", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12875, + "src": "852:11:105", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "852:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12856, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12853, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "879:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12854, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12842, + "src": "884:4:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 12851, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2225, + "src": "866:4:105", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2225_$", + "typeString": "type(library Math)" + } + }, + "id": 12852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "average", + "nodeType": "MemberAccess", + "referencedDeclaration": 2224, + "src": "866:12:105", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 12855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "866:23:105", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "852:37:105" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12857, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12822, + "src": "1106:5:105", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 12859, + "indexExpression": { + "argumentTypes": null, + "id": 12858, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12850, + "src": "1112:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1106:10:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 12860, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12824, + "src": "1119:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1106:20:105", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12873, + "nodeType": "Block", + "src": "1177:46:105", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 12867, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "1195:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12868, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12850, + "src": "1201:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 12869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1207:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1201:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1195:13:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12872, + "nodeType": "ExpressionStatement", + "src": "1195:13:105" + } + ] + }, + "id": 12874, + "nodeType": "IfStatement", + "src": "1102:121:105", + "trueBody": { + "id": 12866, + "nodeType": "Block", + "src": "1128:43:105", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 12862, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12842, + "src": "1146:4:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 12863, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12850, + "src": "1153:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1146:10:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12865, + "nodeType": "ExpressionStatement", + "src": "1146:10:105" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12846, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "826:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 12847, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12842, + "src": "832:4:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "826:10:105", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12876, + "nodeType": "WhileStatement", + "src": "819:414:105" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 12887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12877, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "1350:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1356:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1350:7:105", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12880, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12822, + "src": "1361:5:105", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 12884, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12881, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "1367:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 12882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1373:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1367:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1361:14:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 12885, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12824, + "src": "1379:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1361:25:105", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1350:36:105", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12895, + "nodeType": "Block", + "src": "1433:35:105", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12893, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "1454:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12828, + "id": 12894, + "nodeType": "Return", + "src": "1447:10:105" + } + ] + }, + "id": 12896, + "nodeType": "IfStatement", + "src": "1346:122:105", + "trueBody": { + "id": 12892, + "nodeType": "Block", + "src": "1388:39:105", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12888, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "1409:3:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 12889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1415:1:105", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1409:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12828, + "id": 12891, + "nodeType": "Return", + "src": "1402:14:105" + } + ] + } + } + ] + }, + "documentation": { + "id": 12819, + "nodeType": "StructuredDocumentation", + "src": "170:407:105", + "text": " @dev Searches a sorted `array` and returns the first index that contains\n a value greater or equal to `element`. If no such index exists (i.e. all\n values in the array are strictly less than `element`), the array length is\n returned. Time complexity O(log n).\n `array` is expected to be sorted in ascending order, and to contain no\n repeated elements." + }, + "id": 12898, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "findUpperBound", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12822, + "mutability": "mutable", + "name": "array", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12898, + "src": "606:23:105", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 12820, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "606:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12821, + "length": null, + "nodeType": "ArrayTypeName", + "src": "606:9:105", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12824, + "mutability": "mutable", + "name": "element", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12898, + "src": "631:15:105", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12823, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "631:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "605:42:105" + }, + "returnParameters": { + "id": 12828, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12827, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12898, + "src": "671:7:105", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:105", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "670:9:105" + }, + "scope": 12899, + "src": "582:892:105", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 12900, + "src": "150:1326:105" + } + ], + "src": "33:1444:105" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fe8218d52a0bf4764d0bccf63cb8ad4bece7b197d532a95fd2643b970523975664736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fe8218d52a0bf4764d0bccf63cb8ad4bece7b197d532a95fd2643b970523975664736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ArraysImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/ArraysImpl.json new file mode 100644 index 0000000..274b3dd --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ArraysImpl.json @@ -0,0 +1,464 @@ +{ + "fileName": "ArraysImpl.sol", + "contractName": "ArraysImpl", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/Arrays.sol\";\n\ncontract ArraysImpl {\n using Arrays for uint256[];\n\n uint256[] private _array;\n\n constructor (uint256[] memory array) public {\n _array = array;\n }\n\n function findUpperBound(uint256 element) external view returns (uint256) {\n return _array.findUpperBound(element);\n }\n}\n", + "sourcePath": "contracts/mocks/ArraysImpl.sol", + "sourceMap": "89:300:22:-:0;;;179:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;242:5;233:6;:14;;;;;;;;;;;;:::i;:::-;;179:75;89:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "89:300:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;324:7;350:30;372:7;350:6;:21;;:30;;;;:::i;:::-;343:37;;260:127;;;:::o;582:892:92:-;671:7;710:1;694:5;:12;;;;:17;690:56;;;734:1;727:8;;;;690:56;756:11;770:1;756:15;;781:12;796:5;:12;;;;781:27;;819:414;832:4;826:3;:10;819:414;;;852:11;866:23;879:3;884:4;866:12;:23::i;:::-;852:37;;1119:7;1106:5;1112:3;1106:10;;;;;;;;;;;;;;;;:20;1102:121;;;1153:3;1146:10;;1102:121;;;1207:1;1201:3;:7;1195:13;;1102:121;819:414;;;;1356:1;1350:3;:7;:36;;;;;1379:7;1361:5;1373:1;1367:3;:7;1361:14;;;;;;;;;;;;;;;;:25;1350:36;1346:122;;;1415:1;1409:3;:7;1402:14;;;;;;1346:122;1454:3;1447:10;;;;582:892;;;;;:::o;608:190:17:-;670:7;789:1;784;780;:5;;;;;;776:1;772;:5;;;;;;:13;771:19;;;;;;765:1;761;:5;;;;;;755:1;751;:5;;;;;;750:17;:41;743:48;;608:190;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "array", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "element", + "type": "uint256" + } + ], + "name": "findUpperBound", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ArraysImpl.sol", + "exportedSymbols": { + "ArraysImpl": [ + 3088 + ] + }, + "id": 3089, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3055, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:22" + }, + { + "absolutePath": "contracts/utils/Arrays.sol", + "file": "../utils/Arrays.sol", + "id": 3056, + "nodeType": "ImportDirective", + "scope": 3089, + "sourceUnit": 10986, + "src": "58:29:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3088, + "linearizedBaseContracts": [ + 3088 + ], + "name": "ArraysImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3060, + "libraryName": { + "contractScope": null, + "id": 3057, + "name": "Arrays", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10985, + "src": "121:6:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Arrays_$10985", + "typeString": "library Arrays" + } + }, + "nodeType": "UsingForDirective", + "src": "115:27:22", + "typeName": { + "baseType": { + "id": 3058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "132:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3059, + "length": null, + "nodeType": "ArrayTypeName", + "src": "132:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + { + "constant": false, + "id": 3063, + "mutability": "mutable", + "name": "_array", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3088, + "src": "148:24:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "148:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3062, + "length": null, + "nodeType": "ArrayTypeName", + "src": "148:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3073, + "nodeType": "Block", + "src": "223:31:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3069, + "name": "_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "233:6:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3070, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3066, + "src": "242:5:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "233:14:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 3072, + "nodeType": "ExpressionStatement", + "src": "233:14:22" + } + ] + }, + "documentation": null, + "id": 3074, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3066, + "mutability": "mutable", + "name": "array", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3074, + "src": "192:22:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "192:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3065, + "length": null, + "nodeType": "ArrayTypeName", + "src": "192:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "191:24:22" + }, + "returnParameters": { + "id": 3068, + "nodeType": "ParameterList", + "parameters": [], + "src": "223:0:22" + }, + "scope": 3088, + "src": "179:75:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3086, + "nodeType": "Block", + "src": "333:54:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3083, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3076, + "src": "372:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3081, + "name": "_array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "350:6:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 3082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "findUpperBound", + "nodeType": "MemberAccess", + "referencedDeclaration": 10984, + "src": "350:21:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256) view returns (uint256)" + } + }, + "id": 3084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3080, + "id": 3085, + "nodeType": "Return", + "src": "343:37:22" + } + ] + }, + "documentation": null, + "functionSelector": "33e3a58a", + "id": 3087, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "findUpperBound", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3076, + "mutability": "mutable", + "name": "element", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3087, + "src": "284:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3075, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "284:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "283:17:22" + }, + "returnParameters": { + "id": 3080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3079, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3087, + "src": "324:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3078, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "324:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "323:9:22" + }, + "scope": 3088, + "src": "260:127:22", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3089, + "src": "89:300:22" + } + ], + "src": "33:357:22" + }, + "bytecode": "0x608060405234801561001057600080fd5b506040516103243803806103248339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b8382019150602082018581111561006957600080fd5b825186602082028301116401000000008211171561008657600080fd5b8083526020830192505050908051906020019060200280838360005b838110156100bd5780820151818401526020810190506100a2565b5050505090500160405250505080600090805190602001906100e09291906100e7565b5050610159565b828054828255906000526020600020908101928215610123579160200282015b82811115610122578251825591602001919060010190610107565b5b5090506101309190610134565b5090565b61015691905b8082111561015257600081600090555060010161013a565b5090565b90565b6101bc806101686000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806333e3a58a14610030575b600080fd5b61005c6004803603602081101561004657600080fd5b8101908080359060200190929190505050610072565b6040518082815260200191505060405180910390f35b600061008882600061008f90919063ffffffff16565b9050919050565b600080838054905014156100a6576000905061013e565b60008090506000848054905090505b808210156100fe5760006100c98383610144565b9050848682815481106100d857fe5b906000526020600020015411156100f1578091506100f8565b6001810192505b506100b5565b60008211801561012657508385600184038154811061011957fe5b9060005260206000200154145b1561013857600182039250505061013e565b81925050505b92915050565b6000600280838161015157fe5b066002858161015c57fe5b06018161016557fe5b046002838161017057fe5b046002858161017b57fe5b04010190509291505056fea2646970667358221220912a229988a24187d287e9919fe641fd66af73d5b2312592065b23e30c10879e64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806333e3a58a14610030575b600080fd5b61005c6004803603602081101561004657600080fd5b8101908080359060200190929190505050610072565b6040518082815260200191505060405180910390f35b600061008882600061008f90919063ffffffff16565b9050919050565b600080838054905014156100a6576000905061013e565b60008090506000848054905090505b808210156100fe5760006100c98383610144565b9050848682815481106100d857fe5b906000526020600020015411156100f1578091506100f8565b6001810192505b506100b5565b60008211801561012657508385600184038154811061011957fe5b9060005260206000200154145b1561013857600182039250505061013e565b81925050505b92915050565b6000600280838161015157fe5b066002858161015c57fe5b06018161016557fe5b046002838161017057fe5b046002858161017b57fe5b04010190509291505056fea2646970667358221220912a229988a24187d287e9919fe641fd66af73d5b2312592065b23e30c10879e64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsale.json new file mode 100644 index 0000000..86c9204 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsale.json @@ -0,0 +1,1099 @@ +{ + "fileName": "CappedCrowdsale.sol", + "contractName": "CappedCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../Crowdsale.sol\";\n\n/**\n * @title CappedCrowdsale\n * @dev Crowdsale with a limit for total contributions.\n */\ncontract CappedCrowdsale is Crowdsale {\n using SafeMath for uint256;\n\n uint256 private _cap;\n\n /**\n * @dev Constructor, takes maximum amount of wei accepted in the crowdsale.\n * @param cap Max amount of wei to be contributed\n */\n constructor (uint256 cap) public {\n require(cap > 0, \"CappedCrowdsale: cap is 0\");\n _cap = cap;\n }\n\n /**\n * @return the cap of the crowdsale.\n */\n function cap() public view returns (uint256) {\n return _cap;\n }\n\n /**\n * @dev Checks whether the cap has been reached.\n * @return Whether the cap was reached\n */\n function capReached() public view returns (bool) {\n return weiRaised() >= _cap;\n }\n\n /**\n * @dev Extend parent behavior requiring purchase to respect the funding cap.\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n super._preValidatePurchase(beneficiary, weiAmount);\n require(weiRaised().add(weiAmount) <= _cap, \"CappedCrowdsale: cap exceeded\");\n }\n}\n", + "sourcePath": "contracts/crowdsale/validation/CappedCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "capReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/validation/CappedCrowdsale.sol", + "exportedSymbols": { + "CappedCrowdsale": [ + 2796 + ] + }, + "id": 2797, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2724, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:21" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2725, + "nodeType": "ImportDirective", + "scope": 2797, + "sourceUnit": 5300, + "src": "25:33:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 2726, + "nodeType": "ImportDirective", + "scope": 2797, + "sourceUnit": 2120, + "src": "59:26:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2727, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "205:9:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2728, + "nodeType": "InheritanceSpecifier", + "src": "205:9:21" + } + ], + "contractDependencies": [ + 26, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": "@title CappedCrowdsale\n@dev Crowdsale with a limit for total contributions.", + "fullyImplemented": false, + "id": 2796, + "linearizedBaseContracts": [ + 2796, + 2119, + 13820, + 26 + ], + "name": "CappedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2731, + "libraryName": { + "contractScope": null, + "id": 2729, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "227:8:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "221:27:21", + "typeName": { + "id": 2730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "240:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2733, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "254:20:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "254:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2749, + "nodeType": "Block", + "src": "464:82:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2739, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2735, + "src": "482:3:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "488:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "482:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43617070656443726f776473616c653a206361702069732030", + "id": 2742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "491:27:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64e5a6167e9149487c39484a18ce5d080c5288b2e26eed530ccbcf3220dc9f14", + "typeString": "literal_string \"CappedCrowdsale: cap is 0\"" + }, + "value": "CappedCrowdsale: cap is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64e5a6167e9149487c39484a18ce5d080c5288b2e26eed530ccbcf3220dc9f14", + "typeString": "literal_string \"CappedCrowdsale: cap is 0\"" + } + ], + "id": 2738, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "474:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:45:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2744, + "nodeType": "ExpressionStatement", + "src": "474:45:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2745, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "529:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2746, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2735, + "src": "536:3:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "529:10:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2748, + "nodeType": "ExpressionStatement", + "src": "529:10:21" + } + ] + }, + "documentation": "@dev Constructor, takes maximum amount of wei accepted in the crowdsale.\n@param cap Max amount of wei to be contributed", + "id": 2750, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2736, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2735, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 2750, + "src": "444:11:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2734, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "444:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:13:21" + }, + "returnParameters": { + "id": 2737, + "nodeType": "ParameterList", + "parameters": [], + "src": "464:0:21" + }, + "scope": 2796, + "src": "431:115:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2757, + "nodeType": "Block", + "src": "654:28:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2755, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "671:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2754, + "id": 2756, + "nodeType": "Return", + "src": "664:11:21" + } + ] + }, + "documentation": "@return the cap of the crowdsale.", + "id": 2758, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [], + "src": "621:2:21" + }, + "returnParameters": { + "id": 2754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2753, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "645:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "644:9:21" + }, + "scope": 2796, + "src": "609:73:21", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2768, + "nodeType": "Block", + "src": "849:43:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2763, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1967, + "src": "866:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "866:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2765, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "881:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "866:19:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2762, + "id": 2767, + "nodeType": "Return", + "src": "859:26:21" + } + ] + }, + "documentation": "@dev Checks whether the cap has been reached.\n@return Whether the cap was reached", + "id": 2769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "capReached", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2759, + "nodeType": "ParameterList", + "parameters": [], + "src": "819:2:21" + }, + "returnParameters": { + "id": 2762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2761, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2769, + "src": "843:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2760, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "843:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "842:6:21" + }, + "scope": 2796, + "src": "800:92:21", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2794, + "nodeType": "Block", + "src": "1172:153:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2779, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2771, + "src": "1209:11:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2780, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2773, + "src": "1222:9:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2776, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14034, + "src": "1182:5:21", + "typeDescriptions": { + "typeIdentifier": "t_super$_CappedCrowdsale_$2796", + "typeString": "contract super CappedCrowdsale" + } + }, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 2050, + "src": "1182:26:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 2781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1182:50:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2782, + "nodeType": "ExpressionStatement", + "src": "1182:50:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2787, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2773, + "src": "1266:9:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2784, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1967, + "src": "1250:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1250:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5139, + "src": "1250:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1250:26:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2789, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "1280:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1250:34:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43617070656443726f776473616c653a20636170206578636565646564", + "id": 2791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1286:31:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c4df665e7843abc0c81818f3beddf3ec071d2283193f32a87d6b4d1c758ed74", + "typeString": "literal_string \"CappedCrowdsale: cap exceeded\"" + }, + "value": "CappedCrowdsale: cap exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2c4df665e7843abc0c81818f3beddf3ec071d2283193f32a87d6b4d1c758ed74", + "typeString": "literal_string \"CappedCrowdsale: cap exceeded\"" + } + ], + "id": 2783, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1242:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1242:76:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2793, + "nodeType": "ExpressionStatement", + "src": "1242:76:21" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring purchase to respect the funding cap.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 2795, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2771, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2795, + "src": "1118:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1118:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2773, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2795, + "src": "1139:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2772, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1139:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1117:40:21" + }, + "returnParameters": { + "id": 2775, + "nodeType": "ParameterList", + "parameters": [], + "src": "1172:0:21" + }, + "scope": 2796, + "src": "1088:237:21", + "stateMutability": "view", + "superFunction": 2050, + "visibility": "internal" + } + ], + "scope": 2797, + "src": "177:1150:21" + } + ], + "src": "0:1328:21" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsaleImpl.json new file mode 100644 index 0000000..0502f9b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/CappedCrowdsaleImpl.json @@ -0,0 +1,513 @@ +{ + "fileName": "CappedCrowdsaleImpl.sol", + "contractName": "CappedCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/validation/CappedCrowdsale.sol\";\n\ncontract CappedCrowdsaleImpl is CappedCrowdsale {\n constructor (uint256 rate, address payable wallet, IERC20 token, uint256 cap)\n public\n Crowdsale(rate, wallet, token)\n CappedCrowdsale(cap)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/CappedCrowdsaleImpl.sol", + "sourceMap": "116:285:49:-;;;170:229;8:9:-1;5:2;;;30:1;27;20:12;5:2;170:229:49;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;170:229:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;326:3;281:4;287:6;295:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;488:1:21;482:3;:7;474:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:3;529:4;:10;;;;431:115;170:229:49;;;;116:285;;;;;;", + "deployedSourceMap": "116:285:49:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;116:285:49;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;609:73:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;609:73:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;800:92:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;800:92:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3910:605;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;3430:75::-;3467:7;3493:5;;3486:12;;3430:75;:::o;609:73:21:-;645:7;671:4;;664:11;;609:73;:::o;3568:85:13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;800:92:21:-;843:4;881;;866:11;:9;:11::i;:::-;:19;;859:26;;800:92;:::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;3106:76::-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;1088:237:21:-;1182:50;1209:11;1222:9;1182:26;:50::i;:::-;1280:4;;1250:26;1266:9;1250:11;:9;:11::i;:::-;:15;;:26;;;;:::i;:::-;:34;;1242:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:237;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;5057:376::-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "capReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/CappedCrowdsaleImpl.sol", + "exportedSymbols": { + "CappedCrowdsaleImpl": [ + 5437 + ] + }, + "id": 5438, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5412, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:49" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 5413, + "nodeType": "ImportDirective", + "scope": 5438, + "sourceUnit": 10217, + "src": "25:35:49", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/validation/CappedCrowdsale.sol", + "file": "../crowdsale/validation/CappedCrowdsale.sol", + "id": 5414, + "nodeType": "ImportDirective", + "scope": 5438, + "sourceUnit": 2797, + "src": "61:53:49", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5415, + "name": "CappedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2796, + "src": "148:15:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CappedCrowdsale_$2796", + "typeString": "contract CappedCrowdsale" + } + }, + "id": 5416, + "nodeType": "InheritanceSpecifier", + "src": "148:15:49" + } + ], + "contractDependencies": [ + 26, + 2119, + 2796, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5437, + "linearizedBaseContracts": [ + 5437, + 2796, + 2119, + 13820, + 26 + ], + "name": "CappedCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5435, + "nodeType": "Block", + "src": "335:64:49", + "statements": [] + }, + "documentation": null, + "id": 5436, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5427, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5418, + "src": "281:4:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5428, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5420, + "src": "287:6:49", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5429, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5422, + "src": "295:5:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 5430, + "modifierName": { + "argumentTypes": null, + "id": 5426, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "271:9:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "271:30:49" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 5432, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5424, + "src": "326:3:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5433, + "modifierName": { + "argumentTypes": null, + "id": 5431, + "name": "CappedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2796, + "src": "310:15:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_CappedCrowdsale_$2796_$", + "typeString": "type(contract CappedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "310:20:49" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5418, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 5436, + "src": "183:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "183:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5420, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 5436, + "src": "197:22:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5419, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "197:15:49", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5422, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5436, + "src": "221:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5421, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "221:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5424, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5436, + "src": "235:11:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "235:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "182:65:49" + }, + "returnParameters": { + "id": 5434, + "nodeType": "ParameterList", + "parameters": [], + "src": "335:0:49" + }, + "scope": 5437, + "src": "170:229:49", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5438, + "src": "116:285:49" + } + ], + "src": "0:402:49" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051610f53380380610f538339818101604052608081101561003357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508084848460016000806101000a81548160ff021916908315150217905550600083116100f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561017c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610f2e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610202576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f0a6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505060008111610304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43617070656443726f776473616c653a2063617020697320300000000000000081525060200191505060405180910390fd5b806004819055505050505050610beb8061031f6000396000f3fe6080604052600436106100705760003560e01c80634f9359451161004e5780634f93594514610103578063521eb27314610132578063ec8ac4d814610189578063fc0c546a146101cd57610070565b80632c4e722e14610082578063355274ea146100ad5780634042b66f146100d8575b61008061007b610224565b61022c565b005b34801561008e57600080fd5b506100976103b7565b6040518082815260200191505060405180910390f35b3480156100b957600080fd5b506100c26103c1565b6040518082815260200191505060405180910390f35b3480156100e457600080fd5b506100ed6103cb565b6040518082815260200191505060405180910390f35b34801561010f57600080fd5b506101186103d5565b604051808215151515815260200191505060405180910390f35b34801561013e57600080fd5b506101476103e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101cb6004803603602081101561019f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061022c565b005b3480156101d957600080fd5b506101e2610413565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166102ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506102d6828261043c565b60006102e1826104db565b90506102f8826003546104f990919063ffffffff16565b6003819055506103088382610581565b8273ffffffffffffffffffffffffffffffffffffffff16610327610224565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a3610386838361058f565b61038e610593565b61039883836105fe565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600454905090565b6000600354905090565b60006004546103e26103cb565b1015905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104468282610602565b600454610463826104556103cb565b6104f990919063ffffffff16565b11156104d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43617070656443726f776473616c653a2063617020657863656564656400000081525060200191505060405180910390fd5b5050565b60006104f26002548361070390919063ffffffff16565b9050919050565b600080828401905083811015610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61058b8282610789565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105fb573d6000803e3d6000fd5b50565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610b63602a913960400191505060405180910390fd5b60008114156106ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b6000808314156107165760009050610783565b600082840290508284828161072757fe5b041461077e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610b426021913960400191505060405180910390fd5b809150505b92915050565b6107d68282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107da9092919063ffffffff16565b5050565b6108a6838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108ab565b505050565b6108ca8273ffffffffffffffffffffffffffffffffffffffff16610af6565b61093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061098b5780518252602082019150602081019050602083039250610968565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109ed576040519150601f19603f3d011682016040523d82523d6000602084013e6109f2565b606091505b509150915081610a6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610af057808060200190516020811015610a8957600080fd5b8101908080519060200190929190505050610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610b8d602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610b3857506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582053f479939c346e4813bb748e0581a194641c79c15b21ecbd517de1cfad69c7c064736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100705760003560e01c80634f9359451161004e5780634f93594514610103578063521eb27314610132578063ec8ac4d814610189578063fc0c546a146101cd57610070565b80632c4e722e14610082578063355274ea146100ad5780634042b66f146100d8575b61008061007b610224565b61022c565b005b34801561008e57600080fd5b506100976103b7565b6040518082815260200191505060405180910390f35b3480156100b957600080fd5b506100c26103c1565b6040518082815260200191505060405180910390f35b3480156100e457600080fd5b506100ed6103cb565b6040518082815260200191505060405180910390f35b34801561010f57600080fd5b506101186103d5565b604051808215151515815260200191505060405180910390f35b34801561013e57600080fd5b506101476103e9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101cb6004803603602081101561019f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061022c565b005b3480156101d957600080fd5b506101e2610413565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166102ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506102d6828261043c565b60006102e1826104db565b90506102f8826003546104f990919063ffffffff16565b6003819055506103088382610581565b8273ffffffffffffffffffffffffffffffffffffffff16610327610224565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a3610386838361058f565b61038e610593565b61039883836105fe565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600454905090565b6000600354905090565b60006004546103e26103cb565b1015905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104468282610602565b600454610463826104556103cb565b6104f990919063ffffffff16565b11156104d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43617070656443726f776473616c653a2063617020657863656564656400000081525060200191505060405180910390fd5b5050565b60006104f26002548361070390919063ffffffff16565b9050919050565b600080828401905083811015610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61058b8282610789565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105fb573d6000803e3d6000fd5b50565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610b63602a913960400191505060405180910390fd5b60008114156106ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b6000808314156107165760009050610783565b600082840290508284828161072757fe5b041461077e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610b426021913960400191505060405180910390fd5b809150505b92915050565b6107d68282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107da9092919063ffffffff16565b5050565b6108a6838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108ab565b505050565b6108ca8273ffffffffffffffffffffffffffffffffffffffff16610af6565b61093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061098b5780518252602082019150602081019050602083039250610968565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109ed576040519150601f19603f3d011682016040523d82523d6000602084013e6109f2565b606091505b509150915081610a6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610af057808060200190516020811015610a8957600080fd5b8101908080519060200190929190505050610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610b8d602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610b3857506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582053f479939c346e4813bb748e0581a194641c79c15b21ecbd517de1cfad69c7c064736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/CapperRole.json b/node_modules/@openzeppelin/contracts/build/contracts/CapperRole.json new file mode 100644 index 0000000..9492009 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/CapperRole.json @@ -0,0 +1,1356 @@ +{ + "fileName": "CapperRole.sol", + "contractName": "CapperRole", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../Roles.sol\";\n\ncontract CapperRole is Context {\n using Roles for Roles.Role;\n\n event CapperAdded(address indexed account);\n event CapperRemoved(address indexed account);\n\n Roles.Role private _cappers;\n\n constructor () internal {\n _addCapper(_msgSender());\n }\n\n modifier onlyCapper() {\n require(isCapper(_msgSender()), \"CapperRole: caller does not have the Capper role\");\n _;\n }\n\n function isCapper(address account) public view returns (bool) {\n return _cappers.has(account);\n }\n\n function addCapper(address account) public onlyCapper {\n _addCapper(account);\n }\n\n function renounceCapper() public {\n _removeCapper(_msgSender());\n }\n\n function _addCapper(address account) internal {\n _cappers.add(account);\n emit CapperAdded(account);\n }\n\n function _removeCapper(address account) internal {\n _cappers.remove(account);\n emit CapperRemoved(account);\n }\n}\n", + "sourcePath": "contracts/access/roles/CapperRole.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCapper", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/roles/CapperRole.sol", + "exportedSymbols": { + "CapperRole": [ + 1301 + ] + }, + "id": 1302, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1196, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 1197, + "nodeType": "ImportDirective", + "scope": 1302, + "sourceUnit": 27, + "src": "25:31:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 1198, + "nodeType": "ImportDirective", + "scope": 1302, + "sourceUnit": 1195, + "src": "57:22:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1199, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "104:7:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1200, + "nodeType": "InheritanceSpecifier", + "src": "104:7:7" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1301, + "linearizedBaseContracts": [ + 1301, + 26 + ], + "name": "CapperRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1203, + "libraryName": { + "contractScope": null, + "id": 1201, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "124:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "118:27:7", + "typeName": { + "contractScope": null, + "id": 1202, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "134:10:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1207, + "name": "CapperAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 1206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1205, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1207, + "src": "169:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "169:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "168:25:7" + }, + "src": "151:43:7" + }, + { + "anonymous": false, + "documentation": null, + "id": 1211, + "name": "CapperRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 1210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1209, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1211, + "src": "219:23:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "219:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "218:25:7" + }, + "src": "199:45:7" + }, + { + "constant": false, + "id": 1213, + "name": "_cappers", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "250:27:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1212, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "250:10:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1221, + "nodeType": "Block", + "src": "308:41:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1217, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "329:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1216, + "name": "_addCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1284, + "src": "318:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "318:24:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1220, + "nodeType": "ExpressionStatement", + "src": "318:24:7" + } + ] + }, + "documentation": null, + "id": 1222, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1214, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:2:7" + }, + "returnParameters": { + "id": 1215, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:0:7" + }, + "scope": 1301, + "src": "284:65:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1233, + "nodeType": "Block", + "src": "377:111:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1226, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "404:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "404:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1225, + "name": "isCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1247, + "src": "395:8:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "395:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "436170706572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043617070657220726f6c65", + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "419:50:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ed3a4f8e7ffb1c3b157de1bb9793099f4d91d7142cd1011c31806dcc61ac0368", + "typeString": "literal_string \"CapperRole: caller does not have the Capper role\"" + }, + "value": "CapperRole: caller does not have the Capper role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ed3a4f8e7ffb1c3b157de1bb9793099f4d91d7142cd1011c31806dcc61ac0368", + "typeString": "literal_string \"CapperRole: caller does not have the Capper role\"" + } + ], + "id": 1224, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "387:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "387:83:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1231, + "nodeType": "ExpressionStatement", + "src": "387:83:7" + }, + { + "id": 1232, + "nodeType": "PlaceholderStatement", + "src": "480:1:7" + } + ] + }, + "documentation": null, + "id": 1234, + "name": "onlyCapper", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1223, + "nodeType": "ParameterList", + "parameters": [], + "src": "374:2:7" + }, + "src": "355:133:7", + "visibility": "internal" + }, + { + "body": { + "id": 1246, + "nodeType": "Block", + "src": "556:45:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1243, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1236, + "src": "586:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1241, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1213, + "src": "573:8:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1242, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "573:12:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "573:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1240, + "id": 1245, + "nodeType": "Return", + "src": "566:28:7" + } + ] + }, + "documentation": null, + "id": 1247, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1236, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "512:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1235, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "511:17:7" + }, + "returnParameters": { + "id": 1240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1239, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "550:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1238, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "550:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "549:6:7" + }, + "scope": 1301, + "src": "494:107:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1258, + "nodeType": "Block", + "src": "661:36:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1249, + "src": "682:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1254, + "name": "_addCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1284, + "src": "671:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "671:19:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1257, + "nodeType": "ExpressionStatement", + "src": "671:19:7" + } + ] + }, + "documentation": null, + "id": 1259, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1252, + "modifierName": { + "argumentTypes": null, + "id": 1251, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "650:10:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "650:10:7" + } + ], + "name": "addCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1249, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1259, + "src": "626:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:17:7" + }, + "returnParameters": { + "id": 1253, + "nodeType": "ParameterList", + "parameters": [], + "src": "661:0:7" + }, + "scope": 1301, + "src": "607:90:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1267, + "nodeType": "Block", + "src": "736:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1263, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "760:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1262, + "name": "_removeCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1300, + "src": "746:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "746:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1266, + "nodeType": "ExpressionStatement", + "src": "746:27:7" + } + ] + }, + "documentation": null, + "id": 1268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1260, + "nodeType": "ParameterList", + "parameters": [], + "src": "726:2:7" + }, + "returnParameters": { + "id": 1261, + "nodeType": "ParameterList", + "parameters": [], + "src": "736:0:7" + }, + "scope": 1301, + "src": "703:77:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1283, + "nodeType": "Block", + "src": "832:73:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1276, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1270, + "src": "855:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1273, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1213, + "src": "842:8:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "842:12:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:21:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1278, + "nodeType": "ExpressionStatement", + "src": "842:21:7" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1280, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1270, + "src": "890:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1279, + "name": "CapperAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1207, + "src": "878:11:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "878:20:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1282, + "nodeType": "EmitStatement", + "src": "873:25:7" + } + ] + }, + "documentation": null, + "id": 1284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1270, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "806:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "805:17:7" + }, + "returnParameters": { + "id": 1272, + "nodeType": "ParameterList", + "parameters": [], + "src": "832:0:7" + }, + "scope": 1301, + "src": "786:119:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1299, + "nodeType": "Block", + "src": "960:78:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1292, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1286, + "src": "986:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1289, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1213, + "src": "970:8:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "970:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:24:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "970:24:7" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1296, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1286, + "src": "1023:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1295, + "name": "CapperRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1211, + "src": "1009:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:22:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1298, + "nodeType": "EmitStatement", + "src": "1004:27:7" + } + ] + }, + "documentation": null, + "id": 1300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1286, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1300, + "src": "934:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "934:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "933:17:7" + }, + "returnParameters": { + "id": 1288, + "nodeType": "ParameterList", + "parameters": [], + "src": "960:0:7" + }, + "scope": 1301, + "src": "911:127:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1302, + "src": "81:959:7" + } + ], + "src": "0:1041:7" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/CapperRoleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/CapperRoleMock.json new file mode 100644 index 0000000..2eef25e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/CapperRoleMock.json @@ -0,0 +1,492 @@ +{ + "fileName": "CapperRoleMock.sol", + "contractName": "CapperRoleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/CapperRole.sol\";\n\ncontract CapperRoleMock is CapperRole {\n function removeCapper(address account) public {\n _removeCapper(account);\n }\n\n function onlyCapperMock() public view onlyCapper {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Causes a compilation error if super._removeCapper is not internal\n function _removeCapper(address account) internal {\n super._removeCapper(account);\n }\n}\n", + "sourcePath": "contracts/mocks/CapperRoleMock.sol", + "sourceMap": "67:423:50:-;;;318:24:7;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;67:423:50;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:7:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;67:423:50:-;;;;;;;", + "deployedSourceMap": "67:423:50:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67:423:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:107:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;111:85:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;111:85:50;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77:7;;;:::i;:::-;;607:90;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;202:113:50;;;:::i;:::-;;494:107:7;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;111:85:50:-;167:22;181:7;167:13;:22::i;:::-;111:85;:::o;703:77:7:-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;607:90::-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;202:113:50:-;395:22:7;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113:50:o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;394:94:50:-;453:28;473:7;453:19;:28::i;:::-;394:94;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;786:119:7:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCapper", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyCapperMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/CapperRoleMock.sol", + "exportedSymbols": { + "CapperRoleMock": [ + 5471 + ] + }, + "id": 5472, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5439, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:50" + }, + { + "absolutePath": "contracts/access/roles/CapperRole.sol", + "file": "../access/roles/CapperRole.sol", + "id": 5440, + "nodeType": "ImportDirective", + "scope": 5472, + "sourceUnit": 1302, + "src": "25:40:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5441, + "name": "CapperRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1301, + "src": "94:10:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CapperRole_$1301", + "typeString": "contract CapperRole" + } + }, + "id": 5442, + "nodeType": "InheritanceSpecifier", + "src": "94:10:50" + } + ], + "contractDependencies": [ + 26, + 1301 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5471, + "linearizedBaseContracts": [ + 5471, + 1301, + 26 + ], + "name": "CapperRoleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5451, + "nodeType": "Block", + "src": "157:39:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5448, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5444, + "src": "181:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5447, + "name": "_removeCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5470 + ], + "referencedDeclaration": 5470, + "src": "167:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "167:22:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5450, + "nodeType": "ExpressionStatement", + "src": "167:22:50" + } + ] + }, + "documentation": null, + "id": 5452, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 5452, + "src": "133:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "133:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "132:17:50" + }, + "returnParameters": { + "id": 5446, + "nodeType": "ParameterList", + "parameters": [], + "src": "157:0:50" + }, + "scope": 5471, + "src": "111:85:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5457, + "nodeType": "Block", + "src": "251:64:50", + "statements": [] + }, + "documentation": null, + "id": 5458, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5455, + "modifierName": { + "argumentTypes": null, + "id": 5454, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "240:10:50", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "240:10:50" + } + ], + "name": "onlyCapperMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5453, + "nodeType": "ParameterList", + "parameters": [], + "src": "225:2:50" + }, + "returnParameters": { + "id": 5456, + "nodeType": "ParameterList", + "parameters": [], + "src": "251:0:50" + }, + "scope": 5471, + "src": "202:113:50", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5469, + "nodeType": "Block", + "src": "443:45:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5466, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5460, + "src": "473:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5463, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14090, + "src": "453:5:50", + "typeDescriptions": { + "typeIdentifier": "t_super$_CapperRoleMock_$5471", + "typeString": "contract super CapperRoleMock" + } + }, + "id": 5465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_removeCapper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1300, + "src": "453:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "453:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5468, + "nodeType": "ExpressionStatement", + "src": "453:28:50" + } + ] + }, + "documentation": null, + "id": 5470, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5460, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 5470, + "src": "417:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:17:50" + }, + "returnParameters": { + "id": 5462, + "nodeType": "ParameterList", + "parameters": [], + "src": "443:0:50" + }, + "scope": 5471, + "src": "394:94:50", + "stateMutability": "nonpayable", + "superFunction": 1300, + "visibility": "internal" + } + ], + "scope": 5472, + "src": "67:423:50" + } + ], + "src": "0:491:50" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b61040d1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167fa7555c95b69d4f5cc847881feb4ab2883a1921319e34fa2043747b793d65b36e60405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108a66022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61064d806102596000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063395645611461005c5780633f4a6484146100b85780635d5576f8146100fc5780638dfbcf3614610106578063d1e07bcb1461014a575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b604051808215151515815260200191505060405180910390f35b6100fa600480360360208110156100ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610171565b005b61010461017d565b005b6101486004803603602081101561011c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061018f565b005b610152610200565b005b600061016a82600061026790919063ffffffff16565b9050919050565b61017a81610345565b50565b61018d610188610351565b610345565b565b61019f61019a610351565b610154565b6101f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b6101fd81610359565b50565b61021061020b610351565b610154565b610265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105c76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61034e816103b3565b50565b600033905090565b61036d81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fa7555c95b69d4f5cc847881feb4ab2883a1921319e34fa2043747b793d65b36e60405160405180910390a250565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f427400d279c506df610224b22ecce89b693fc1865864113f21c8d19c1f0c2a3b60405160405180910390a250565b6104178282610267565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f28282610267565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105a66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373436170706572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043617070657220726f6c65a265627a7a72315820b737eacdae2f19d98f75911ca541b36c6c1ad78dfb538b52c84fba839d4c773064736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063395645611461005c5780633f4a6484146100b85780635d5576f8146100fc5780638dfbcf3614610106578063d1e07bcb1461014a575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b604051808215151515815260200191505060405180910390f35b6100fa600480360360208110156100ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610171565b005b61010461017d565b005b6101486004803603602081101561011c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061018f565b005b610152610200565b005b600061016a82600061026790919063ffffffff16565b9050919050565b61017a81610345565b50565b61018d610188610351565b610345565b565b61019f61019a610351565b610154565b6101f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b6101fd81610359565b50565b61021061020b610351565b610154565b610265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105c76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61034e816103b3565b50565b600033905090565b61036d81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fa7555c95b69d4f5cc847881feb4ab2883a1921319e34fa2043747b793d65b36e60405160405180910390a250565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f427400d279c506df610224b22ecce89b693fc1865864113f21c8d19c1f0c2a3b60405160405180910390a250565b6104178282610267565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f28282610267565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105a66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373436170706572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043617070657220726f6c65a265627a7a72315820b737eacdae2f19d98f75911ca541b36c6c1ad78dfb538b52c84fba839d4c773064736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrow.json b/node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrow.json new file mode 100644 index 0000000..07a15e2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrow.json @@ -0,0 +1,614 @@ +{ + "fileName": "ConditionalEscrow.sol", + "contractName": "ConditionalEscrow", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./Escrow.sol\";\n\n/**\n * @title ConditionalEscrow\n * @dev Base abstract escrow to only allow withdrawal if a condition is met.\n * @dev Intended usage: See {Escrow}. Same usage guidelines apply here.\n */\nabstract contract ConditionalEscrow is Escrow {\n /**\n * @dev Returns whether an address is allowed to withdraw their funds. To be\n * implemented by derived contracts.\n * @param payee The destination address of the funds.\n */\n function withdrawalAllowed(address payee) public view virtual returns (bool);\n\n function withdraw(address payable payee) public virtual override {\n require(withdrawalAllowed(payee), \"ConditionalEscrow: payee is not allowed to withdraw\");\n super.withdraw(payee);\n }\n}\n", + "sourcePath": "contracts/payment/escrow/ConditionalEscrow.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "withdrawalAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/payment/escrow/ConditionalEscrow.sol", + "exportedSymbols": { + "ConditionalEscrow": [ + 6548 + ] + }, + "id": 6549, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6515, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:70" + }, + { + "absolutePath": "contracts/payment/escrow/Escrow.sol", + "file": "./Escrow.sol", + "id": 6516, + "nodeType": "ImportDirective", + "scope": 6549, + "sourceUnit": 6654, + "src": "58:22:70", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6518, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6653, + "src": "306:6:70", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "id": 6519, + "nodeType": "InheritanceSpecifier", + "src": "306:6:70" + } + ], + "contractDependencies": [ + 22, + 1576, + 6653 + ], + "contractKind": "contract", + "documentation": { + "id": 6517, + "nodeType": "StructuredDocumentation", + "src": "82:184:70", + "text": " @title ConditionalEscrow\n @dev Base abstract escrow to only allow withdrawal if a condition is met.\n @dev Intended usage: See {Escrow}. Same usage guidelines apply here." + }, + "fullyImplemented": false, + "id": 6548, + "linearizedBaseContracts": [ + 6548, + 6653, + 1576, + 22 + ], + "name": "ConditionalEscrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 6520, + "nodeType": "StructuredDocumentation", + "src": "319:191:70", + "text": " @dev Returns whether an address is allowed to withdraw their funds. To be\n implemented by derived contracts.\n @param payee The destination address of the funds." + }, + "functionSelector": "685ca194", + "id": 6527, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6522, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6527, + "src": "542:13:70", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "542:7:70", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "541:15:70" + }, + "returnParameters": { + "id": 6526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6525, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6527, + "src": "586:4:70", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6524, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "586:4:70", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "585:6:70" + }, + "scope": 6548, + "src": "515:77:70", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 6652 + ], + "body": { + "id": 6546, + "nodeType": "Block", + "src": "663:136:70", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6535, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "699:5:70", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6534, + "name": "withdrawalAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6527, + "src": "681:17:70", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 6536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "681:24:70", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177", + "id": 6537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "707:53:70", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ab85541a5cdc1a44c30d5b8b58432efbc37ed9be825439a16d2e39ce610814a", + "typeString": "literal_string \"ConditionalEscrow: payee is not allowed to withdraw\"" + }, + "value": "ConditionalEscrow: payee is not allowed to withdraw" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8ab85541a5cdc1a44c30d5b8b58432efbc37ed9be825439a16d2e39ce610814a", + "typeString": "literal_string \"ConditionalEscrow: payee is not allowed to withdraw\"" + } + ], + "id": 6533, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "673:7:70", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "673:88:70", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6539, + "nodeType": "ExpressionStatement", + "src": "673:88:70" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6543, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "786:5:70", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 6540, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "771:5:70", + "typeDescriptions": { + "typeIdentifier": "t_super$_ConditionalEscrow_$6548", + "typeString": "contract super ConditionalEscrow" + } + }, + "id": 6542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 6652, + "src": "771:14:70", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 6544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "771:21:70", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6545, + "nodeType": "ExpressionStatement", + "src": "771:21:70" + } + ] + }, + "documentation": null, + "functionSelector": "51cff8d9", + "id": 6547, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6531, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "654:8:70" + }, + "parameters": { + "id": 6530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6529, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6547, + "src": "616:21:70", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "616:15:70", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "615:23:70" + }, + "returnParameters": { + "id": 6532, + "nodeType": "ParameterList", + "parameters": [], + "src": "663:0:70" + }, + "scope": 6548, + "src": "598:201:70", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 6549, + "src": "267:534:70" + } + ], + "src": "33:769:70" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrowMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrowMock.json new file mode 100644 index 0000000..835f075 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ConditionalEscrowMock.json @@ -0,0 +1,636 @@ +{ + "fileName": "ConditionalEscrowMock.sol", + "contractName": "ConditionalEscrowMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../payment/escrow/ConditionalEscrow.sol\";\n\n// mock class using ConditionalEscrow\ncontract ConditionalEscrowMock is ConditionalEscrow {\n mapping(address => bool) private _allowed;\n\n function setAllowed(address payee, bool allowed) public {\n _allowed[payee] = allowed;\n }\n\n function withdrawalAllowed(address payee) public view override returns (bool) {\n return _allowed[payee];\n }\n}\n", + "sourcePath": "contracts/mocks/ConditionalEscrowMock.sol", + "sourceMap": "147:329:23:-:0;;;;;;;;;;;;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;147:329:23;;768:104:0;821:15;855:10;848:17;;768:104;:::o;147:329:23:-;;;;;;;", + "deployedSourceMap": "147:329:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;253:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;598:201:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;357:117:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1689:145:7;;;;;;;;;;;;;:::i;:::-;;1066:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1091:105:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1338:205:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;253:98:23;337:7;319:8;:15;328:5;319:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;253:98;;:::o;598:201:66:-;681:24;699:5;681:17;:24::i;:::-;673:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771:21;786:5;771:14;:21::i;:::-;598:201;:::o;357:117:23:-;429:4;452:8;:15;461:5;452:15;;;;;;;;;;;;;;;;;;;;;;;;;445:22;;357:117;;;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;1066:77::-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;1091:105:67:-;1147:7;1173:9;:16;1183:5;1173:16;;;;;;;;;;;;;;;;1166:23;;1091:105;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;1338:205:67:-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1413:14:67::1;1430:9;1413:26;;1468:28;1489:6;1468:9;:16;1478:5;1468:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;1449:9;:16;1459:5;1449:16;;;;;;;;;;;;;;;:47;;;;1522:5;1512:24;;;1529:6;1512:24;;;;;;;;;;;;;;;;;;1339:1:7;1338:205:67::0;:::o;1981:224::-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2057:15:67::1;2075:9;:16;2085:5;2075:16;;;;;;;;;;;;;;;;2057:34;;2121:1;2102:9;:16;2112:5;2102:16;;;;;;;;;;;;;;;:20;;;;2133:24;2149:7;2133:5;:15;;;;:24;;;;:::i;:::-;2183:5;2173:25;;;2190:7;2173:25;;;;;;;;;;;;;;;;;;1339:1:7;1981:224:67::0;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;2245:391:91:-;2359:6;2342:4;2334:21;;;:31;;2326:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:12;2506:9;:14;;2529:6;2506:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:54;;;2559:7;2551:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:391;;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "name": "setAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "withdrawalAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ConditionalEscrowMock.sol", + "exportedSymbols": { + "ConditionalEscrowMock": [ + 3125 + ] + }, + "id": 3126, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3090, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:23" + }, + { + "absolutePath": "contracts/payment/escrow/ConditionalEscrow.sol", + "file": "../payment/escrow/ConditionalEscrow.sol", + "id": 3091, + "nodeType": "ImportDirective", + "scope": 3126, + "sourceUnit": 6321, + "src": "58:49:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3092, + "name": "ConditionalEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6320, + "src": "181:17:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConditionalEscrow_$6320", + "typeString": "contract ConditionalEscrow" + } + }, + "id": 3093, + "nodeType": "InheritanceSpecifier", + "src": "181:17:23" + } + ], + "contractDependencies": [ + 26, + 1562, + 6320, + 6425 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3125, + "linearizedBaseContracts": [ + 3125, + 6320, + 6425, + 1562, + 26 + ], + "name": "ConditionalEscrowMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3097, + "mutability": "mutable", + "name": "_allowed", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3125, + "src": "205:41:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 3096, + "keyType": { + "id": 3094, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "213:7:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "205:24:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 3095, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "224:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3110, + "nodeType": "Block", + "src": "309:42:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3104, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "319:8:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3106, + "indexExpression": { + "argumentTypes": null, + "id": 3105, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3099, + "src": "328:5:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "319:15:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3107, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "337:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "319:25:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3109, + "nodeType": "ExpressionStatement", + "src": "319:25:23" + } + ] + }, + "documentation": null, + "functionSelector": "4697f05d", + "id": 3111, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowed", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3099, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3111, + "src": "273:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3098, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "273:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3101, + "mutability": "mutable", + "name": "allowed", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3111, + "src": "288:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3100, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "288:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "272:29:23" + }, + "returnParameters": { + "id": 3103, + "nodeType": "ParameterList", + "parameters": [], + "src": "309:0:23" + }, + "scope": 3125, + "src": "253:98:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 6299 + ], + "body": { + "id": 3123, + "nodeType": "Block", + "src": "435:39:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3119, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "452:8:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3121, + "indexExpression": { + "argumentTypes": null, + "id": 3120, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3113, + "src": "461:5:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "452:15:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3118, + "id": 3122, + "nodeType": "Return", + "src": "445:22:23" + } + ] + }, + "documentation": null, + "functionSelector": "685ca194", + "id": 3124, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3115, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "411:8:23" + }, + "parameters": { + "id": 3114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3113, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3124, + "src": "384:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "384:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "383:15:23" + }, + "returnParameters": { + "id": 3118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3117, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3124, + "src": "429:4:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3116, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "429:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:6:23" + }, + "scope": 3125, + "src": "357:117:23", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3126, + "src": "147:329:23" + } + ], + "src": "33:444:23" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b610e4d806100db6000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b146101ae578063e3a9db1a14610205578063f2fde38b1461026a578063f340fa01146102bb5761007b565b80634697f05d1461008057806351cff8d9146100dd578063685ca1941461012e578063715018a614610197575b600080fd5b34801561008c57600080fd5b506100db600480360360408110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506102ff565b005b3480156100e957600080fd5b5061012c6004803603602081101561010057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061035a565b005b34801561013a57600080fd5b5061017d6004803603602081101561015157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103c4565b604051808215151515815260200191505060405180910390f35b3480156101a357600080fd5b506101ac61041a565b005b3480156101ba57600080fd5b506101c36105a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021157600080fd5b506102546004803603602081101561022857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cb565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b506102b96004803603602081101561028d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610614565b005b6102fd600480360360208110156102d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610821565b005b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610363816103c4565b6103b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180610de56033913960400191505060405180910390fd5b6103c1816109d6565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610422610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061c610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610d856026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610829610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061094181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bab90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b6109de610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b51818373ffffffffffffffffffffffffffffffffffffffff16610c3390919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b600033905090565b600080828401905083811015610c29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b803073ffffffffffffffffffffffffffffffffffffffff16311015610cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610d20576040519150601f19603f3d011682016040523d82523d6000602084013e610d25565b606091505b5050905080610d7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610dab603a913960400191505060405180910390fd5b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177a26469706673582212207d0f657f8b0841c4dfc4d398534f4bac6c3e79bb297cb47ef28afe87cad80f3964736f6c63430006090033", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b146101ae578063e3a9db1a14610205578063f2fde38b1461026a578063f340fa01146102bb5761007b565b80634697f05d1461008057806351cff8d9146100dd578063685ca1941461012e578063715018a614610197575b600080fd5b34801561008c57600080fd5b506100db600480360360408110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506102ff565b005b3480156100e957600080fd5b5061012c6004803603602081101561010057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061035a565b005b34801561013a57600080fd5b5061017d6004803603602081101561015157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103c4565b604051808215151515815260200191505060405180910390f35b3480156101a357600080fd5b506101ac61041a565b005b3480156101ba57600080fd5b506101c36105a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021157600080fd5b506102546004803603602081101561022857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cb565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b506102b96004803603602081101561028d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610614565b005b6102fd600480360360208110156102d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610821565b005b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610363816103c4565b6103b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180610de56033913960400191505060405180910390fd5b6103c1816109d6565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610422610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61061c610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610763576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610d856026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610829610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061094181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bab90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b6109de610ba3565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b51818373ffffffffffffffffffffffffffffffffffffffff16610c3390919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b600033905090565b600080828401905083811015610c29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b803073ffffffffffffffffffffffffffffffffffffffff16311015610cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610d20576040519150601f19603f3d011682016040523d82523d6000602084013e610d25565b606091505b5050905080610d7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610dab603a913960400191505060405180910390fd5b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177a26469706673582212207d0f657f8b0841c4dfc4d398534f4bac6c3e79bb297cb47ef28afe87cad80f3964736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Context.json b/node_modules/@openzeppelin/contracts/build/contracts/Context.json new file mode 100644 index 0000000..d7be22b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Context.json @@ -0,0 +1,278 @@ +{ + "fileName": "Context.sol", + "contractName": "Context", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address payable) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes memory) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return msg.data;\n }\n}\n", + "sourcePath": "contracts/GSN/Context.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [], + "ast": { + "absolutePath": "contracts/GSN/Context.sol", + "exportedSymbols": { + "Context": [ + 22 + ] + }, + "id": 23, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:0" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 22, + "linearizedBaseContracts": [ + 22 + ], + "name": "Context", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 9, + "nodeType": "Block", + "src": "660:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "677:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "677:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 5, + "id": 8, + "nodeType": "Return", + "src": "670:17:0" + } + ] + }, + "documentation": null, + "id": 10, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "609:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10, + "src": "643:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "643:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "642:17:0" + }, + "scope": 22, + "src": "590:104:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 20, + "nodeType": "Block", + "src": "765:165:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 15, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "775:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 16, + "nodeType": "ExpressionStatement", + "src": "775:4:0" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 17, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "915:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "915:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 14, + "id": 19, + "nodeType": "Return", + "src": "908:15:0" + } + ] + }, + "documentation": null, + "id": 21, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [], + "src": "717:2:0" + }, + "returnParameters": { + "id": 14, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 21, + "src": "751:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "751:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "750:14:0" + }, + "scope": 22, + "src": "700:230:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 23, + "src": "558:374:0" + } + ], + "src": "33:900:0" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ContextMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ContextMock.json new file mode 100644 index 0000000..c865293 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ContextMock.json @@ -0,0 +1,963 @@ +{ + "fileName": "ContextMock.sol", + "contractName": "ContextMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\n\ncontract ContextMock is Context {\n event Sender(address sender);\n\n function msgSender() public {\n emit Sender(_msgSender());\n }\n\n event Data(bytes data, uint256 integerValue, string stringValue);\n\n function msgData(uint256 integerValue, string memory stringValue) public {\n emit Data(_msgData(), integerValue, stringValue);\n }\n}\n\ncontract ContextMockCaller {\n function callSender(ContextMock context) public {\n context.msgSender();\n }\n\n function callData(ContextMock context, uint256 integerValue, string memory stringValue) public {\n context.msgData(integerValue, stringValue);\n }\n}\n", + "sourcePath": "contracts/mocks/ContextMock.sol", + "sourceMap": "88:360:24:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "88:360:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;308:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;161:70;;;:::i;:::-;;308:138;396:43;401:10;:8;:10::i;:::-;413:12;427:11;396:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;308:138;;:::o;161:70::-;204:20;211:12;:10;:12::i;:::-;204:20;;;;;;;;;;;;;;;;;;;;;;161:70::o;878:230:0:-;929:12;1093:8;;1086:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;878:230;:::o;768:104::-;821:15;855:10;848:17;;768:104;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "integerValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "stringValue", + "type": "string" + } + ], + "name": "Data", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "Sender", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "integerValue", + "type": "uint256" + }, + { + "internalType": "string", + "name": "stringValue", + "type": "string" + } + ], + "name": "msgData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "msgSender", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ContextMock.sol", + "exportedSymbols": { + "ContextMock": [ + 3167 + ], + "ContextMockCaller": [ + 3196 + ] + }, + "id": 3197, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3127, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:24" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 3128, + "nodeType": "ImportDirective", + "scope": 3197, + "sourceUnit": 27, + "src": "58:28:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3129, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "112:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 3130, + "nodeType": "InheritanceSpecifier", + "src": "112:7:24" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3167, + "linearizedBaseContracts": [ + 3167, + 26 + ], + "name": "ContextMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 3134, + "name": "Sender", + "nodeType": "EventDefinition", + "parameters": { + "id": 3133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3132, + "indexed": false, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3134, + "src": "139:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "139:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "138:16:24" + }, + "src": "126:29:24" + }, + { + "body": { + "id": 3142, + "nodeType": "Block", + "src": "189:42:24", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3138, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "211:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 3139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "211:12:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3137, + "name": "Sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3134, + "src": "204:6:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "204:20:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3141, + "nodeType": "EmitStatement", + "src": "199:25:24" + } + ] + }, + "documentation": null, + "functionSelector": "d737d0c7", + "id": 3143, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "msgSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3135, + "nodeType": "ParameterList", + "parameters": [], + "src": "179:2:24" + }, + "returnParameters": { + "id": 3136, + "nodeType": "ParameterList", + "parameters": [], + "src": "189:0:24" + }, + "scope": 3167, + "src": "161:70:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 3151, + "name": "Data", + "nodeType": "EventDefinition", + "parameters": { + "id": 3150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3145, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3151, + "src": "248:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3144, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "248:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3147, + "indexed": false, + "mutability": "mutable", + "name": "integerValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3151, + "src": "260:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "260:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3149, + "indexed": false, + "mutability": "mutable", + "name": "stringValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3151, + "src": "282:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3148, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "282:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "247:54:24" + }, + "src": "237:65:24" + }, + { + "body": { + "id": 3165, + "nodeType": "Block", + "src": "381:65:24", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3159, + "name": "_msgData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "401:8:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () view returns (bytes memory)" + } + }, + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "401:10:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3161, + "name": "integerValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3153, + "src": "413:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3162, + "name": "stringValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3155, + "src": "427:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3158, + "name": "Data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3151, + "src": "396:4:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes memory,uint256,string memory)" + } + }, + "id": 3163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "396:43:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3164, + "nodeType": "EmitStatement", + "src": "391:48:24" + } + ] + }, + "documentation": null, + "functionSelector": "376bf262", + "id": 3166, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "msgData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "mutability": "mutable", + "name": "integerValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3166, + "src": "325:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "325:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3155, + "mutability": "mutable", + "name": "stringValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3166, + "src": "347:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3154, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "347:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "324:49:24" + }, + "returnParameters": { + "id": 3157, + "nodeType": "ParameterList", + "parameters": [], + "src": "381:0:24" + }, + "scope": 3167, + "src": "308:138:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3197, + "src": "88:360:24" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3196, + "linearizedBaseContracts": [ + 3196 + ], + "name": "ContextMockCaller", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3177, + "nodeType": "Block", + "src": "531:36:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3172, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3169, + "src": "541:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "id": 3174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "msgSender", + "nodeType": "MemberAccess", + "referencedDeclaration": 3143, + "src": "541:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 3175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "541:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3176, + "nodeType": "ExpressionStatement", + "src": "541:19:24" + } + ] + }, + "documentation": null, + "functionSelector": "3207ad96", + "id": 3178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3169, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3178, + "src": "503:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + }, + "typeName": { + "contractScope": null, + "id": 3168, + "name": "ContextMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3167, + "src": "503:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "502:21:24" + }, + "returnParameters": { + "id": 3171, + "nodeType": "ParameterList", + "parameters": [], + "src": "531:0:24" + }, + "scope": 3196, + "src": "483:84:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3194, + "nodeType": "Block", + "src": "668:59:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3190, + "name": "integerValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3182, + "src": "694:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3191, + "name": "stringValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3184, + "src": "708:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3187, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3180, + "src": "678:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "id": 3189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "msgData", + "nodeType": "MemberAccess", + "referencedDeclaration": 3166, + "src": "678:15:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory) external" + } + }, + "id": 3192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "678:42:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3193, + "nodeType": "ExpressionStatement", + "src": "678:42:24" + } + ] + }, + "documentation": null, + "functionSelector": "00860459", + "id": 3195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3180, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "591:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + }, + "typeName": { + "contractScope": null, + "id": 3179, + "name": "ContextMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3167, + "src": "591:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3182, + "mutability": "mutable", + "name": "integerValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "612:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "612:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3184, + "mutability": "mutable", + "name": "stringValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "634:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3183, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "634:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "590:70:24" + }, + "returnParameters": { + "id": 3186, + "nodeType": "ParameterList", + "parameters": [], + "src": "668:0:24" + }, + "scope": 3196, + "src": "573:154:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3197, + "src": "450:279:24" + } + ], + "src": "33:697:24" + }, + "bytecode": "0x608060405234801561001057600080fd5b5061031d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063376bf2621461003b578063d737d0c714610100575b600080fd5b6100fe6004803603604081101561005157600080fd5b81019080803590602001909291908035906020019064010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460018302840111640100000000831117156100ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061010a565b005b610108610226565b005b7faf235354a0a47c91ee171961326335cb2d1a8e55b8a89859b0e61eb049e50ea0610133610292565b8383604051808060200184815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15050565b7fd6558c3ed910d959271054471fd1c326679d9fece99c5091b00ed89627cf2bfc61024f6102df565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905090565b60003390509056fea264697066735822122040ee438fd37a9ade19ae2c4519e67ca74165df8fde59d8cc7597851362d0c95f64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063376bf2621461003b578063d737d0c714610100575b600080fd5b6100fe6004803603604081101561005157600080fd5b81019080803590602001909291908035906020019064010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460018302840111640100000000831117156100ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061010a565b005b610108610226565b005b7faf235354a0a47c91ee171961326335cb2d1a8e55b8a89859b0e61eb049e50ea0610133610292565b8383604051808060200184815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561017f578082015181840152602081019050610164565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15050565b7fd6558c3ed910d959271054471fd1c326679d9fece99c5091b00ed89627cf2bfc61024f6102df565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905090565b60003390509056fea264697066735822122040ee438fd37a9ade19ae2c4519e67ca74165df8fde59d8cc7597851362d0c95f64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ContextMockCaller.json b/node_modules/@openzeppelin/contracts/build/contracts/ContextMockCaller.json new file mode 100644 index 0000000..7f86c9a --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ContextMockCaller.json @@ -0,0 +1,936 @@ +{ + "fileName": "ContextMock.sol", + "contractName": "ContextMockCaller", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\n\ncontract ContextMock is Context {\n event Sender(address sender);\n\n function msgSender() public {\n emit Sender(_msgSender());\n }\n\n event Data(bytes data, uint256 integerValue, string stringValue);\n\n function msgData(uint256 integerValue, string memory stringValue) public {\n emit Data(_msgData(), integerValue, stringValue);\n }\n}\n\ncontract ContextMockCaller {\n function callSender(ContextMock context) public {\n context.msgSender();\n }\n\n function callData(ContextMock context, uint256 integerValue, string memory stringValue) public {\n context.msgData(integerValue, stringValue);\n }\n}\n", + "sourcePath": "contracts/mocks/ContextMock.sol", + "sourceMap": "450:279:24:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "450:279:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;573:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;483:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;573:154;678:7;:15;;;694:12;708:11;678:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;573:154;;;:::o;483:84::-;541:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;483:84;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ContextMock", + "name": "context", + "type": "address" + }, + { + "internalType": "uint256", + "name": "integerValue", + "type": "uint256" + }, + { + "internalType": "string", + "name": "stringValue", + "type": "string" + } + ], + "name": "callData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ContextMock", + "name": "context", + "type": "address" + } + ], + "name": "callSender", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ContextMock.sol", + "exportedSymbols": { + "ContextMock": [ + 3167 + ], + "ContextMockCaller": [ + 3196 + ] + }, + "id": 3197, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3127, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:24" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 3128, + "nodeType": "ImportDirective", + "scope": 3197, + "sourceUnit": 27, + "src": "58:28:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3129, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "112:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 3130, + "nodeType": "InheritanceSpecifier", + "src": "112:7:24" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3167, + "linearizedBaseContracts": [ + 3167, + 26 + ], + "name": "ContextMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 3134, + "name": "Sender", + "nodeType": "EventDefinition", + "parameters": { + "id": 3133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3132, + "indexed": false, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3134, + "src": "139:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "139:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "138:16:24" + }, + "src": "126:29:24" + }, + { + "body": { + "id": 3142, + "nodeType": "Block", + "src": "189:42:24", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3138, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "211:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 3139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "211:12:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3137, + "name": "Sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3134, + "src": "204:6:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "204:20:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3141, + "nodeType": "EmitStatement", + "src": "199:25:24" + } + ] + }, + "documentation": null, + "functionSelector": "d737d0c7", + "id": 3143, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "msgSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3135, + "nodeType": "ParameterList", + "parameters": [], + "src": "179:2:24" + }, + "returnParameters": { + "id": 3136, + "nodeType": "ParameterList", + "parameters": [], + "src": "189:0:24" + }, + "scope": 3167, + "src": "161:70:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 3151, + "name": "Data", + "nodeType": "EventDefinition", + "parameters": { + "id": 3150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3145, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3151, + "src": "248:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3144, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "248:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3147, + "indexed": false, + "mutability": "mutable", + "name": "integerValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3151, + "src": "260:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "260:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3149, + "indexed": false, + "mutability": "mutable", + "name": "stringValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3151, + "src": "282:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3148, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "282:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "247:54:24" + }, + "src": "237:65:24" + }, + { + "body": { + "id": 3165, + "nodeType": "Block", + "src": "381:65:24", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3159, + "name": "_msgData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "401:8:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () view returns (bytes memory)" + } + }, + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "401:10:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3161, + "name": "integerValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3153, + "src": "413:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3162, + "name": "stringValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3155, + "src": "427:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3158, + "name": "Data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3151, + "src": "396:4:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes memory,uint256,string memory)" + } + }, + "id": 3163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "396:43:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3164, + "nodeType": "EmitStatement", + "src": "391:48:24" + } + ] + }, + "documentation": null, + "functionSelector": "376bf262", + "id": 3166, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "msgData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "mutability": "mutable", + "name": "integerValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3166, + "src": "325:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "325:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3155, + "mutability": "mutable", + "name": "stringValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3166, + "src": "347:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3154, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "347:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "324:49:24" + }, + "returnParameters": { + "id": 3157, + "nodeType": "ParameterList", + "parameters": [], + "src": "381:0:24" + }, + "scope": 3167, + "src": "308:138:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3197, + "src": "88:360:24" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3196, + "linearizedBaseContracts": [ + 3196 + ], + "name": "ContextMockCaller", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3177, + "nodeType": "Block", + "src": "531:36:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3172, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3169, + "src": "541:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "id": 3174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "msgSender", + "nodeType": "MemberAccess", + "referencedDeclaration": 3143, + "src": "541:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 3175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "541:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3176, + "nodeType": "ExpressionStatement", + "src": "541:19:24" + } + ] + }, + "documentation": null, + "functionSelector": "3207ad96", + "id": 3178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3169, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3178, + "src": "503:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + }, + "typeName": { + "contractScope": null, + "id": 3168, + "name": "ContextMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3167, + "src": "503:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "502:21:24" + }, + "returnParameters": { + "id": 3171, + "nodeType": "ParameterList", + "parameters": [], + "src": "531:0:24" + }, + "scope": 3196, + "src": "483:84:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3194, + "nodeType": "Block", + "src": "668:59:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3190, + "name": "integerValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3182, + "src": "694:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3191, + "name": "stringValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3184, + "src": "708:11:24", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3187, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3180, + "src": "678:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "id": 3189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "msgData", + "nodeType": "MemberAccess", + "referencedDeclaration": 3166, + "src": "678:15:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory) external" + } + }, + "id": 3192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "678:42:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3193, + "nodeType": "ExpressionStatement", + "src": "678:42:24" + } + ] + }, + "documentation": null, + "functionSelector": "00860459", + "id": 3195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3180, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "591:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + }, + "typeName": { + "contractScope": null, + "id": 3179, + "name": "ContextMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3167, + "src": "591:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3182, + "mutability": "mutable", + "name": "integerValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "612:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "612:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3184, + "mutability": "mutable", + "name": "stringValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3195, + "src": "634:25:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3183, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "634:6:24", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "590:70:24" + }, + "returnParameters": { + "id": 3186, + "nodeType": "ParameterList", + "parameters": [], + "src": "668:0:24" + }, + "scope": 3196, + "src": "573:154:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3197, + "src": "450:279:24" + } + ], + "src": "33:697:24" + }, + "bytecode": "0x608060405234801561001057600080fd5b506102d9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100355760003560e01c80628604591461003a5780633207ad961461011f575b600080fd5b61011d6004803603606081101561005057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561009757600080fd5b8201836020820111156100a957600080fd5b803590602001918460018302840111640100000000831117156100cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610163565b005b6101616004803603602081101561013557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610240565b005b8273ffffffffffffffffffffffffffffffffffffffff1663376bf26283836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101d65780820151818401526020810190506101bb565b50505050905090810190601f1680156102035780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561022357600080fd5b505af1158015610237573d6000803e3d6000fd5b50505050505050565b8073ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561028857600080fd5b505af115801561029c573d6000803e3d6000fd5b505050505056fea26469706673582212207b109789c4bc686a3383e9e15c6c7d6df350863cf2a5226b60db758585b999a064736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100355760003560e01c80628604591461003a5780633207ad961461011f575b600080fd5b61011d6004803603606081101561005057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561009757600080fd5b8201836020820111156100a957600080fd5b803590602001918460018302840111640100000000831117156100cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610163565b005b6101616004803603602081101561013557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610240565b005b8273ffffffffffffffffffffffffffffffffffffffff1663376bf26283836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101d65780820151818401526020810190506101bb565b50505050905090810190601f1680156102035780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561022357600080fd5b505af1158015610237573d6000803e3d6000fd5b50505050505050565b8073ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561028857600080fd5b505af115801561029c573d6000803e3d6000fd5b505050505056fea26469706673582212207b109789c4bc686a3383e9e15c6c7d6df350863cf2a5226b60db758585b999a064736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Counters.json b/node_modules/@openzeppelin/contracts/build/contracts/Counters.json new file mode 100644 index 0000000..3303b6e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Counters.json @@ -0,0 +1,607 @@ +{ + "fileName": "Counters.sol", + "contractName": "Counters", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n * directly accessed.\n */\nlibrary Counters {\n using SafeMath for uint256;\n\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n // The {SafeMath} overflow check can be skipped here, see the comment at the top\n counter._value += 1;\n }\n\n function decrement(Counter storage counter) internal {\n counter._value = counter._value.sub(1);\n }\n}\n", + "sourcePath": "contracts/utils/Counters.sol", + "sourceMap": "662:848:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "662:848:106:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/Counters.sol", + "exportedSymbols": { + "Counters": [ + 12949 + ] + }, + "id": 12950, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12901, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:106" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 12902, + "nodeType": "ImportDirective", + "scope": 12950, + "sourceUnit": 2422, + "src": "58:30:106", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 12903, + "nodeType": "StructuredDocumentation", + "src": "90:571:106", + "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`\n Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n directly accessed." + }, + "fullyImplemented": true, + "id": 12949, + "linearizedBaseContracts": [ + 12949 + ], + "name": "Counters", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 12906, + "libraryName": { + "contractScope": null, + "id": 12904, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "691:8:106", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "685:27:106", + "typeName": { + "id": 12905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "704:7:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "Counters.Counter", + "id": 12909, + "members": [ + { + "constant": false, + "id": 12908, + "mutability": "mutable", + "name": "_value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12909, + "src": "1057:14:106", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1057:7:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Counter", + "nodeType": "StructDefinition", + "scope": 12949, + "src": "718:374:106", + "visibility": "public" + }, + { + "body": { + "id": 12919, + "nodeType": "Block", + "src": "1172:38:106", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12916, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12911, + "src": "1189:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 12917, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 12908, + "src": "1189:14:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12915, + "id": 12918, + "nodeType": "Return", + "src": "1182:21:106" + } + ] + }, + "documentation": null, + "id": 12920, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "current", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12911, + "mutability": "mutable", + "name": "counter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12920, + "src": "1115:23:106", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "contractScope": null, + "id": 12910, + "name": "Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "1115:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1114:25:106" + }, + "returnParameters": { + "id": 12915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12914, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12920, + "src": "1163:7:106", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1163:7:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1162:9:106" + }, + "scope": 12949, + "src": "1098:112:106", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12931, + "nodeType": "Block", + "src": "1269:125:106", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12925, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12922, + "src": "1368:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 12927, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 12908, + "src": "1368:14:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 12928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1386:1:106", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1368:19:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12930, + "nodeType": "ExpressionStatement", + "src": "1368:19:106" + } + ] + }, + "documentation": null, + "id": 12932, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increment", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12922, + "mutability": "mutable", + "name": "counter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12932, + "src": "1235:23:106", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "contractScope": null, + "id": 12921, + "name": "Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "1235:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1234:25:106" + }, + "returnParameters": { + "id": 12924, + "nodeType": "ParameterList", + "parameters": [], + "src": "1269:0:106" + }, + "scope": 12949, + "src": "1216:178:106", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12947, + "nodeType": "Block", + "src": "1453:55:106", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 12945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12937, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12934, + "src": "1463:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 12939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 12908, + "src": "1463:14:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 12943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1499:1:106", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12940, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12934, + "src": "1480:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter storage pointer" + } + }, + "id": 12941, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 12908, + "src": "1480:14:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "1480:18:106", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 12944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1480:21:106", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1463:38:106", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12946, + "nodeType": "ExpressionStatement", + "src": "1463:38:106" + } + ] + }, + "documentation": null, + "id": 12948, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decrement", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12935, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12934, + "mutability": "mutable", + "name": "counter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12948, + "src": "1419:23:106", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "contractScope": null, + "id": 12933, + "name": "Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "1419:7:106", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1418:25:106" + }, + "returnParameters": { + "id": 12936, + "nodeType": "ParameterList", + "parameters": [], + "src": "1453:0:106" + }, + "scope": 12949, + "src": "1400:108:106", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 12950, + "src": "662:848:106" + } + ], + "src": "33:1478:106" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ce1440575f0cce3847723b4e82ac5ec67ddf2edb2dc2aa809fa8347255ba9c0e64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ce1440575f0cce3847723b4e82ac5ec67ddf2edb2dc2aa809fa8347255ba9c0e64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/CountersImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/CountersImpl.json new file mode 100644 index 0000000..0906a1c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/CountersImpl.json @@ -0,0 +1,452 @@ +{ + "fileName": "CountersImpl.sol", + "contractName": "CountersImpl", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/Counters.sol\";\n\ncontract CountersImpl {\n using Counters for Counters.Counter;\n\n Counters.Counter private _counter;\n\n function current() public view returns (uint256) {\n return _counter.current();\n }\n\n function increment() public {\n _counter.increment();\n }\n\n function decrement() public {\n _counter.decrement();\n }\n}\n", + "sourcePath": "contracts/mocks/CountersImpl.sol", + "sourceMap": "91:345:25:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "91:345:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:65;;;:::i;:::-;;201:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;298:65;;;:::i;:::-;;369;407:20;:8;:18;:20::i;:::-;369:65::o;201:91::-;241:7;267:18;:8;:16;:18::i;:::-;260:25;;201:91;:::o;298:65::-;336:20;:8;:18;:20::i;:::-;298:65::o;1400:108:93:-;1480:21;1499:1;1480:7;:14;;;:18;;:21;;;;:::i;:::-;1463:7;:14;;:38;;;;1400:108;:::o;1098:112::-;1163:7;1189;:14;;;1182:21;;1098:112;;;:::o;1216:178::-;1386:1;1368:7;:14;;;:19;;;;;;;;;;;1216:178;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o;1725:187::-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o", + "abi": [ + { + "inputs": [], + "name": "current", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decrement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "increment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/CountersImpl.sol", + "exportedSymbols": { + "CountersImpl": [ + 3233 + ] + }, + "id": 3234, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3198, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:25" + }, + { + "absolutePath": "contracts/utils/Counters.sol", + "file": "../utils/Counters.sol", + "id": 3199, + "nodeType": "ImportDirective", + "scope": 3234, + "sourceUnit": 11036, + "src": "58:31:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3233, + "linearizedBaseContracts": [ + 3233 + ], + "name": "CountersImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3202, + "libraryName": { + "contractScope": null, + "id": 3200, + "name": "Counters", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11035, + "src": "125:8:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Counters_$11035", + "typeString": "library Counters" + } + }, + "nodeType": "UsingForDirective", + "src": "119:36:25", + "typeName": { + "contractScope": null, + "id": 3201, + "name": "Counters.Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10995, + "src": "138:16:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$10995_storage_ptr", + "typeString": "struct Counters.Counter" + } + } + }, + { + "constant": false, + "id": 3204, + "mutability": "mutable", + "name": "_counter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3233, + "src": "161:33:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$10995_storage", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "contractScope": null, + "id": 3203, + "name": "Counters.Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10995, + "src": "161:16:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$10995_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3213, + "nodeType": "Block", + "src": "250:42:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3209, + "name": "_counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3204, + "src": "267:8:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$10995_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 3210, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 11006, + "src": "267:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$10995_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$10995_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 3211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "267:18:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3208, + "id": 3212, + "nodeType": "Return", + "src": "260:25:25" + } + ] + }, + "documentation": null, + "functionSelector": "9fa6a6e3", + "id": 3214, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "current", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3205, + "nodeType": "ParameterList", + "parameters": [], + "src": "217:2:25" + }, + "returnParameters": { + "id": 3208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3207, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3214, + "src": "241:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "241:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "240:9:25" + }, + "scope": 3233, + "src": "201:91:25", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3222, + "nodeType": "Block", + "src": "326:37:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3217, + "name": "_counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3204, + "src": "336:8:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$10995_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 3219, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "increment", + "nodeType": "MemberAccess", + "referencedDeclaration": 11018, + "src": "336:18:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$10995_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$10995_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer)" + } + }, + "id": 3220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "336:20:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3221, + "nodeType": "ExpressionStatement", + "src": "336:20:25" + } + ] + }, + "documentation": null, + "functionSelector": "d09de08a", + "id": 3223, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increment", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3215, + "nodeType": "ParameterList", + "parameters": [], + "src": "316:2:25" + }, + "returnParameters": { + "id": 3216, + "nodeType": "ParameterList", + "parameters": [], + "src": "326:0:25" + }, + "scope": 3233, + "src": "298:65:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3231, + "nodeType": "Block", + "src": "397:37:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3226, + "name": "_counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3204, + "src": "407:8:25", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$10995_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 3228, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "decrement", + "nodeType": "MemberAccess", + "referencedDeclaration": 11034, + "src": "407:18:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$10995_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$10995_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer)" + } + }, + "id": 3229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "407:20:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3230, + "nodeType": "ExpressionStatement", + "src": "407:20:25" + } + ] + }, + "documentation": null, + "functionSelector": "2baeceb7", + "id": 3232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decrement", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3224, + "nodeType": "ParameterList", + "parameters": [], + "src": "387:2:25" + }, + "returnParameters": { + "id": 3225, + "nodeType": "ParameterList", + "parameters": [], + "src": "397:0:25" + }, + "scope": 3233, + "src": "369:65:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3234, + "src": "91:345:25" + } + ], + "src": "33:404:25" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610228806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632baeceb7146100465780639fa6a6e314610050578063d09de08a1461006e575b600080fd5b61004e610078565b005b610058610084565b6040518082815260200191505060405180910390f35b610076610095565b005b61008260006100a1565b565b600061009060006100c4565b905090565b61009f60006100d2565b565b6100b9600182600001546100e890919063ffffffff16565b816000018190555050565b600081600001549050919050565b6001816000016000828254019250508190555050565b600061012a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610132565b905092915050565b60008383111582906101df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101a4578082015181840152602081019050610189565b50505050905090810190601f1680156101d15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea2646970667358221220c531933f1043914f7b0d5406635777b4654bfac4d7754ec889c70c638441ced064736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632baeceb7146100465780639fa6a6e314610050578063d09de08a1461006e575b600080fd5b61004e610078565b005b610058610084565b6040518082815260200191505060405180910390f35b610076610095565b005b61008260006100a1565b565b600061009060006100c4565b905090565b61009f60006100d2565b565b6100b9600182600001546100e890919063ffffffff16565b816000018190555050565b600081600001549050919050565b6001816000016000828254019250508190555050565b600061012a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610132565b905092915050565b60008383111582906101df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101a4578082015181840152602081019050610189565b50505050905090810190601f1680156101d15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fea2646970667358221220c531933f1043914f7b0d5406635777b4654bfac4d7754ec889c70c638441ced064736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Create2.json b/node_modules/@openzeppelin/contracts/build/contracts/Create2.json new file mode 100644 index 0000000..e763fc5 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Create2.json @@ -0,0 +1,1657 @@ +{ + "fileName": "Create2.sol", + "contractName": "Create2", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n * `CREATE2` can be used to compute in advance the address where a smart\n * contract will be deployed, which allows for interesting new mechanisms known\n * as 'counterfactual interactions'.\n *\n * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n * information.\n */\nlibrary Create2 {\n /**\n * @dev Deploys a contract using `CREATE2`. The address where the contract\n * will be deployed can be known in advance via {computeAddress}.\n *\n * The bytecode for a contract can be obtained from Solidity with\n * `type(contractName).creationCode`.\n *\n * Requirements:\n *\n * - `bytecode` must not be empty.\n * - `salt` must have not been used for `bytecode` already.\n * - the factory must have a balance of at least `amount`.\n * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.\n */\n function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address) {\n address addr;\n require(address(this).balance >= amount, \"Create2: insufficient balance\");\n require(bytecode.length != 0, \"Create2: bytecode length is zero\");\n // solhint-disable-next-line no-inline-assembly\n assembly {\n addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)\n }\n require(addr != address(0), \"Create2: Failed on deploy\");\n return addr;\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n * `bytecodeHash` or `salt` will result in a new destination address.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {\n return computeAddress(salt, bytecodeHash, address(this));\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address) {\n bytes32 _data = keccak256(\n abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHash)\n );\n return address(uint256(_data));\n }\n}\n", + "sourcePath": "contracts/utils/Create2.sol", + "sourceMap": "426:2012:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "426:2012:107:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/Create2.sol", + "exportedSymbols": { + "Create2": [ + 13057 + ] + }, + "id": 13058, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12951, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:107" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 12952, + "nodeType": "StructuredDocumentation", + "src": "58:367:107", + "text": " @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n `CREATE2` can be used to compute in advance the address where a smart\n contract will be deployed, which allows for interesting new mechanisms known\n as 'counterfactual interactions'.\n See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n information." + }, + "fullyImplemented": true, + "id": 13057, + "linearizedBaseContracts": [ + 13057 + ], + "name": "Create2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 12999, + "nodeType": "Block", + "src": "1109:439:107", + "statements": [ + { + "assignments": [ + 12965 + ], + "declarations": [ + { + "constant": false, + "id": 12965, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12999, + "src": "1119:12:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12964, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1119:7:107", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12966, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1119:12:107" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12970, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1157:4:107", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Create2_$13057", + "typeString": "library Create2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Create2_$13057", + "typeString": "library Create2" + } + ], + "id": 12969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1149:7:107", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1149:7:107", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1149:13:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1149:21:107", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 12973, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12955, + "src": "1174:6:107", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1149:31:107", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "437265617465323a20696e73756666696369656e742062616c616e6365", + "id": 12975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1182:31:107", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca", + "typeString": "literal_string \"Create2: insufficient balance\"" + }, + "value": "Create2: insufficient balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca", + "typeString": "literal_string \"Create2: insufficient balance\"" + } + ], + "id": 12967, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1141:7:107", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1141:73:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12977, + "nodeType": "ExpressionStatement", + "src": "1141:73:107" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 12979, + "name": "bytecode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12959, + "src": "1232:8:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 12980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1232:15:107", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 12981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1251:1:107", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1232:20:107", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "437265617465323a2062797465636f6465206c656e677468206973207a65726f", + "id": 12983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1254:34:107", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0", + "typeString": "literal_string \"Create2: bytecode length is zero\"" + }, + "value": "Create2: bytecode length is zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0", + "typeString": "literal_string \"Create2: bytecode length is zero\"" + } + ], + "id": 12978, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1224:7:107", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1224:65:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12985, + "nodeType": "ExpressionStatement", + "src": "1224:65:107" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1364:91:107", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1378:67:107", + "value": { + "arguments": [ + { + "name": "amount", + "nodeType": "YulIdentifier", + "src": "1394:6:107" + }, + { + "arguments": [ + { + "name": "bytecode", + "nodeType": "YulIdentifier", + "src": "1406:8:107" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1416:4:107", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1402:3:107" + }, + "nodeType": "YulFunctionCall", + "src": "1402:19:107" + }, + { + "arguments": [ + { + "name": "bytecode", + "nodeType": "YulIdentifier", + "src": "1429:8:107" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1423:5:107" + }, + "nodeType": "YulFunctionCall", + "src": "1423:15:107" + }, + { + "name": "salt", + "nodeType": "YulIdentifier", + "src": "1440:4:107" + } + ], + "functionName": { + "name": "create2", + "nodeType": "YulIdentifier", + "src": "1386:7:107" + }, + "nodeType": "YulFunctionCall", + "src": "1386:59:107" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "1378:4:107" + } + ] + } + ] + }, + "evmVersion": "petersburg", + "externalReferences": [ + { + "declaration": 12965, + "isOffset": false, + "isSlot": false, + "src": "1378:4:107", + "valueSize": 1 + }, + { + "declaration": 12955, + "isOffset": false, + "isSlot": false, + "src": "1394:6:107", + "valueSize": 1 + }, + { + "declaration": 12959, + "isOffset": false, + "isSlot": false, + "src": "1406:8:107", + "valueSize": 1 + }, + { + "declaration": 12959, + "isOffset": false, + "isSlot": false, + "src": "1429:8:107", + "valueSize": 1 + }, + { + "declaration": 12957, + "isOffset": false, + "isSlot": false, + "src": "1440:4:107", + "valueSize": 1 + } + ], + "id": 12986, + "nodeType": "InlineAssembly", + "src": "1355:100:107" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12988, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12965, + "src": "1472:4:107", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12991, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:1:107", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1480:7:107", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1480:7:107", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1480:10:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1472:18:107", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "437265617465323a204661696c6564206f6e206465706c6f79", + "id": 12994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1492:27:107", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676", + "typeString": "literal_string \"Create2: Failed on deploy\"" + }, + "value": "Create2: Failed on deploy" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676", + "typeString": "literal_string \"Create2: Failed on deploy\"" + } + ], + "id": 12987, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1464:7:107", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1464:56:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12996, + "nodeType": "ExpressionStatement", + "src": "1464:56:107" + }, + { + "expression": { + "argumentTypes": null, + "id": 12997, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12965, + "src": "1537:4:107", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 12963, + "id": 12998, + "nodeType": "Return", + "src": "1530:11:107" + } + ] + }, + "documentation": { + "id": 12953, + "nodeType": "StructuredDocumentation", + "src": "448:560:107", + "text": " @dev Deploys a contract using `CREATE2`. The address where the contract\n will be deployed can be known in advance via {computeAddress}.\n The bytecode for a contract can be obtained from Solidity with\n `type(contractName).creationCode`.\n Requirements:\n - `bytecode` must not be empty.\n - `salt` must have not been used for `bytecode` already.\n - the factory must have a balance of at least `amount`.\n - if `amount` is non-zero, `bytecode` must have a `payable` constructor." + }, + "id": 13000, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deploy", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12955, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13000, + "src": "1029:14:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1029:7:107", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12957, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13000, + "src": "1045:12:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12956, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1045:7:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12959, + "mutability": "mutable", + "name": "bytecode", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13000, + "src": "1059:21:107", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12958, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1059:5:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1028:53:107" + }, + "returnParameters": { + "id": 12963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12962, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13000, + "src": "1100:7:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1100:7:107", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1099:9:107" + }, + "scope": 13057, + "src": "1013:535:107", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13019, + "nodeType": "Block", + "src": "1844:73:107", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13011, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13003, + "src": "1876:4:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 13012, + "name": "bytecodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13005, + "src": "1882:12:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13015, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1904:4:107", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Create2_$13057", + "typeString": "library Create2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Create2_$13057", + "typeString": "library Create2" + } + ], + "id": 13014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1896:7:107", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1896:7:107", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1896:13:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13010, + "name": "computeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13020, + 13056 + ], + "referencedDeclaration": 13056, + "src": "1861:14:107", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 13017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1861:49:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 13009, + "id": 13018, + "nodeType": "Return", + "src": "1854:56:107" + } + ] + }, + "documentation": { + "id": 13001, + "nodeType": "StructuredDocumentation", + "src": "1554:193:107", + "text": " @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n `bytecodeHash` or `salt` will result in a new destination address." + }, + "id": 13020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13003, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13020, + "src": "1776:12:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13002, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1776:7:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13005, + "mutability": "mutable", + "name": "bytecodeHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13020, + "src": "1790:20:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13004, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1790:7:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1775:36:107" + }, + "returnParameters": { + "id": 13009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13008, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13020, + "src": "1835:7:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13007, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1835:7:107", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1834:9:107" + }, + "scope": 13057, + "src": "1752:165:107", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13055, + "nodeType": "Block", + "src": "2270:166:107", + "statements": [ + { + "assignments": [ + 13033 + ], + "declarations": [ + { + "constant": false, + "id": 13033, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13055, + "src": "2280:13:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13032, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2280:7:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13046, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30786666", + "id": 13039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2343:4:107", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + } + ], + "id": 13038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2336:6:107", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 13037, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "2336:6:107", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2336:12:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 13041, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13027, + "src": "2350:8:107", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 13042, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13023, + "src": "2360:4:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 13043, + "name": "bytecodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13025, + "src": "2366:12:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 13035, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2319:3:107", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 13036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2319:16:107", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 13044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2319:60:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 13034, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2296:9:107", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 13045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2296:93:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2280:109:107" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13051, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13033, + "src": "2422:5:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2414:7:107", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2414:7:107", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2414:14:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2406:7:107", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2406:7:107", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2406:23:107", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 13031, + "id": 13054, + "nodeType": "Return", + "src": "2399:30:107" + } + ] + }, + "documentation": { + "id": 13021, + "nodeType": "StructuredDocumentation", + "src": "1923:232:107", + "text": " @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}." + }, + "id": 13056, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13023, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13056, + "src": "2184:12:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13022, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2184:7:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13025, + "mutability": "mutable", + "name": "bytecodeHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13056, + "src": "2198:20:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13024, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2198:7:107", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13027, + "mutability": "mutable", + "name": "deployer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13056, + "src": "2220:16:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2220:7:107", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2183:54:107" + }, + "returnParameters": { + "id": 13031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13030, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13056, + "src": "2261:7:107", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2261:7:107", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2260:9:107" + }, + "scope": 13057, + "src": "2160:276:107", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 13058, + "src": "426:2012:107" + } + ], + "src": "33:2406:107" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f20db393eef004ee3bcf446ab24b9fee26cf93fe095d4c8ea4cc46c0642dcfe64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f20db393eef004ee3bcf446ab24b9fee26cf93fe095d4c8ea4cc46c0642dcfe64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Create2Impl.json b/node_modules/@openzeppelin/contracts/build/contracts/Create2Impl.json new file mode 100644 index 0000000..62a74ab --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Create2Impl.json @@ -0,0 +1,1162 @@ +{ + "fileName": "Create2Impl.sol", + "contractName": "Create2Impl", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/Create2.sol\";\nimport \"../introspection/ERC1820Implementer.sol\";\n\ncontract Create2Impl {\n function deploy(uint256 value, bytes32 salt, bytes memory code) public {\n Create2.deploy(value, salt, code);\n }\n\n function deployERC1820Implementer(uint256 value, bytes32 salt) public {\n // solhint-disable-next-line indent\n Create2.deploy(value, salt, type(ERC1820Implementer).creationCode);\n }\n\n function computeAddress(bytes32 salt, bytes32 codeHash) public view returns (address) {\n return Create2.computeAddress(salt, codeHash);\n }\n\n function computeAddressWithDeployer(bytes32 salt, bytes32 codeHash, address deployer) public pure returns (address) {\n return Create2.computeAddress(salt, codeHash, deployer);\n }\n\n receive() payable external {}\n}\n", + "sourcePath": "contracts/mocks/Create2Impl.sol", + "sourceMap": "140:736:26:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "140:736:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;294:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;497:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;651:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;167:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;294:197;418:66;433:5;440:4;446:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;418:14;:66::i;:::-;;294:197;;:::o;497:148::-;574:7;600:38;623:4;629:8;600:22;:38::i;:::-;593:45;;497:148;;;;:::o;651:188::-;758:7;784:48;807:4;813:8;823;784:22;:48::i;:::-;777:55;;651:188;;;;;:::o;167:121::-;248:33;263:5;270:4;276;248:14;:33::i;:::-;;167:121;;;:::o;1013:535:94:-;1100:7;1119:12;1174:6;1157:4;1149:21;;;:31;;1141:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:1;1232:8;:15;:20;;1224:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1440:4;1429:8;1423:15;1416:4;1406:8;1402:19;1394:6;1386:59;1378:67;;1488:1;1472:18;;:4;:18;;;;1464:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1537:4;1530:11;;;1013:535;;;;;:::o;1752:165::-;1835:7;1861:49;1876:4;1882:12;1904:4;1861:14;:49::i;:::-;1854:56;;1752:165;;;;:::o;2160:282::-;2261:7;2280:13;2343:4;2336:12;;2350:8;2360:4;2366:12;2319:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2296:93;;;;;;2280:109;;2431:2;2422:5;:11;;2406:29;;2399:36;;;2160:282;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "codeHash", + "type": "bytes32" + } + ], + "name": "computeAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "codeHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "deployer", + "type": "address" + } + ], + "name": "computeAddressWithDeployer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "code", + "type": "bytes" + } + ], + "name": "deploy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "deployERC1820Implementer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "ast": { + "absolutePath": "contracts/mocks/Create2Impl.sol", + "exportedSymbols": { + "Create2Impl": [ + 3314 + ] + }, + "id": 3315, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3235, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:26" + }, + { + "absolutePath": "contracts/utils/Create2.sol", + "file": "../utils/Create2.sol", + "id": 3236, + "nodeType": "ImportDirective", + "scope": 3315, + "sourceUnit": 11146, + "src": "58:30:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC1820Implementer.sol", + "file": "../introspection/ERC1820Implementer.sol", + "id": 3237, + "nodeType": "ImportDirective", + "scope": 3315, + "sourceUnit": 2425, + "src": "89:49:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [ + 2424 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3314, + "linearizedBaseContracts": [ + 3314 + ], + "name": "Create2Impl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3254, + "nodeType": "Block", + "src": "238:50:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3249, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3239, + "src": "263:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3250, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3241, + "src": "270:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3251, + "name": "code", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3243, + "src": "276:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3246, + "name": "Create2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11145, + "src": "248:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Create2_$11145_$", + "typeString": "type(library Create2)" + } + }, + "id": 3248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deploy", + "nodeType": "MemberAccess", + "referencedDeclaration": 11086, + "src": "248:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,bytes32,bytes memory) returns (address)" + } + }, + "id": 3252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "248:33:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3253, + "nodeType": "ExpressionStatement", + "src": "248:33:26" + } + ] + }, + "documentation": null, + "functionSelector": "66cfa057", + "id": 3255, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deploy", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3239, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3255, + "src": "183:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "183:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3241, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3255, + "src": "198:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3240, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "198:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3243, + "mutability": "mutable", + "name": "code", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3255, + "src": "212:17:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3242, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "212:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "182:48:26" + }, + "returnParameters": { + "id": 3245, + "nodeType": "ParameterList", + "parameters": [], + "src": "238:0:26" + }, + "scope": 3314, + "src": "167:121:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3273, + "nodeType": "Block", + "src": "364:127:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3265, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3257, + "src": "433:5:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3266, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3259, + "src": "440:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3268, + "name": "ERC1820Implementer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "451:18:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1820Implementer_$2424_$", + "typeString": "type(contract ERC1820Implementer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_ERC1820Implementer_$2424_$", + "typeString": "type(contract ERC1820Implementer)" + } + ], + "id": 3267, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "446:4:26", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "446:24:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_ERC1820Implementer_$2424", + "typeString": "type(contract ERC1820Implementer)" + } + }, + "id": 3270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "creationCode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "446:37:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3262, + "name": "Create2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11145, + "src": "418:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Create2_$11145_$", + "typeString": "type(library Create2)" + } + }, + "id": 3264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deploy", + "nodeType": "MemberAccess", + "referencedDeclaration": 11086, + "src": "418:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,bytes32,bytes memory) returns (address)" + } + }, + "id": 3271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "418:66:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3272, + "nodeType": "ExpressionStatement", + "src": "418:66:26" + } + ] + }, + "documentation": null, + "functionSelector": "076c37b2", + "id": 3274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1820Implementer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3257, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3274, + "src": "328:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3256, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "328:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3259, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3274, + "src": "343:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3258, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "343:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "327:29:26" + }, + "returnParameters": { + "id": 3261, + "nodeType": "ParameterList", + "parameters": [], + "src": "364:0:26" + }, + "scope": 3314, + "src": "294:197:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3289, + "nodeType": "Block", + "src": "583:62:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3285, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3276, + "src": "623:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3286, + "name": "codeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3278, + "src": "629:8:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 3283, + "name": "Create2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11145, + "src": "600:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Create2_$11145_$", + "typeString": "type(library Create2)" + } + }, + "id": 3284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "computeAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 11106, + "src": "600:22:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32) view returns (address)" + } + }, + "id": 3287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "600:38:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3282, + "id": 3288, + "nodeType": "Return", + "src": "593:45:26" + } + ] + }, + "documentation": null, + "functionSelector": "481286e6", + "id": 3290, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3276, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3290, + "src": "521:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3275, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "521:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3278, + "mutability": "mutable", + "name": "codeHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3290, + "src": "535:16:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3277, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "535:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "520:32:26" + }, + "returnParameters": { + "id": 3282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3281, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3290, + "src": "574:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "574:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "573:9:26" + }, + "scope": 3314, + "src": "497:148:26", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3308, + "nodeType": "Block", + "src": "767:72:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3303, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3292, + "src": "807:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3304, + "name": "codeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3294, + "src": "813:8:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3305, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3296, + "src": "823:8:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3301, + "name": "Create2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11145, + "src": "784:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Create2_$11145_$", + "typeString": "type(library Create2)" + } + }, + "id": 3302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "computeAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 11144, + "src": "784:22:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "784:48:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3300, + "id": 3307, + "nodeType": "Return", + "src": "777:55:26" + } + ] + }, + "documentation": null, + "functionSelector": "56299481", + "id": 3309, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeAddressWithDeployer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3292, + "mutability": "mutable", + "name": "salt", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3309, + "src": "687:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3291, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "687:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3294, + "mutability": "mutable", + "name": "codeHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3309, + "src": "701:16:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3293, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "701:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3296, + "mutability": "mutable", + "name": "deployer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3309, + "src": "719:16:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "719:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "686:50:26" + }, + "returnParameters": { + "id": 3300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3299, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3309, + "src": "758:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "758:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "757:9:26" + }, + "scope": 3314, + "src": "651:188:26", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3312, + "nodeType": "Block", + "src": "872:2:26", + "statements": [] + }, + "documentation": null, + "id": 3313, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3310, + "nodeType": "ParameterList", + "parameters": [], + "src": "852:2:26" + }, + "returnParameters": { + "id": 3311, + "nodeType": "ParameterList", + "parameters": [], + "src": "872:0:26" + }, + "scope": 3314, + "src": "845:29:26", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3315, + "src": "140:736:26" + } + ], + "src": "33:844:26" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610792806100206000396000f3fe6080604052600436106100435760003560e01c8063076c37b21461004f578063481286e614610094578063562994811461011957806366cfa057146101be5761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100926004803603604081101561007257600080fd5b81019080803590602001909291908035906020019092919050505061029a565b005b3480156100a057600080fd5b506100d7600480360360408110156100b757600080fd5b8101908080359060200190929190803590602001909291905050506102cd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012557600080fd5b5061017c6004803603606081101561013c57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ca57600080fd5b50610298600480360360608110156101e157600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561021257600080fd5b82018360208201111561022457600080fd5b8035906020019184600183028401116401000000008311171561024657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102f7565b005b6102c88282604051806020016102af906105ab565b6020820181038252601f19601f82011660405250610308565b505050565b60006102d983836104c9565b905092915050565b60006102ee8484846104de565b90509392505050565b610302838383610308565b50505050565b600080843073ffffffffffffffffffffffffffffffffffffffff16311015610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f437265617465323a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b600083511415610410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f437265617465323a2062797465636f6465206c656e677468206973207a65726f81525060200191505060405180910390fd5b8383516020850187f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f437265617465323a204661696c6564206f6e206465706c6f790000000000000081525060200191505060405180910390fd5b809150509392505050565b60006104d68383306104de565b905092915050565b60008060ff60f81b83868660405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401838152602001828152602001945050505050604051602081830303815290604052805190602001209050606081901b60601c9150509392505050565b6101a4806105b98339019056fe608060405234801561001057600080fd5b50610184806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063249cb3fa14610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610092565b6040518082815260200191505060405180910390f35b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166100fe576000801b610146565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b90509291505056fea264697066735822122016252cb3d4a29b8492749b78e7e2d166b6f326d7ae115b73e65bc15097627b3464736f6c63430006090033a264697066735822122056914a98a5cf057060aa9cf95bad1a7f615c417a13d5dc88b9e1ab8ba9610d3464736f6c63430006090033", + "deployedBytecode": "0x6080604052600436106100435760003560e01c8063076c37b21461004f578063481286e614610094578063562994811461011957806366cfa057146101be5761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100926004803603604081101561007257600080fd5b81019080803590602001909291908035906020019092919050505061029a565b005b3480156100a057600080fd5b506100d7600480360360408110156100b757600080fd5b8101908080359060200190929190803590602001909291905050506102cd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012557600080fd5b5061017c6004803603606081101561013c57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ca57600080fd5b50610298600480360360608110156101e157600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561021257600080fd5b82018360208201111561022457600080fd5b8035906020019184600183028401116401000000008311171561024657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102f7565b005b6102c88282604051806020016102af906105ab565b6020820181038252601f19601f82011660405250610308565b505050565b60006102d983836104c9565b905092915050565b60006102ee8484846104de565b90509392505050565b610302838383610308565b50505050565b600080843073ffffffffffffffffffffffffffffffffffffffff16311015610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f437265617465323a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b600083511415610410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f437265617465323a2062797465636f6465206c656e677468206973207a65726f81525060200191505060405180910390fd5b8383516020850187f59050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f437265617465323a204661696c6564206f6e206465706c6f790000000000000081525060200191505060405180910390fd5b809150509392505050565b60006104d68383306104de565b905092915050565b60008060ff60f81b83868660405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b8152601401838152602001828152602001945050505050604051602081830303815290604052805190602001209050606081901b60601c9150509392505050565b6101a4806105b98339019056fe608060405234801561001057600080fd5b50610184806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063249cb3fa14610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610092565b6040518082815260200191505060405180910390f35b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166100fe576000801b610146565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b90509291505056fea264697066735822122016252cb3d4a29b8492749b78e7e2d166b6f326d7ae115b73e65bc15097627b3464736f6c63430006090033a264697066735822122056914a98a5cf057060aa9cf95bad1a7f615c417a13d5dc88b9e1ab8ba9610d3464736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Crowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/Crowdsale.json new file mode 100644 index 0000000..a1843a2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Crowdsale.json @@ -0,0 +1,3644 @@ +{ + "fileName": "Crowdsale.sol", + "contractName": "Crowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../math/SafeMath.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../utils/ReentrancyGuard.sol\";\n\n/**\n * @title Crowdsale\n * @dev Crowdsale is a base contract for managing a token crowdsale,\n * allowing investors to purchase tokens with ether. This contract implements\n * such functionality in its most fundamental form and can be extended to provide additional\n * functionality and/or custom behavior.\n * The external interface represents the basic interface for purchasing tokens, and conforms\n * the base architecture for crowdsales. It is *not* intended to be modified / overridden.\n * The internal interface conforms the extensible and modifiable surface of crowdsales. Override\n * the methods to add functionality. Consider using 'super' where appropriate to concatenate\n * behavior.\n */\ncontract Crowdsale is Context, ReentrancyGuard {\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n // The token being sold\n IERC20 private _token;\n\n // Address where funds are collected\n address payable private _wallet;\n\n // How many token units a buyer gets per wei.\n // The rate is the conversion between wei and the smallest and indivisible token unit.\n // So, if you are using a rate of 1 with a ERC20Detailed token with 3 decimals called TOK\n // 1 wei will give you 1 unit, or 0.001 TOK.\n uint256 private _rate;\n\n // Amount of wei raised\n uint256 private _weiRaised;\n\n /**\n * Event for token purchase logging\n * @param purchaser who paid for the tokens\n * @param beneficiary who got the tokens\n * @param value weis paid for purchase\n * @param amount amount of tokens purchased\n */\n event TokensPurchased(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);\n\n /**\n * @param rate Number of token units a buyer gets per wei\n * @dev The rate is the conversion between wei and the smallest and indivisible\n * token unit. So, if you are using a rate of 1 with a ERC20Detailed token\n * with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK.\n * @param wallet Address where collected funds will be forwarded to\n * @param token Address of the token being sold\n */\n constructor (uint256 rate, address payable wallet, IERC20 token) public {\n require(rate > 0, \"Crowdsale: rate is 0\");\n require(wallet != address(0), \"Crowdsale: wallet is the zero address\");\n require(address(token) != address(0), \"Crowdsale: token is the zero address\");\n\n _rate = rate;\n _wallet = wallet;\n _token = token;\n }\n\n /**\n * @dev fallback function ***DO NOT OVERRIDE***\n * Note that other contracts will transfer funds with a base gas stipend\n * of 2300, which is not enough to call buyTokens. Consider calling\n * buyTokens directly when purchasing tokens from a contract.\n */\n function () external payable {\n buyTokens(_msgSender());\n }\n\n /**\n * @return the token being sold.\n */\n function token() public view returns (IERC20) {\n return _token;\n }\n\n /**\n * @return the address where funds are collected.\n */\n function wallet() public view returns (address payable) {\n return _wallet;\n }\n\n /**\n * @return the number of token units a buyer gets per wei.\n */\n function rate() public view returns (uint256) {\n return _rate;\n }\n\n /**\n * @return the amount of wei raised.\n */\n function weiRaised() public view returns (uint256) {\n return _weiRaised;\n }\n\n /**\n * @dev low level token purchase ***DO NOT OVERRIDE***\n * This function has a non-reentrancy guard, so it shouldn't be called by\n * another `nonReentrant` function.\n * @param beneficiary Recipient of the token purchase\n */\n function buyTokens(address beneficiary) public nonReentrant payable {\n uint256 weiAmount = msg.value;\n _preValidatePurchase(beneficiary, weiAmount);\n\n // calculate token amount to be created\n uint256 tokens = _getTokenAmount(weiAmount);\n\n // update state\n _weiRaised = _weiRaised.add(weiAmount);\n\n _processPurchase(beneficiary, tokens);\n emit TokensPurchased(_msgSender(), beneficiary, weiAmount, tokens);\n\n _updatePurchasingState(beneficiary, weiAmount);\n\n _forwardFunds();\n _postValidatePurchase(beneficiary, weiAmount);\n }\n\n /**\n * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\n * Use `super` in contracts that inherit from Crowdsale to extend their validations.\n * Example from CappedCrowdsale.sol's _preValidatePurchase method:\n * super._preValidatePurchase(beneficiary, weiAmount);\n * require(weiRaised().add(weiAmount) <= cap);\n * @param beneficiary Address performing the token purchase\n * @param weiAmount Value in wei involved in the purchase\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n require(beneficiary != address(0), \"Crowdsale: beneficiary is the zero address\");\n require(weiAmount != 0, \"Crowdsale: weiAmount is 0\");\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n }\n\n /**\n * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid\n * conditions are not met.\n * @param beneficiary Address performing the token purchase\n * @param weiAmount Value in wei involved in the purchase\n */\n function _postValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends\n * its tokens.\n * @param beneficiary Address performing the token purchase\n * @param tokenAmount Number of tokens to be emitted\n */\n function _deliverTokens(address beneficiary, uint256 tokenAmount) internal {\n _token.safeTransfer(beneficiary, tokenAmount);\n }\n\n /**\n * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send\n * tokens.\n * @param beneficiary Address receiving the tokens\n * @param tokenAmount Number of tokens to be purchased\n */\n function _processPurchase(address beneficiary, uint256 tokenAmount) internal {\n _deliverTokens(beneficiary, tokenAmount);\n }\n\n /**\n * @dev Override for extensions that require an internal state to check for validity (current user contributions,\n * etc.)\n * @param beneficiary Address receiving the tokens\n * @param weiAmount Value in wei involved in the purchase\n */\n function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev Override to extend the way in which ether is converted to tokens.\n * @param weiAmount Value in wei to be converted into tokens\n * @return Number of tokens that can be purchased with the specified _weiAmount\n */\n function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) {\n return weiAmount.mul(_rate);\n }\n\n /**\n * @dev Determines how ETH is stored/forwarded on purchases.\n */\n function _forwardFunds() internal {\n _wallet.transfer(msg.value);\n }\n}\n", + "sourcePath": "contracts/crowdsale/Crowdsale.sol", + "sourceMap": "896:6749:13:-;;;2319:370;8:9:-1;5:2;;;30:1;27;20:12;5:2;2319:370:13;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2319:370:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;896:6749;;;;;;", + "deployedSourceMap": "896:6749:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;896:6749;3430:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3910:605;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;3430:75::-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;3258:87::-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;3106:76::-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;5057:376::-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;7358:120::-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "exportedSymbols": { + "Crowdsale": [ + 2119 + ] + }, + "id": 2120, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1844, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:13" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 1845, + "nodeType": "ImportDirective", + "scope": 2120, + "sourceUnit": 27, + "src": "25:28:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 1846, + "nodeType": "ImportDirective", + "scope": 2120, + "sourceUnit": 10217, + "src": "54:35:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 1847, + "nodeType": "ImportDirective", + "scope": 2120, + "sourceUnit": 5300, + "src": "90:30:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 1848, + "nodeType": "ImportDirective", + "scope": 2120, + "sourceUnit": 10437, + "src": "121:38:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/ReentrancyGuard.sol", + "file": "../utils/ReentrancyGuard.sol", + "id": 1849, + "nodeType": "ImportDirective", + "scope": 2120, + "sourceUnit": 13821, + "src": "160:38:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1850, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "918:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1851, + "nodeType": "InheritanceSpecifier", + "src": "918:7:13" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1852, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13820, + "src": "927:15:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$13820", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 1853, + "nodeType": "InheritanceSpecifier", + "src": "927:15:13" + } + ], + "contractDependencies": [ + 26, + 13820 + ], + "contractKind": "contract", + "documentation": "@title Crowdsale\n@dev Crowdsale is a base contract for managing a token crowdsale,\nallowing investors to purchase tokens with ether. This contract implements\nsuch functionality in its most fundamental form and can be extended to provide additional\nfunctionality and/or custom behavior.\nThe external interface represents the basic interface for purchasing tokens, and conforms\nthe base architecture for crowdsales. It is *not* intended to be modified / overridden.\nThe internal interface conforms the extensible and modifiable surface of crowdsales. Override\nthe methods to add functionality. Consider using 'super' where appropriate to concatenate\nbehavior.", + "fullyImplemented": true, + "id": 2119, + "linearizedBaseContracts": [ + 2119, + 13820, + 26 + ], + "name": "Crowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1856, + "libraryName": { + "contractScope": null, + "id": 1854, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "955:8:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "949:27:13", + "typeName": { + "id": 1855, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 1859, + "libraryName": { + "contractScope": null, + "id": 1857, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10436, + "src": "987:9:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$10436", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "981:27:13", + "typeName": { + "contractScope": null, + "id": 1858, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "1001:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 1861, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 2119, + "src": "1042:21:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1860, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "1042:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1863, + "name": "_wallet", + "nodeType": "VariableDeclaration", + "scope": 2119, + "src": "1111:31:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1111:15:13", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1865, + "name": "_rate", + "nodeType": "VariableDeclaration", + "scope": 2119, + "src": "1433:21:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1433:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1867, + "name": "_weiRaised", + "nodeType": "VariableDeclaration", + "scope": 2119, + "src": "1489:26:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1866, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1489:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": "Event for token purchase logging\n@param purchaser who paid for the tokens\n@param beneficiary who got the tokens\n@param value weis paid for purchase\n@param amount amount of tokens purchased", + "id": 1877, + "name": "TokensPurchased", + "nodeType": "EventDefinition", + "parameters": { + "id": 1876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1869, + "indexed": true, + "name": "purchaser", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "1784:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1868, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1784:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1871, + "indexed": true, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "1811:27:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1870, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1811:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1873, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "1840:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1872, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1840:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1875, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "1855:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1874, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1855:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1783:87:13" + }, + "src": "1762:109:13" + }, + { + "body": { + "id": 1925, + "nodeType": "Block", + "src": "2391:298:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1887, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "2409:4:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2416:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2409:8:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43726f776473616c653a20726174652069732030", + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2419:22:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b72f2adcfe62a5614b704f585faa49282940ab878a00620f85b716aa41f6d78", + "typeString": "literal_string \"Crowdsale: rate is 0\"" + }, + "value": "Crowdsale: rate is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8b72f2adcfe62a5614b704f585faa49282940ab878a00620f85b716aa41f6d78", + "typeString": "literal_string \"Crowdsale: rate is 0\"" + } + ], + "id": 1886, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2401:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2401:41:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1892, + "nodeType": "ExpressionStatement", + "src": "2401:41:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1894, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "2460:6:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2478:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2470:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2470:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2460:20:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2482:39:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e2b432b30cf592332baa824ba45b03380bf314917ec1eb0e2522d19fb933b9f6", + "typeString": "literal_string \"Crowdsale: wallet is the zero address\"" + }, + "value": "Crowdsale: wallet is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e2b432b30cf592332baa824ba45b03380bf314917ec1eb0e2522d19fb933b9f6", + "typeString": "literal_string \"Crowdsale: wallet is the zero address\"" + } + ], + "id": 1893, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2452:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2452:70:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1901, + "nodeType": "ExpressionStatement", + "src": "2452:70:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1904, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "2548:5:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + ], + "id": 1903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2540:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2540:14:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2566:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2558:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2558:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2540:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43726f776473616c653a20746f6b656e20697320746865207a65726f2061646472657373", + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2570:38:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64ba396754921ac5cdc6388a09272386edd92a5c198850f31a7c165ba7c79b82", + "typeString": "literal_string \"Crowdsale: token is the zero address\"" + }, + "value": "Crowdsale: token is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64ba396754921ac5cdc6388a09272386edd92a5c198850f31a7c165ba7c79b82", + "typeString": "literal_string \"Crowdsale: token is the zero address\"" + } + ], + "id": 1902, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2532:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2532:77:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1912, + "nodeType": "ExpressionStatement", + "src": "2532:77:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1913, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1865, + "src": "2620:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1914, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "2628:4:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2620:12:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1916, + "nodeType": "ExpressionStatement", + "src": "2620:12:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1917, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1863, + "src": "2642:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1918, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "2652:6:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2642:16:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1920, + "nodeType": "ExpressionStatement", + "src": "2642:16:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1921, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1861, + "src": "2668:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1922, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "2677:5:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "src": "2668:14:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 1924, + "nodeType": "ExpressionStatement", + "src": "2668:14:13" + } + ] + }, + "documentation": "@param rate Number of token units a buyer gets per wei\n@dev The rate is the conversion between wei and the smallest and indivisible\ntoken unit. So, if you are using a rate of 1 with a ERC20Detailed token\nwith 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK.\n@param wallet Address where collected funds will be forwarded to\n@param token Address of the token being sold", + "id": 1926, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1879, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 1926, + "src": "2332:12:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2332:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1881, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 1926, + "src": "2346:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1880, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2346:15:13", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1883, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1926, + "src": "2370:12:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1882, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "2370:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2331:52:13" + }, + "returnParameters": { + "id": 1885, + "nodeType": "ParameterList", + "parameters": [], + "src": "2391:0:13" + }, + "scope": 2119, + "src": "2319:370:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1934, + "nodeType": "Block", + "src": "3007:40:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1930, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3027:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3027:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1929, + "name": "buyTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2024, + "src": "3017:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3017:23:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1933, + "nodeType": "ExpressionStatement", + "src": "3017:23:13" + } + ] + }, + "documentation": "@dev fallback function ***DO NOT OVERRIDE***\nNote that other contracts will transfer funds with a base gas stipend\nof 2300, which is not enough to call buyTokens. Consider calling\nbuyTokens directly when purchasing tokens from a contract.", + "id": 1935, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1927, + "nodeType": "ParameterList", + "parameters": [], + "src": "2987:2:13" + }, + "returnParameters": { + "id": 1928, + "nodeType": "ParameterList", + "parameters": [], + "src": "3007:0:13" + }, + "scope": 2119, + "src": "2978:69:13", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1942, + "nodeType": "Block", + "src": "3152:30:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1940, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1861, + "src": "3169:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 1939, + "id": 1941, + "nodeType": "Return", + "src": "3162:13:13" + } + ] + }, + "documentation": "@return the token being sold.", + "id": 1943, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1936, + "nodeType": "ParameterList", + "parameters": [], + "src": "3120:2:13" + }, + "returnParameters": { + "id": 1939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1938, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1943, + "src": "3144:6:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1937, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "3144:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3143:8:13" + }, + "scope": 2119, + "src": "3106:76:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1950, + "nodeType": "Block", + "src": "3314:31:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1948, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1863, + "src": "3331:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 1947, + "id": 1949, + "nodeType": "Return", + "src": "3324:14:13" + } + ] + }, + "documentation": "@return the address where funds are collected.", + "id": 1951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "wallet", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1944, + "nodeType": "ParameterList", + "parameters": [], + "src": "3273:2:13" + }, + "returnParameters": { + "id": 1947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1946, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1951, + "src": "3297:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1945, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3297:15:13", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3296:17:13" + }, + "scope": 2119, + "src": "3258:87:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1958, + "nodeType": "Block", + "src": "3476:29:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1956, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1865, + "src": "3493:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1955, + "id": 1957, + "nodeType": "Return", + "src": "3486:12:13" + } + ] + }, + "documentation": "@return the number of token units a buyer gets per wei.", + "id": 1959, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1952, + "nodeType": "ParameterList", + "parameters": [], + "src": "3443:2:13" + }, + "returnParameters": { + "id": 1955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1954, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1959, + "src": "3467:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3467:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3466:9:13" + }, + "scope": 2119, + "src": "3430:75:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1966, + "nodeType": "Block", + "src": "3619:34:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1964, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1867, + "src": "3636:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1963, + "id": 1965, + "nodeType": "Return", + "src": "3629:17:13" + } + ] + }, + "documentation": "@return the amount of wei raised.", + "id": 1967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "weiRaised", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1960, + "nodeType": "ParameterList", + "parameters": [], + "src": "3586:2:13" + }, + "returnParameters": { + "id": 1963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1962, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "3610:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3610:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3609:9:13" + }, + "scope": 2119, + "src": "3568:85:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2023, + "nodeType": "Block", + "src": "3978:537:13", + "statements": [ + { + "assignments": [ + 1975 + ], + "declarations": [ + { + "constant": false, + "id": 1975, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2023, + "src": "3988:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1974, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3988:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1978, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1976, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13943, + "src": "4008:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4008:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3988:29:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1980, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "4048:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1981, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "4061:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1979, + "name": "_preValidatePurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2050, + "src": "4027:20:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4027:44:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1983, + "nodeType": "ExpressionStatement", + "src": "4027:44:13" + }, + { + "assignments": [ + 1985 + ], + "declarations": [ + { + "constant": false, + "id": 1985, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 2023, + "src": "4130:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4130:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1989, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1987, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "4163:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1986, + "name": "_getTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2107, + "src": "4147:15:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4147:26:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4130:43:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1990, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1867, + "src": "4208:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1993, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "4236:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1991, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1867, + "src": "4221:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5139, + "src": "4221:14:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4221:25:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4208:38:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1996, + "nodeType": "ExpressionStatement", + "src": "4208:38:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1998, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "4274:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1999, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "4287:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1997, + "name": "_processPurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2086, + "src": "4257:16:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4257:37:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2001, + "nodeType": "ExpressionStatement", + "src": "4257:37:13" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2003, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "4325:10:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4325:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2005, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "4339:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2006, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "4352:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2007, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "4363:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2002, + "name": "TokensPurchased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "4309:15:13", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4309:61:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2009, + "nodeType": "EmitStatement", + "src": "4304:66:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2011, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "4404:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2012, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "4417:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2010, + "name": "_updatePurchasingState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "4381:22:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4381:46:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2014, + "nodeType": "ExpressionStatement", + "src": "4381:46:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2015, + "name": "_forwardFunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "4438:13:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4438:15:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2017, + "nodeType": "ExpressionStatement", + "src": "4438:15:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2019, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "4485:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2020, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "4498:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2018, + "name": "_postValidatePurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2058, + "src": "4463:21:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 2021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4463:45:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2022, + "nodeType": "ExpressionStatement", + "src": "4463:45:13" + } + ] + }, + "documentation": "@dev low level token purchase ***DO NOT OVERRIDE***\nThis function has a non-reentrancy guard, so it shouldn't be called by\nanother `nonReentrant` function.\n@param beneficiary Recipient of the token purchase", + "id": 2024, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1972, + "modifierName": { + "argumentTypes": null, + "id": 1971, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13819, + "src": "3957:12:13", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3957:12:13" + } + ], + "name": "buyTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1969, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "3929:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3929:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3928:21:13" + }, + "returnParameters": { + "id": 1973, + "nodeType": "ParameterList", + "parameters": [], + "src": "3978:0:13" + }, + "scope": 2119, + "src": "3910:605:13", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2049, + "nodeType": "Block", + "src": "5141:292:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2032, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2026, + "src": "5159:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5182:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5174:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5174:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5159:25:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373", + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5186:44:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b9d4bce01fb5c20cfa41c5b334ad79fcf3774809b1388b0603f3dcd505be7d6e", + "typeString": "literal_string \"Crowdsale: beneficiary is the zero address\"" + }, + "value": "Crowdsale: beneficiary is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b9d4bce01fb5c20cfa41c5b334ad79fcf3774809b1388b0603f3dcd505be7d6e", + "typeString": "literal_string \"Crowdsale: beneficiary is the zero address\"" + } + ], + "id": 2031, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "5151:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5151:80:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2039, + "nodeType": "ExpressionStatement", + "src": "5151:80:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2041, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2028, + "src": "5249:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5262:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5249:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43726f776473616c653a20776569416d6f756e742069732030", + "id": 2044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5265:27:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f45555b4c8de1305c23871b4baf5a92b123c8c91d4898c309ec2af8faef1a26c", + "typeString": "literal_string \"Crowdsale: weiAmount is 0\"" + }, + "value": "Crowdsale: weiAmount is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f45555b4c8de1305c23871b4baf5a92b123c8c91d4898c309ec2af8faef1a26c", + "typeString": "literal_string \"Crowdsale: weiAmount is 0\"" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "5241:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5241:52:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2046, + "nodeType": "ExpressionStatement", + "src": "5241:52:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2047, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14003, + "src": "5303:4:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2048, + "nodeType": "ExpressionStatement", + "src": "5303:4:13" + } + ] + }, + "documentation": "@dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\nUse `super` in contracts that inherit from Crowdsale to extend their validations.\nExample from CappedCrowdsale.sol's _preValidatePurchase method:\n super._preValidatePurchase(beneficiary, weiAmount);\n require(weiRaised().add(weiAmount) <= cap);\n@param beneficiary Address performing the token purchase\n@param weiAmount Value in wei involved in the purchase", + "id": 2050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2026, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2050, + "src": "5087:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5087:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2028, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2050, + "src": "5108:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5108:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5086:40:13" + }, + "returnParameters": { + "id": 2030, + "nodeType": "ParameterList", + "parameters": [], + "src": "5141:0:13" + }, + "scope": 2119, + "src": "5057:376:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2057, + "nodeType": "Block", + "src": "5813:64:13", + "statements": [] + }, + "documentation": "@dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid\nconditions are not met.\n@param beneficiary Address performing the token purchase\n@param weiAmount Value in wei involved in the purchase", + "id": 2058, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2052, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2058, + "src": "5759:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5759:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2054, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2058, + "src": "5780:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5780:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5758:40:13" + }, + "returnParameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [], + "src": "5813:0:13" + }, + "scope": 2119, + "src": "5728:149:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2072, + "nodeType": "Block", + "src": "6232:62:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2068, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2060, + "src": "6262:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2069, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "6275:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2065, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1861, + "src": "6242:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10249, + "src": "6242:19:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10216_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6242:45:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2071, + "nodeType": "ExpressionStatement", + "src": "6242:45:13" + } + ] + }, + "documentation": "@dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends\nits tokens.\n@param beneficiary Address performing the token purchase\n@param tokenAmount Number of tokens to be emitted", + "id": 2073, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2060, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2073, + "src": "6181:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6181:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2062, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 2073, + "src": "6202:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6202:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6180:42:13" + }, + "returnParameters": { + "id": 2064, + "nodeType": "ParameterList", + "parameters": [], + "src": "6232:0:13" + }, + "scope": 2119, + "src": "6157:137:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2085, + "nodeType": "Block", + "src": "6637:57:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2081, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "6662:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2082, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2077, + "src": "6675:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2080, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "6647:14:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6647:40:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2084, + "nodeType": "ExpressionStatement", + "src": "6647:40:13" + } + ] + }, + "documentation": "@dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send\ntokens.\n@param beneficiary Address receiving the tokens\n@param tokenAmount Number of tokens to be purchased", + "id": 2086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2075, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2086, + "src": "6586:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6586:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2077, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 2086, + "src": "6607:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6607:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6585:42:13" + }, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [], + "src": "6637:0:13" + }, + "scope": 2119, + "src": "6560:134:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2093, + "nodeType": "Block", + "src": "7045:64:13", + "statements": [] + }, + "documentation": "@dev Override for extensions that require an internal state to check for validity (current user contributions,\netc.)\n@param beneficiary Address receiving the tokens\n@param weiAmount Value in wei involved in the purchase", + "id": 2094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updatePurchasingState", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2088, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2094, + "src": "6996:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6996:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2090, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2094, + "src": "7017:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2089, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7017:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6995:40:13" + }, + "returnParameters": { + "id": 2092, + "nodeType": "ParameterList", + "parameters": [], + "src": "7045:0:13" + }, + "scope": 2119, + "src": "6964:145:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2106, + "nodeType": "Block", + "src": "7434:44:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2103, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1865, + "src": "7465:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2101, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2096, + "src": "7451:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 5216, + "src": "7451:13:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7451:20:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2100, + "id": 2105, + "nodeType": "Return", + "src": "7444:27:13" + } + ] + }, + "documentation": "@dev Override to extend the way in which ether is converted to tokens.\n@param weiAmount Value in wei to be converted into tokens\n@return Number of tokens that can be purchased with the specified _weiAmount", + "id": 2107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getTokenAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2096, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2107, + "src": "7383:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7383:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7382:19:13" + }, + "returnParameters": { + "id": 2100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2099, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2107, + "src": "7425:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7425:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7424:9:13" + }, + "scope": 2119, + "src": "7358:120:13", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2117, + "nodeType": "Block", + "src": "7599:44:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13943, + "src": "7626:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7626:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2110, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1863, + "src": "7609:7:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7609:16:13", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7609:27:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2116, + "nodeType": "ExpressionStatement", + "src": "7609:27:13" + } + ] + }, + "documentation": "@dev Determines how ETH is stored/forwarded on purchases.", + "id": 2118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_forwardFunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2108, + "nodeType": "ParameterList", + "parameters": [], + "src": "7587:2:13" + }, + "returnParameters": { + "id": 2109, + "nodeType": "ParameterList", + "parameters": [], + "src": "7599:0:13" + }, + "scope": 2119, + "src": "7565:78:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2120, + "src": "896:6749:13" + } + ], + "src": "0:7646:13" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051610d86380380610d868339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505060016000806101000a81548160ff021916908315150217905550600083116100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561016e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610d616025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156101f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610d3d6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610aae8061028f6000396000f3fe60806040526004361061004a5760003560e01c80632c4e722e1461005c5780634042b66f14610087578063521eb273146100b2578063ec8ac4d814610109578063fc0c546a1461014d575b61005a6100556101a4565b6101ac565b005b34801561006857600080fd5b50610071610337565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c610341565b6040518082815260200191505060405180910390f35b3480156100be57600080fd5b506100c761034b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61014b6004803603602081101561011f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ac565b005b34801561015957600080fd5b50610162610375565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff1661022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610256828261039e565b60006102618261049f565b9050610278826003546104bd90919063ffffffff16565b6003819055506102888382610545565b8273ffffffffffffffffffffffffffffffffffffffff166102a76101a4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103068383610553565b61030e610557565b61031883836105c2565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a26602a913960400191505060405180910390fd5b600081141561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60006104b6600254836105c690919063ffffffff16565b9050919050565b60008082840190508381101561053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61054f828261064c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105bf573d6000803e3d6000fd5b50565b5050565b6000808314156105d95760009050610646565b60008284029050828482816105ea57fe5b0414610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a056021913960400191505060405180910390fd5b809150505b92915050565b6106998282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661069d9092919063ffffffff16565b5050565b610769838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b505050565b61078d8273ffffffffffffffffffffffffffffffffffffffff166109b9565b6107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061084e578051825260208201915060208101905060208303925061082b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108b0576040519150601f19603f3d011682016040523d82523d6000602084013e6108b5565b606091505b50915091508161092d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156109b35780806020019051602081101561094c57600080fd5b81019080805190602001909291905050506109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a50602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156109fb57506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820fa46b002d408ad67066ece2f8d129e03f25a2c5d5d992c1f02c057fd290940fd64736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c80632c4e722e1461005c5780634042b66f14610087578063521eb273146100b2578063ec8ac4d814610109578063fc0c546a1461014d575b61005a6100556101a4565b6101ac565b005b34801561006857600080fd5b50610071610337565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c610341565b6040518082815260200191505060405180910390f35b3480156100be57600080fd5b506100c761034b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61014b6004803603602081101561011f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ac565b005b34801561015957600080fd5b50610162610375565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff1661022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610256828261039e565b60006102618261049f565b9050610278826003546104bd90919063ffffffff16565b6003819055506102888382610545565b8273ffffffffffffffffffffffffffffffffffffffff166102a76101a4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103068383610553565b61030e610557565b61031883836105c2565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a26602a913960400191505060405180910390fd5b600081141561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60006104b6600254836105c690919063ffffffff16565b9050919050565b60008082840190508381101561053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61054f828261064c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105bf573d6000803e3d6000fd5b50565b5050565b6000808314156105d95760009050610646565b60008284029050828482816105ea57fe5b0414610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a056021913960400191505060405180910390fd5b809150505b92915050565b6106998282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661069d9092919063ffffffff16565b5050565b610769838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b505050565b61078d8273ffffffffffffffffffffffffffffffffffffffff166109b9565b6107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061084e578051825260208201915060208101905060208303925061082b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108b0576040519150601f19603f3d011682016040523d82523d6000602084013e6108b5565b606091505b50915091508161092d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156109b35780806020019051602081101561094c57600080fd5b81019080805190602001909291905050506109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a50602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156109fb57506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820fa46b002d408ad67066ece2f8d129e03f25a2c5d5d992c1f02c057fd290940fd64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/CrowdsaleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/CrowdsaleMock.json new file mode 100644 index 0000000..2f97b4d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/CrowdsaleMock.json @@ -0,0 +1,406 @@ +{ + "fileName": "CrowdsaleMock.sol", + "contractName": "CrowdsaleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../crowdsale/Crowdsale.sol\";\n\ncontract CrowdsaleMock is Crowdsale {\n constructor (uint256 rate, address payable wallet, IERC20 token) public Crowdsale(rate, wallet, token) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/CrowdsaleMock.sol", + "sourceMap": "63:211:55:-;;;105:167;8:9:-1;5:2;;;30:1;27;20:12;5:2;105:167:55;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;105:167:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;187:4;193:6;201:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;105:167:55;;;63:211;;;;;;", + "deployedSourceMap": "63:211:55:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;63:211:55;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3910:605;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;3430:75::-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;3258:87::-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;3106:76::-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;5057:376::-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;7358:120::-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/CrowdsaleMock.sol", + "exportedSymbols": { + "CrowdsaleMock": [ + 5707 + ] + }, + "id": 5708, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5688, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:55" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../crowdsale/Crowdsale.sol", + "id": 5689, + "nodeType": "ImportDirective", + "scope": 5708, + "sourceUnit": 2120, + "src": "25:36:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5690, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "89:9:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 5691, + "nodeType": "InheritanceSpecifier", + "src": "89:9:55" + } + ], + "contractDependencies": [ + 26, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5707, + "linearizedBaseContracts": [ + 5707, + 2119, + 13820, + 26 + ], + "name": "CrowdsaleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5705, + "nodeType": "Block", + "src": "208:64:55", + "statements": [] + }, + "documentation": null, + "id": 5706, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5700, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5693, + "src": "187:4:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5701, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5695, + "src": "193:6:55", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5702, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5697, + "src": "201:5:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 5703, + "modifierName": { + "argumentTypes": null, + "id": 5699, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "177:9:55", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "177:30:55" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5693, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 5706, + "src": "118:12:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5692, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "118:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5695, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 5706, + "src": "132:22:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "132:15:55", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5697, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5706, + "src": "156:12:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5696, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "156:6:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "117:52:55" + }, + "returnParameters": { + "id": 5704, + "nodeType": "ParameterList", + "parameters": [], + "src": "208:0:55" + }, + "scope": 5707, + "src": "105:167:55", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5708, + "src": "63:211:55" + } + ], + "src": "0:275:55" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051610d8c380380610d8c8339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082828260016000806101000a81548160ff021916908315150217905550600083116100eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610d676025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156101f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610d436024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050610aae806102956000396000f3fe60806040526004361061004a5760003560e01c80632c4e722e1461005c5780634042b66f14610087578063521eb273146100b2578063ec8ac4d814610109578063fc0c546a1461014d575b61005a6100556101a4565b6101ac565b005b34801561006857600080fd5b50610071610337565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c610341565b6040518082815260200191505060405180910390f35b3480156100be57600080fd5b506100c761034b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61014b6004803603602081101561011f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ac565b005b34801561015957600080fd5b50610162610375565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff1661022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610256828261039e565b60006102618261049f565b9050610278826003546104bd90919063ffffffff16565b6003819055506102888382610545565b8273ffffffffffffffffffffffffffffffffffffffff166102a76101a4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103068383610553565b61030e610557565b61031883836105c2565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a26602a913960400191505060405180910390fd5b600081141561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60006104b6600254836105c690919063ffffffff16565b9050919050565b60008082840190508381101561053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61054f828261064c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105bf573d6000803e3d6000fd5b50565b5050565b6000808314156105d95760009050610646565b60008284029050828482816105ea57fe5b0414610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a056021913960400191505060405180910390fd5b809150505b92915050565b6106998282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661069d9092919063ffffffff16565b5050565b610769838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b505050565b61078d8273ffffffffffffffffffffffffffffffffffffffff166109b9565b6107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061084e578051825260208201915060208101905060208303925061082b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108b0576040519150601f19603f3d011682016040523d82523d6000602084013e6108b5565b606091505b50915091508161092d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156109b35780806020019051602081101561094c57600080fd5b81019080805190602001909291905050506109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a50602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156109fb57506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582009fdb3fb28b95cd7833d0999d9a88cf7a19d39b07eea4e2a0dd54247d4ff988264736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c80632c4e722e1461005c5780634042b66f14610087578063521eb273146100b2578063ec8ac4d814610109578063fc0c546a1461014d575b61005a6100556101a4565b6101ac565b005b34801561006857600080fd5b50610071610337565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c610341565b6040518082815260200191505060405180910390f35b3480156100be57600080fd5b506100c761034b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61014b6004803603602081101561011f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ac565b005b34801561015957600080fd5b50610162610375565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff1661022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610256828261039e565b60006102618261049f565b9050610278826003546104bd90919063ffffffff16565b6003819055506102888382610545565b8273ffffffffffffffffffffffffffffffffffffffff166102a76101a4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103068383610553565b61030e610557565b61031883836105c2565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a26602a913960400191505060405180910390fd5b600081141561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60006104b6600254836105c690919063ffffffff16565b9050919050565b60008082840190508381101561053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61054f828261064c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105bf573d6000803e3d6000fd5b50565b5050565b6000808314156105d95760009050610646565b60008284029050828482816105ea57fe5b0414610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a056021913960400191505060405180910390fd5b809150505b92915050565b6106998282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661069d9092919063ffffffff16565b5050565b610769838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b505050565b61078d8273ffffffffffffffffffffffffffffffffffffffff166109b9565b6107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061084e578051825260208201915060208101905060208303925061082b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108b0576040519150601f19603f3d011682016040523d82523d6000602084013e6108b5565b606091505b50915091508161092d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156109b35780806020019051602081101561094c57600080fd5b81019080805190602001909291905050506109b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610a50602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156109fb57506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582009fdb3fb28b95cd7833d0999d9a88cf7a19d39b07eea4e2a0dd54247d4ff988264736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ECDSA.json b/node_modules/@openzeppelin/contracts/build/contracts/ECDSA.json new file mode 100644 index 0000000..a784686 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ECDSA.json @@ -0,0 +1,1583 @@ +{ + "fileName": "ECDSA.sol", + "contractName": "ECDSA", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n // Check the signature length\n if (signature.length != 65) {\n revert(\"ECDSA: invalid signature length\");\n }\n\n // Divide the signature in r, s and v variables\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n revert(\"ECDSA: invalid signature 's' value\");\n }\n\n if (v != 27 && v != 28) {\n revert(\"ECDSA: invalid signature 'v' value\");\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n require(signer != address(0), \"ECDSA: invalid signature\");\n\n return signer;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * replicates the behavior of the\n * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\n * JSON-RPC method.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n}\n", + "sourcePath": "contracts/cryptography/ECDSA.sol", + "sourceMap": "264:3399:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "264:3399:8:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 1674 + ] + }, + "id": 1675, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1578, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:8" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1579, + "nodeType": "StructuredDocumentation", + "src": "58:205:8", + "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address." + }, + "fullyImplemented": true, + "id": 1674, + "linearizedBaseContracts": [ + 1674 + ], + "name": "ECDSA", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1655, + "nodeType": "Block", + "src": "1151:1981:8", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1589, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "1203:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1203:16:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1223:2:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "1203:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1598, + "nodeType": "IfStatement", + "src": "1199:94:8", + "trueBody": { + "id": 1597, + "nodeType": "Block", + "src": "1227:66:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "45434453413a20696e76616c6964207369676e6174757265206c656e677468", + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1248:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77", + "typeString": "literal_string \"ECDSA: invalid signature length\"" + }, + "value": "ECDSA: invalid signature length" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77", + "typeString": "literal_string \"ECDSA: invalid signature length\"" + } + ], + "id": 1593, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "1241:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1241:41:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1596, + "nodeType": "ExpressionStatement", + "src": "1241:41:8" + } + ] + } + }, + { + "assignments": [ + 1600 + ], + "declarations": [ + { + "constant": false, + "id": 1600, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1655, + "src": "1359:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1599, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1359:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1601, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1359:9:8" + }, + { + "assignments": [ + 1603 + ], + "declarations": [ + { + "constant": false, + "id": 1603, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1655, + "src": "1378:9:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1602, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1378:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1604, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1378:9:8" + }, + { + "assignments": [ + 1606 + ], + "declarations": [ + { + "constant": false, + "id": 1606, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1655, + "src": "1397:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1605, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1397:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1607, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1397:7:8" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1603:155:8", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1617:32:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "1632:9:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1643:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1628:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "1628:20:8" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1622:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "1622:27:8" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "1617:1:8" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1662:32:8", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "1677:9:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1688:4:8", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1673:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "1673:20:8" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1667:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "1667:27:8" + }, + "variableNames": [ + { + "name": "s", + "nodeType": "YulIdentifier", + "src": "1662:1:8" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1707:41:8", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1717:1:8", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nodeType": "YulIdentifier", + "src": "1730:9:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1741:4:8", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1726:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "1726:20:8" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1720:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "1720:27:8" + } + ], + "functionName": { + "name": "byte", + "nodeType": "YulIdentifier", + "src": "1712:4:8" + }, + "nodeType": "YulFunctionCall", + "src": "1712:36:8" + }, + "variableNames": [ + { + "name": "v", + "nodeType": "YulIdentifier", + "src": "1707:1:8" + } + ] + } + ] + }, + "evmVersion": "petersburg", + "externalReferences": [ + { + "declaration": 1600, + "isOffset": false, + "isSlot": false, + "src": "1617:1:8", + "valueSize": 1 + }, + { + "declaration": 1603, + "isOffset": false, + "isSlot": false, + "src": "1662:1:8", + "valueSize": 1 + }, + { + "declaration": 1584, + "isOffset": false, + "isSlot": false, + "src": "1632:9:8", + "valueSize": 1 + }, + { + "declaration": 1584, + "isOffset": false, + "isSlot": false, + "src": "1677:9:8", + "valueSize": 1 + }, + { + "declaration": 1584, + "isOffset": false, + "isSlot": false, + "src": "1730:9:8", + "valueSize": 1 + }, + { + "declaration": 1606, + "isOffset": false, + "isSlot": false, + "src": "1707:1:8", + "valueSize": 1 + } + ], + "id": 1608, + "nodeType": "InlineAssembly", + "src": "1594:164:8" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1611, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "2654:1:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2646:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2646:7:8", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2646:10:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130", + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2659:66:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1", + "typeString": "int_const 5789...(69 digits omitted)...7168" + }, + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "src": "2646:79:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1620, + "nodeType": "IfStatement", + "src": "2642:154:8", + "trueBody": { + "id": 1619, + "nodeType": "Block", + "src": "2727:69:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202773272076616c7565", + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2748:36:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd", + "typeString": "literal_string \"ECDSA: invalid signature 's' value\"" + }, + "value": "ECDSA: invalid signature 's' value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd", + "typeString": "literal_string \"ECDSA: invalid signature 's' value\"" + } + ], + "id": 1615, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "2741:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2741:44:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1618, + "nodeType": "ExpressionStatement", + "src": "2741:44:8" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1621, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "2810:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2815:2:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "2810:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1624, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "2821:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3238", + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2826:2:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "src": "2821:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2810:18:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1633, + "nodeType": "IfStatement", + "src": "2806:93:8", + "trueBody": { + "id": 1632, + "nodeType": "Block", + "src": "2830:69:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "45434453413a20696e76616c6964207369676e6174757265202776272076616c7565", + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2851:36:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4", + "typeString": "literal_string \"ECDSA: invalid signature 'v' value\"" + }, + "value": "ECDSA: invalid signature 'v' value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4", + "typeString": "literal_string \"ECDSA: invalid signature 'v' value\"" + } + ], + "id": 1628, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "2844:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2844:44:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1631, + "nodeType": "ExpressionStatement", + "src": "2844:44:8" + } + ] + } + }, + { + "assignments": [ + 1635 + ], + "declarations": [ + { + "constant": false, + "id": 1635, + "mutability": "mutable", + "name": "signer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1655, + "src": "2993:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2993:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1642, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1637, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1582, + "src": "3020:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1638, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1606, + "src": "3026:1:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1639, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "3029:1:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1640, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "3032:1:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1636, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "3010:9:8", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3010:24:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2993:41:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1644, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "3052:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3070:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3062:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1645, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3062:7:8", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3062:10:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3052:20:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45434453413a20696e76616c6964207369676e6174757265", + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3074:26:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be", + "typeString": "literal_string \"ECDSA: invalid signature\"" + }, + "value": "ECDSA: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be", + "typeString": "literal_string \"ECDSA: invalid signature\"" + } + ], + "id": 1643, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3044:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3044:57:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1652, + "nodeType": "ExpressionStatement", + "src": "3044:57:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1653, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "3119:6:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1588, + "id": 1654, + "nodeType": "Return", + "src": "3112:13:8" + } + ] + }, + "documentation": { + "id": 1580, + "nodeType": "StructuredDocumentation", + "src": "284:775:8", + "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it." + }, + "id": 1656, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1582, + "mutability": "mutable", + "name": "hash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1656, + "src": "1081:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1581, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1081:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1584, + "mutability": "mutable", + "name": "signature", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1656, + "src": "1095:22:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1583, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1095:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1080:38:8" + }, + "returnParameters": { + "id": 1588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1587, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1656, + "src": "1142:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1586, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1142:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1141:9:8" + }, + "scope": 1674, + "src": "1064:2068:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1672, + "nodeType": "Block", + "src": "3474:187:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332", + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3612:34:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\"" + }, + "value": "\u0019Ethereum Signed Message:\n32" + }, + { + "argumentTypes": null, + "id": 1668, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "3648:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1665, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3595:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3595:16:8", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3595:58:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1664, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3585:9:8", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3585:69:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1663, + "id": 1671, + "nodeType": "Return", + "src": "3578:76:8" + } + ] + }, + "documentation": { + "id": 1657, + "nodeType": "StructuredDocumentation", + "src": "3138:253:8", + "text": " @dev Returns an Ethereum Signed Message, created from a `hash`. This\n replicates the behavior of the\n https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\n JSON-RPC method.\n See {recover}." + }, + "id": 1673, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1659, + "mutability": "mutable", + "name": "hash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1673, + "src": "3428:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1658, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3428:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3427:14:8" + }, + "returnParameters": { + "id": 1663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1662, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1673, + "src": "3465:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3465:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3464:9:8" + }, + "scope": 1674, + "src": "3396:265:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1675, + "src": "264:3399:8" + } + ], + "src": "33:3631:8" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209371176f329430ba7e89cfaa9f1e1db46a1378fab3dd17f52d348abe6db2162d64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209371176f329430ba7e89cfaa9f1e1db46a1378fab3dd17f52d348abe6db2162d64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ECDSAMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ECDSAMock.json new file mode 100644 index 0000000..f3de43d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ECDSAMock.json @@ -0,0 +1,485 @@ +{ + "fileName": "ECDSAMock.sol", + "contractName": "ECDSAMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../cryptography/ECDSA.sol\";\n\ncontract ECDSAMock {\n using ECDSA for bytes32;\n\n function recover(bytes32 hash, bytes memory signature) public pure returns (address) {\n return hash.recover(signature);\n }\n\n function toEthSignedMessageHash(bytes32 hash) public pure returns (bytes32) {\n return hash.toEthSignedMessageHash();\n }\n}\n", + "sourcePath": "contracts/mocks/ECDSAMock.sol", + "sourceMap": "95:324:27:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "95:324:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;150:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;288:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;150:132;226:7;252:23;265:9;252:4;:12;;:23;;;;:::i;:::-;245:30;;150:132;;;;:::o;288:129::-;355:7;381:29;:4;:27;:29::i;:::-;374:36;;288:129;;;:::o;1064:2068:8:-;1142:7;1223:2;1203:9;:16;:22;1199:94;;1241:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:94;1359:9;1378;1397:7;1643:4;1632:9;1628:20;1622:27;1617:32;;1688:4;1677:9;1673:20;1667:27;1662:32;;1741:4;1730:9;1726:20;1720:27;1717:1;1712:36;1707:41;;2659:66;2654:1;2646:10;;:79;2642:154;;;2741:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:154;2815:2;2810:1;:7;;;;:18;;;;;2826:2;2821:1;:7;;;;2810:18;2806:93;;;2844:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:93;2993:14;3010:24;3020:4;3026:1;3029;3032;3010:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:41;;3070:1;3052:20;;:6;:20;;;;3044:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3119:6;3112:13;;;;;;1064:2068;;;;:::o;3396:265::-;3465:7;3648:4;3595:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3585:69;;;;;;3578:76;;3396:265;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "recover", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "toEthSignedMessageHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ECDSAMock.sol", + "exportedSymbols": { + "ECDSAMock": [ + 3348 + ] + }, + "id": 3349, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3316, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:27" + }, + { + "absolutePath": "contracts/cryptography/ECDSA.sol", + "file": "../cryptography/ECDSA.sol", + "id": 3317, + "nodeType": "ImportDirective", + "scope": 3349, + "sourceUnit": 1661, + "src": "58:35:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3348, + "linearizedBaseContracts": [ + 3348 + ], + "name": "ECDSAMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3320, + "libraryName": { + "contractScope": null, + "id": 3318, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1660, + "src": "126:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$1660", + "typeString": "library ECDSA" + } + }, + "nodeType": "UsingForDirective", + "src": "120:24:27", + "typeName": { + "id": 3319, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "136:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "body": { + "id": 3334, + "nodeType": "Block", + "src": "235:47:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3331, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3324, + "src": "265:9:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3329, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3322, + "src": "252:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 1642, + "src": "252:12:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "252:23:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3328, + "id": 3333, + "nodeType": "Return", + "src": "245:30:27" + } + ] + }, + "documentation": null, + "functionSelector": "19045a25", + "id": 3335, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3322, + "mutability": "mutable", + "name": "hash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3335, + "src": "167:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3321, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "167:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3324, + "mutability": "mutable", + "name": "signature", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3335, + "src": "181:22:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3323, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "181:5:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "166:38:27" + }, + "returnParameters": { + "id": 3328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3327, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3335, + "src": "226:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3326, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "226:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "225:9:27" + }, + "scope": 3348, + "src": "150:132:27", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3346, + "nodeType": "Block", + "src": "364:53:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3342, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3337, + "src": "381:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 1659, + "src": "381:27:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "381:29:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3341, + "id": 3345, + "nodeType": "Return", + "src": "374:36:27" + } + ] + }, + "documentation": null, + "functionSelector": "918a15cf", + "id": 3347, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3337, + "mutability": "mutable", + "name": "hash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3347, + "src": "320:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "320:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "319:14:27" + }, + "returnParameters": { + "id": 3341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3340, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3347, + "src": "355:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "355:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "354:9:27" + }, + "scope": 3348, + "src": "288:129:27", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3349, + "src": "95:324:27" + } + ], + "src": "33:387:27" + }, + "bytecode": "0x608060405234801561001057600080fd5b5061051e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806319045a251461003b578063918a15cf14610140575b600080fd5b6100fe6004803603604081101561005157600080fd5b81019080803590602001909291908035906020019064010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460018302840111640100000000831117156100ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610182565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016c6004803603602081101561015657600080fd5b810190808035906020019092919050505061019f565b6040518082815260200191505060405180910390f35b600061019782846101b190919063ffffffff16565b905092915050565b60006101aa8261044c565b9050919050565b6000604182511461022a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104a56022913960400191505060405180910390fd5b601b8160ff16141580156102db5750601c8160ff1614155b15610331576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104c76022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610390573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561043f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182815260200191505060405160208183030381529060405280519060200120905091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a26469706673582212206f5ae35c026e3014d70ba1115460035959233f74bd2b14b0ddfe67c9e9c3cbc164736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806319045a251461003b578063918a15cf14610140575b600080fd5b6100fe6004803603604081101561005157600080fd5b81019080803590602001909291908035906020019064010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460018302840111640100000000831117156100ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610182565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016c6004803603602081101561015657600080fd5b810190808035906020019092919050505061019f565b6040518082815260200191505060405180910390f35b600061019782846101b190919063ffffffff16565b905092915050565b60006101aa8261044c565b9050919050565b6000604182511461022a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104a56022913960400191505060405180910390fd5b601b8160ff16141580156102db5750601c8160ff1614155b15610331576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806104c76022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610390573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561043f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182815260200191505060405160208183030381529060405280519060200120905091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a26469706673582212206f5ae35c026e3014d70ba1115460035959233f74bd2b14b0ddfe67c9e9c3cbc164736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1155.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155.json new file mode 100644 index 0000000..fd2a159 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155.json @@ -0,0 +1,14434 @@ +{ + "fileName": "ERC1155.sol", + "contractName": "ERC1155", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IERC1155.sol\";\nimport \"./IERC1155MetadataURI.sol\";\nimport \"./IERC1155Receiver.sol\";\nimport \"../../GSN/Context.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n *\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n using SafeMath for uint256;\n using Address for address;\n\n // Mapping from token ID to account balances\n mapping (uint256 => mapping(address => uint256)) private _balances;\n\n // Mapping from account to operator approvals\n mapping (address => mapping(address => bool)) private _operatorApprovals;\n\n // Used as the URI for all token types by relying on ID substition, e.g. https://token-cdn-domain/{id}.json\n string private _uri;\n\n /*\n * bytes4(keccak256('balanceOf(address,uint256)')) == 0x00fdd58e\n * bytes4(keccak256('balanceOfBatch(address[],uint256[])')) == 0x4e1273f4\n * bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n * bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n * bytes4(keccak256('safeTransferFrom(address,address,uint256,uint256,bytes)')) == 0xf242432a\n * bytes4(keccak256('safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)')) == 0x2eb2c2d6\n *\n * => 0x00fdd58e ^ 0x4e1273f4 ^ 0xa22cb465 ^\n * 0xe985e9c5 ^ 0xf242432a ^ 0x2eb2c2d6 == 0xd9b67a26\n */\n bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26;\n\n /*\n * bytes4(keccak256('uri(uint256)')) == 0x0e89341c\n */\n bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c;\n\n /**\n * @dev See {_setURI}.\n */\n constructor (string memory uri) public {\n _setURI(uri);\n\n // register the supported interfaces to conform to ERC1155 via ERC165\n _registerInterface(_INTERFACE_ID_ERC1155);\n\n // register the supported interfaces to conform to ERC1155MetadataURI via ERC165\n _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI);\n }\n\n /**\n * @dev See {IERC1155MetadataURI-uri}.\n *\n * This implementation returns the same URI for *all* token types. It relies\n * on the token type ID substituion mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * Clients calling this function must replace the `\\{id\\}` substring with the\n * actual token type ID.\n */\n function uri(uint256) external view override returns (string memory) {\n return _uri;\n }\n\n /**\n * @dev See {IERC1155-balanceOf}.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) public view override returns (uint256) {\n require(account != address(0), \"ERC1155: balance query for the zero address\");\n return _balances[id][account];\n }\n\n /**\n * @dev See {IERC1155-balanceOfBatch}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(\n address[] memory accounts,\n uint256[] memory ids\n )\n public\n view\n override\n returns (uint256[] memory)\n {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n for (uint256 i = 0; i < accounts.length; ++i) {\n require(accounts[i] != address(0), \"ERC1155: batch balance query for the zero address\");\n batchBalances[i] = _balances[ids[i]][accounts[i]];\n }\n\n return batchBalances;\n }\n\n /**\n * @dev See {IERC1155-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n require(_msgSender() != operator, \"ERC1155: setting approval status for self\");\n\n _operatorApprovals[_msgSender()][operator] = approved;\n emit ApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC1155-isApprovedForAll}.\n */\n function isApprovedForAll(address account, address operator) public view override returns (bool) {\n return _operatorApprovals[account][operator];\n }\n\n /**\n * @dev See {IERC1155-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n )\n public\n virtual\n override\n {\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n _balances[id][from] = _balances[id][from].sub(amount, \"ERC1155: insufficient balance for transfer\");\n _balances[id][to] = _balances[id][to].add(amount);\n\n emit TransferSingle(operator, from, to, id, amount);\n\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n }\n\n /**\n * @dev See {IERC1155-safeBatchTransferFrom}.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n public\n virtual\n override\n {\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: transfer caller is not owner nor approved\"\n );\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n _balances[id][from] = _balances[id][from].sub(\n amount,\n \"ERC1155: insufficient balance for transfer\"\n );\n _balances[id][to] = _balances[id][to].add(amount);\n }\n\n emit TransferBatch(operator, from, to, ids, amounts);\n\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n }\n\n /**\n * @dev Sets a new URI for all token types, by relying on the token type ID\n * substituion mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * By this mechanism, any occurence of the `\\{id\\}` substring in either the\n * URI or any of the amounts in the JSON file at said URI will be replaced by\n * clients with the token type ID.\n *\n * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n * interpreted by clients as\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n * for token type ID 0x4cce0.\n *\n * See {uri}.\n *\n * Because these URIs cannot be meaningfully represented by the {URI} event,\n * this function emits no events.\n */\n function _setURI(string memory newuri) internal virtual {\n _uri = newuri;\n }\n\n /**\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual {\n require(account != address(0), \"ERC1155: mint to the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n _balances[id][account] = _balances[id][account].add(amount);\n emit TransferSingle(operator, address(0), account, id, amount);\n\n _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n for (uint i = 0; i < ids.length; i++) {\n _balances[ids[i]][to] = amounts[i].add(_balances[ids[i]][to]);\n }\n\n emit TransferBatch(operator, address(0), to, ids, amounts);\n\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n }\n\n /**\n * @dev Destroys `amount` tokens of token type `id` from `account`\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens of token type `id`.\n */\n function _burn(address account, uint256 id, uint256 amount) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), \"\");\n\n _balances[id][account] = _balances[id][account].sub(\n amount,\n \"ERC1155: burn amount exceeds balance\"\n );\n\n emit TransferSingle(operator, account, address(0), id, amount);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n */\n function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, account, address(0), ids, amounts, \"\");\n\n for (uint i = 0; i < ids.length; i++) {\n _balances[ids[i]][account] = _balances[ids[i]][account].sub(\n amounts[i],\n \"ERC1155: burn amount exceeds balance\"\n );\n }\n\n emit TransferBatch(operator, account, address(0), ids, amounts);\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `id` and `amount` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n internal virtual\n { }\n\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n )\n private\n {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n if (response != IERC1155Receiver(to).onERC1155Received.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n private\n {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) {\n if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n\n return array;\n }\n}\n", + "sourcePath": "contracts/token/ERC1155/ERC1155.sol", + "sourceMap": "512:13738:76:-:0;;;1964:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:40:10;418:10;770:20;;751:18;;;:40;;:::i;:::-;2013:12:76;2021:3;2013:7;;;:12;;:::i;:::-;2114:41;1752:10;2133:21;;2114:18;;;:41;;:::i;:::-;2255:54;1904:10;2274:34;;2255:18;;;:54;;:::i;:::-;1964:352;512:13738;;1482:198:10;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;7585:86:76:-;7658:6;7651:4;:13;;;;;;;;;;;;:::i;:::-;;7585:86;:::o;512:13738::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "512:13738:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2953:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;948:140:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2714:97:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5580:1184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3330:615;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4013:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4386:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4611:897;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2953:220;3031:7;3077:1;3058:21;;:7;:21;;;;3050:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3144:9;:13;3154:2;3144:13;;;;;;;;;;;:22;3158:7;3144:22;;;;;;;;;;;;;;;;3137:29;;2953:220;;;;:::o;948:140:10:-;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;2714:97:76:-;2768:13;2800:4;2793:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:97;;;:::o;5580:1184::-;5834:7;:14;5820:3;:10;:28;5812:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5925:1;5911:16;;:2;:16;;;;5903:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6008:12;:10;:12::i;:::-;6000:20;;:4;:20;;;:60;;;;6024:36;6041:4;6047:12;:10;:12::i;:::-;6024:16;:36::i;:::-;6000:60;5979:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6147:16;6166:12;:10;:12::i;:::-;6147:31;;6189:60;6210:8;6220:4;6226:2;6230:3;6235:7;6244:4;6189:20;:60::i;:::-;6265:9;6277:1;6265:13;;6260:349;6284:3;:10;6280:1;:14;6260:349;;;6315:10;6328:3;6332:1;6328:6;;;;;;;;;;;;;;6315:19;;6348:14;6365:7;6373:1;6365:10;;;;;;;;;;;;;;6348:27;;6412:123;6453:6;6412:123;;;;;;;;;;;;;;;;;:9;:13;6422:2;6412:13;;;;;;;;;;;:19;6426:4;6412:19;;;;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6390:9;:13;6400:2;6390:13;;;;;;;;;;;:19;6404:4;6390:19;;;;;;;;;;;;;;;:145;;;;6569:29;6591:6;6569:9;:13;6579:2;6569:13;;;;;;;;;;;:17;6583:2;6569:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;6549:9;:13;6559:2;6549:13;;;;;;;;;;;:17;6563:2;6549:17;;;;;;;;;;;;;;;:49;;;;6260:349;;6296:3;;;;;6260:349;;;;6654:2;6624:47;;6648:4;6624:47;;6638:8;6624:47;;;6658:3;6663:7;6624:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6682:75;6718:8;6728:4;6734:2;6738:3;6743:7;6752:4;6682:35;:75::i;:::-;5580:1184;;;;;;:::o;3330:615::-;3487:16;3546:3;:10;3527:8;:15;:29;3519:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:30;3660:8;:15;3646:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:63;;3692:9;3704:1;3692:13;;3687:221;3711:8;:15;3707:1;:19;3687:221;;;3778:1;3755:25;;:8;3764:1;3755:11;;;;;;;;;;;;;;:25;;;;3747:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3867:9;:17;3877:3;3881:1;3877:6;;;;;;;;;;;;;;3867:17;;;;;;;;;;;:30;3885:8;3894:1;3885:11;;;;;;;;;;;;;;3867:30;;;;;;;;;;;;;;;;3848:13;3862:1;3848:16;;;;;;;;;;;;;:49;;;;;3728:3;;;;;3687:221;;;;3925:13;3918:20;;;3330:615;;;;:::o;4013:306::-;4131:8;4115:24;;:12;:10;:12::i;:::-;:24;;;;4107:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4241:8;4196:18;:32;4215:12;:10;:12::i;:::-;4196:32;;;;;;;;;;;;;;;:42;4229:8;4196:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;4293:8;4264:48;;4279:12;:10;:12::i;:::-;4264:48;;;4303:8;4264:48;;;;;;;;;;;;;;;;;;;;;;4013:306;;:::o;4386:158::-;4477:4;4500:18;:27;4519:7;4500:27;;;;;;;;;;;;;;;:37;4528:8;4500:37;;;;;;;;;;;;;;;;;;;;;;;;;4493:44;;4386:158;;;;:::o;4611:897::-;4840:1;4826:16;;:2;:16;;;;4818:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4923:12;:10;:12::i;:::-;4915:20;;:4;:20;;;:60;;;;4939:36;4956:4;4962:12;:10;:12::i;:::-;4939:16;:36::i;:::-;4915:60;4894:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5053:16;5072:12;:10;:12::i;:::-;5053:31;;5095:96;5116:8;5126:4;5132:2;5136:21;5154:2;5136:17;:21::i;:::-;5159:25;5177:6;5159:17;:25::i;:::-;5186:4;5095:20;:96::i;:::-;5224:77;5248:6;5224:77;;;;;;;;;;;;;;;;;:9;:13;5234:2;5224:13;;;;;;;;;;;:19;5238:4;5224:19;;;;;;;;;;;;;;;;:23;;:77;;;;;:::i;:::-;5202:9;:13;5212:2;5202:13;;;;;;;;;;;:19;5216:4;5202:19;;;;;;;;;;;;;;;:99;;;;5331:29;5353:6;5331:9;:13;5341:2;5331:13;;;;;;;;;;;:17;5345:2;5331:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;5311:9;:13;5321:2;5311:13;;;;;;;;;;;:17;5325:2;5311:17;;;;;;;;;;;;;;;:49;;;;5407:2;5376:46;;5401:4;5376:46;;5391:8;5376:46;;;5411:2;5415:6;5376:46;;;;;;;;;;;;;;;;;;;;;;;;5433:68;5464:8;5474:4;5480:2;5484;5488:6;5496:4;5433:30;:68::i;:::-;4611:897;;;;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;12291:227:76:-;;;;;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;13271:778:76:-;13515:15;:2;:13;;;:15::i;:::-;13511:532;;;13567:2;13550:43;;;13594:8;13604:4;13610:3;13615:7;13624:4;13550:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:487;;;;;;;;;;;;;13909:6;13902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:487;13956:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:487;13690:52;;;13678:64;;;:8;:64;;;;13674:161;;13766:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13674:161;13630:219;13511:532;13271:778;;;;;;:::o;14055:193::-;14121:16;14149:22;14188:1;14174:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14149:41;;14211:7;14200:5;14206:1;14200:8;;;;;;;;;;;;;:18;;;;;14236:5;14229:12;;;14055:193;;;:::o;12524:741::-;12743:15;:2;:13;;;:15::i;:::-;12739:520;;;12795:2;12778:38;;;12817:8;12827:4;12833:2;12837:6;12845:4;12778:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12774:475;;;;;;;;;;;;;13125:6;13118:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12774:475;13172:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12774:475;12911:47;;;12899:59;;;:8;:59;;;;12895:156;;12982:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:156;12851:214;12739:520;12524:741;;;;;;:::o;718:610:104:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;5:97:-1:-;;93:2;89:7;84:2;77:5;73:14;69:28;59:38;;53:49;;;;110:106;;200:5;195:3;191:15;169:37;;163:53;;;;224:739;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;336;333;318:23;357:34;388:1;382:8;357:34;;;414:10;409:3;406:19;396:2;;429:5;;;396:2;460;454:9;514:1;496:16;492:24;489:1;483:4;468:49;543:4;537:11;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;553:2;693:6;687:4;683:17;725:3;719:10;748:18;740:6;737:30;734:2;;;770:5;;;;;;;734:2;814:6;807:4;802:3;798:14;794:27;847:16;841:4;837:27;832:3;829:36;826:2;;;868:5;;;;;;;;826:2;912:29;934:6;912:29;;;905:4;900:3;896:14;892:50;888:2;881:62;955:3;948:10;;267:696;;;;;;;;", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/ERC1155.sol", + "exportedSymbols": { + "ERC1155": [ + 8313 + ] + }, + "id": 8314, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7294, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:76" + }, + { + "absolutePath": "contracts/token/ERC1155/IERC1155.sol", + "file": "./IERC1155.sol", + "id": 7295, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 8632, + "src": "58:24:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC1155/IERC1155MetadataURI.sol", + "file": "./IERC1155MetadataURI.sol", + "id": 7296, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 8647, + "src": "83:35:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC1155/IERC1155Receiver.sol", + "file": "./IERC1155Receiver.sol", + "id": 7297, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 8688, + "src": "119:32:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 7298, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 23, + "src": "152:31:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 7299, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 1803, + "src": "184:40:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 7300, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 2422, + "src": "225:33:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 7301, + "nodeType": "ImportDirective", + "scope": 8314, + "sourceUnit": 12815, + "src": "259:33:76", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7303, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "532:7:76", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 7304, + "nodeType": "InheritanceSpecifier", + "src": "532:7:76" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7305, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1802, + "src": "541:6:76", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$1802", + "typeString": "contract ERC165" + } + }, + "id": 7306, + "nodeType": "InheritanceSpecifier", + "src": "541:6:76" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7307, + "name": "IERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8631, + "src": "549:8:76", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$8631", + "typeString": "contract IERC1155" + } + }, + "id": 7308, + "nodeType": "InheritanceSpecifier", + "src": "549:8:76" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7309, + "name": "IERC1155MetadataURI", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8646, + "src": "559:19:76", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155MetadataURI_$8646", + "typeString": "contract IERC1155MetadataURI" + } + }, + "id": 7310, + "nodeType": "InheritanceSpecifier", + "src": "559:19:76" + } + ], + "contractDependencies": [ + 22, + 1802, + 2048, + 8631, + 8646 + ], + "contractKind": "contract", + "documentation": { + "id": 7302, + "nodeType": "StructuredDocumentation", + "src": "294:217:76", + "text": " @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._" + }, + "fullyImplemented": true, + "id": 8313, + "linearizedBaseContracts": [ + 8313, + 8646, + 8631, + 1802, + 2048, + 22 + ], + "name": "ERC1155", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 7313, + "libraryName": { + "contractScope": null, + "id": 7311, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "591:8:76", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "585:27:76", + "typeName": { + "id": 7312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "604:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 7316, + "libraryName": { + "contractScope": null, + "id": 7314, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "623:7:76", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "617:26:76", + "typeName": { + "id": 7315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "635:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": false, + "id": 7322, + "mutability": "mutable", + "name": "_balances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8313, + "src": "698:66:76", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + }, + "typeName": { + "id": 7321, + "keyType": { + "id": 7317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "707:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "698:48:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + }, + "valueType": { + "id": 7320, + "keyType": { + "id": 7318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "726:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "718:27:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 7319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "737:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 7328, + "mutability": "mutable", + "name": "_operatorApprovals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8313, + "src": "821:72:76", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 7327, + "keyType": { + "id": 7323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "830:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "821:45:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 7326, + "keyType": { + "id": 7324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "849:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "841:24:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 7325, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "860:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 7330, + "mutability": "mutable", + "name": "_uri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8313, + "src": "1012:19:76", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 7329, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1012:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 7333, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC1155", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8313, + "src": "1704:58:76", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7331, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1704:6:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30786439623637613236", + "id": 7332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1752:10:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3652614694_by_1", + "typeString": "int_const 3652614694" + }, + "value": "0xd9b67a26" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 7336, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC1155_METADATA_URI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8313, + "src": "1843:71:76", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7334, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1843:6:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783065383933343163", + "id": 7335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1904:10:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_243872796_by_1", + "typeString": "int_const 243872796" + }, + "value": "0x0e89341c" + }, + "visibility": "private" + }, + { + "body": { + "id": 7354, + "nodeType": "Block", + "src": "2003:313:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7343, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7339, + "src": "2021:3:76", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 7342, + "name": "_setURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7779, + "src": "2013:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 7344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2013:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7345, + "nodeType": "ExpressionStatement", + "src": "2013:12:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7347, + "name": "_INTERFACE_ID_ERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7333, + "src": "2133:21:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 7346, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "2114:18:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 7348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2114:41:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7349, + "nodeType": "ExpressionStatement", + "src": "2114:41:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7351, + "name": "_INTERFACE_ID_ERC1155_METADATA_URI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7336, + "src": "2274:34:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 7350, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "2255:18:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 7352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2255:54:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7353, + "nodeType": "ExpressionStatement", + "src": "2255:54:76" + } + ] + }, + "documentation": { + "id": 7337, + "nodeType": "StructuredDocumentation", + "src": "1921:38:76", + "text": " @dev See {_setURI}." + }, + "id": 7355, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7339, + "mutability": "mutable", + "name": "uri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7355, + "src": "1977:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7338, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1977:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1976:19:76" + }, + "returnParameters": { + "id": 7341, + "nodeType": "ParameterList", + "parameters": [], + "src": "2003:0:76" + }, + "scope": 8313, + "src": "1964:352:76", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8645 + ], + "body": { + "id": 7366, + "nodeType": "Block", + "src": "2783:28:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 7364, + "name": "_uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7330, + "src": "2800:4:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 7363, + "id": 7365, + "nodeType": "Return", + "src": "2793:11:76" + } + ] + }, + "documentation": { + "id": 7356, + "nodeType": "StructuredDocumentation", + "src": "2322:387:76", + "text": " @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substituion mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID." + }, + "functionSelector": "0e89341c", + "id": 7367, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uri", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7360, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2750:8:76" + }, + "parameters": { + "id": 7359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7358, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7367, + "src": "2727:7:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2727:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2726:9:76" + }, + "returnParameters": { + "id": 7363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7362, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7367, + "src": "2768:13:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7361, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2768:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2767:15:76" + }, + "scope": 8313, + "src": "2714:97:76", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 8569 + ], + "body": { + "id": 7394, + "nodeType": "Block", + "src": "3040:133:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7379, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7370, + "src": "3058:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3077:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3069:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7380, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3069:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3069:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3058:21:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", + "id": 7385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3081:45:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9", + "typeString": "literal_string \"ERC1155: balance query for the zero address\"" + }, + "value": "ERC1155: balance query for the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9", + "typeString": "literal_string \"ERC1155: balance query for the zero address\"" + } + ], + "id": 7378, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3050:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3050:77:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7387, + "nodeType": "ExpressionStatement", + "src": "3050:77:76" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7388, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "3144:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7390, + "indexExpression": { + "argumentTypes": null, + "id": 7389, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7372, + "src": "3154:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3144:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7392, + "indexExpression": { + "argumentTypes": null, + "id": 7391, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7370, + "src": "3158:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3144:22:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7377, + "id": 7393, + "nodeType": "Return", + "src": "3137:29:76" + } + ] + }, + "documentation": { + "id": 7368, + "nodeType": "StructuredDocumentation", + "src": "2817:131:76", + "text": " @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address." + }, + "functionSelector": "00fdd58e", + "id": 7395, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7374, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3013:8:76" + }, + "parameters": { + "id": 7373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7370, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7395, + "src": "2972:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2972:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7372, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7395, + "src": "2989:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2989:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2971:29:76" + }, + "returnParameters": { + "id": 7377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7376, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7395, + "src": "3031:7:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7375, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3031:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3030:9:76" + }, + "scope": 8313, + "src": "2953:220:76", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8582 + ], + "body": { + "id": 7471, + "nodeType": "Block", + "src": "3509:436:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7410, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7399, + "src": "3527:8:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 7411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3527:15:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7412, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7402, + "src": "3546:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3546:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3527:29:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368", + "id": 7415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3558:43:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5", + "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\"" + }, + "value": "ERC1155: accounts and ids length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5", + "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\"" + } + ], + "id": 7409, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3519:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3519:83:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7417, + "nodeType": "ExpressionStatement", + "src": "3519:83:76" + }, + { + "assignments": [ + 7422 + ], + "declarations": [ + { + "constant": false, + "id": 7422, + "mutability": "mutable", + "name": "batchBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7471, + "src": "3613:30:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3613:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7421, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3613:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7429, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7426, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7399, + "src": "3660:8:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 7427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3660:15:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3646:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 7423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3650:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7424, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3650:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 7428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3646:30:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3613:63:76" + }, + { + "body": { + "id": 7467, + "nodeType": "Block", + "src": "3733:175:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7442, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7399, + "src": "3755:8:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 7444, + "indexExpression": { + "argumentTypes": null, + "id": 7443, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7431, + "src": "3764:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3755:11:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3778:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3770:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3770:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3770:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3755:25:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373", + "id": 7450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3782:51:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1fbbb69d10332726591dc7ee4a23a94661eda2bec5ce6bf93a68249147dc8d9c", + "typeString": "literal_string \"ERC1155: batch balance query for the zero address\"" + }, + "value": "ERC1155: batch balance query for the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1fbbb69d10332726591dc7ee4a23a94661eda2bec5ce6bf93a68249147dc8d9c", + "typeString": "literal_string \"ERC1155: batch balance query for the zero address\"" + } + ], + "id": 7441, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3747:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3747:87:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7452, + "nodeType": "ExpressionStatement", + "src": "3747:87:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7453, + "name": "batchBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7422, + "src": "3848:13:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7455, + "indexExpression": { + "argumentTypes": null, + "id": 7454, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7431, + "src": "3862:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3848:16:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7456, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "3867:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7460, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7457, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7402, + "src": "3877:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7459, + "indexExpression": { + "argumentTypes": null, + "id": 7458, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7431, + "src": "3881:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3877:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3867:17:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7464, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7461, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7399, + "src": "3885:8:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 7463, + "indexExpression": { + "argumentTypes": null, + "id": 7462, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7431, + "src": "3894:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3885:11:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3867:30:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3848:49:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7466, + "nodeType": "ExpressionStatement", + "src": "3848:49:76" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7434, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7431, + "src": "3707:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7435, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7399, + "src": "3711:8:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 7436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3711:15:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3707:19:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7468, + "initializationExpression": { + "assignments": [ + 7431 + ], + "declarations": [ + { + "constant": false, + "id": 7431, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7468, + "src": "3692:9:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3692:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7433, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 7432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3704:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3692:13:76" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 7439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "3728:3:76", + "subExpression": { + "argumentTypes": null, + "id": 7438, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7431, + "src": "3730:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7440, + "nodeType": "ExpressionStatement", + "src": "3728:3:76" + }, + "nodeType": "ForStatement", + "src": "3687:221:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7469, + "name": "batchBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7422, + "src": "3925:13:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 7408, + "id": 7470, + "nodeType": "Return", + "src": "3918:20:76" + } + ] + }, + "documentation": { + "id": 7396, + "nodeType": "StructuredDocumentation", + "src": "3179:146:76", + "text": " @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length." + }, + "functionSelector": "4e1273f4", + "id": 7472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7404, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3461:8:76" + }, + "parameters": { + "id": 7403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7399, + "mutability": "mutable", + "name": "accounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7472, + "src": "3363:25:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 7397, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3363:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7398, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3363:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7402, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7472, + "src": "3398:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7400, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3398:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7401, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3398:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3353:71:76" + }, + "returnParameters": { + "id": 7408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7407, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7472, + "src": "3487:16:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3487:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7406, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3487:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3486:18:76" + }, + "scope": 8313, + "src": "3330:615:76", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8590 + ], + "body": { + "id": 7505, + "nodeType": "Block", + "src": "4097:222:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7482, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4115:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4115:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 7484, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7475, + "src": "4131:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4115:24:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66", + "id": 7486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4141:43:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2", + "typeString": "literal_string \"ERC1155: setting approval status for self\"" + }, + "value": "ERC1155: setting approval status for self" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2", + "typeString": "literal_string \"ERC1155: setting approval status for self\"" + } + ], + "id": 7481, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4107:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4107:78:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7488, + "nodeType": "ExpressionStatement", + "src": "4107:78:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7489, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7328, + "src": "4196:18:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 7493, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7490, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4215:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4215:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4196:32:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 7494, + "indexExpression": { + "argumentTypes": null, + "id": 7492, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7475, + "src": "4229:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4196:42:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 7495, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7477, + "src": "4241:8:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4196:53:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7497, + "nodeType": "ExpressionStatement", + "src": "4196:53:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7499, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4279:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4279:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7501, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7475, + "src": "4293:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7502, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7477, + "src": "4303:8:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 7498, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8552, + "src": "4264:14:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 7503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4264:48:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7504, + "nodeType": "EmitStatement", + "src": "4259:53:76" + } + ] + }, + "documentation": { + "id": 7473, + "nodeType": "StructuredDocumentation", + "src": "3951:57:76", + "text": " @dev See {IERC1155-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 7506, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7479, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4088:8:76" + }, + "parameters": { + "id": 7478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7475, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7506, + "src": "4040:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7474, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4040:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7477, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7506, + "src": "4058:13:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7476, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4058:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4039:33:76" + }, + "returnParameters": { + "id": 7480, + "nodeType": "ParameterList", + "parameters": [], + "src": "4097:0:76" + }, + "scope": 8313, + "src": "4013:306:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 8600 + ], + "body": { + "id": 7523, + "nodeType": "Block", + "src": "4483:61:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7517, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7328, + "src": "4500:18:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 7519, + "indexExpression": { + "argumentTypes": null, + "id": 7518, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7509, + "src": "4519:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4500:27:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 7521, + "indexExpression": { + "argumentTypes": null, + "id": 7520, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7511, + "src": "4528:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4500:37:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7516, + "id": 7522, + "nodeType": "Return", + "src": "4493:44:76" + } + ] + }, + "documentation": { + "id": 7507, + "nodeType": "StructuredDocumentation", + "src": "4325:56:76", + "text": " @dev See {IERC1155-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 7524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7513, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4459:8:76" + }, + "parameters": { + "id": 7512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7509, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7524, + "src": "4412:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4412:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7511, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7524, + "src": "4429:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4429:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4411:35:76" + }, + "returnParameters": { + "id": 7516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7515, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7524, + "src": "4477:4:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7514, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4477:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4476:6:76" + }, + "scope": 8313, + "src": "4386:158:76", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8614 + ], + "body": { + "id": 7629, + "nodeType": "Block", + "src": "4808:700:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7540, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "4826:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4840:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4832:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4832:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4832:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4826:16:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 7546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4844:39:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + }, + "value": "ERC1155: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + } + ], + "id": 7539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4818:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4818:66:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7548, + "nodeType": "ExpressionStatement", + "src": "4818:66:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7550, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "4915:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7551, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4923:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4923:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4915:20:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7555, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "4956:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7556, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4962:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4962:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7554, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7524, + "src": "4939:16:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 7558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4939:36:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4915:60:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 7560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4989:43:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + }, + "value": "ERC1155: caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + } + ], + "id": 7549, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4894:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4894:148:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7562, + "nodeType": "ExpressionStatement", + "src": "4894:148:76" + }, + { + "assignments": [ + 7564 + ], + "declarations": [ + { + "constant": false, + "id": 7564, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7629, + "src": "5053:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7563, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5053:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7567, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7565, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5072:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5072:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5053:31:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7569, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "5116:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7570, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "5126:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7571, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "5132:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7573, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5154:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7572, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8312, + "src": "5136:17:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 7574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5136:21:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7576, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7533, + "src": "5177:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7575, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8312, + "src": "5159:17:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 7577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5159:25:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7578, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7535, + "src": "5186:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7568, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8152, + "src": "5095:20:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 7579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5095:96:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7580, + "nodeType": "ExpressionStatement", + "src": "5095:96:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7581, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "5202:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7584, + "indexExpression": { + "argumentTypes": null, + "id": 7582, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5212:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5202:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7585, + "indexExpression": { + "argumentTypes": null, + "id": 7583, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "5216:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5202:19:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7592, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7533, + "src": "5248:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572", + "id": 7593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5256:44:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + }, + "value": "ERC1155: insufficient balance for transfer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7586, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "5224:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7588, + "indexExpression": { + "argumentTypes": null, + "id": 7587, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5234:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5224:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7590, + "indexExpression": { + "argumentTypes": null, + "id": 7589, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "5238:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5224:19:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "5224:23:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 7594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5224:77:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5202:99:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7596, + "nodeType": "ExpressionStatement", + "src": "5202:99:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7597, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "5311:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7600, + "indexExpression": { + "argumentTypes": null, + "id": 7598, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5321:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5311:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7601, + "indexExpression": { + "argumentTypes": null, + "id": 7599, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "5325:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5311:17:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7608, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7533, + "src": "5353:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7602, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "5331:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7604, + "indexExpression": { + "argumentTypes": null, + "id": 7603, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5341:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5331:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7606, + "indexExpression": { + "argumentTypes": null, + "id": 7605, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "5345:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5331:17:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "5331:21:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5331:29:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5311:49:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7611, + "nodeType": "ExpressionStatement", + "src": "5311:49:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7613, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "5391:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7614, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "5401:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7615, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "5407:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7616, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5411:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7617, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7533, + "src": "5415:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7612, + "name": "TransferSingle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8528, + "src": "5376:14:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256)" + } + }, + "id": 7618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5376:46:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7619, + "nodeType": "EmitStatement", + "src": "5371:51:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7621, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "5464:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7622, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "5474:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7623, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "5480:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7624, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "5484:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7625, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7533, + "src": "5488:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7626, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7535, + "src": "5496:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7620, + "name": "_doSafeTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8217, + "src": "5433:30:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,bytes memory)" + } + }, + "id": 7627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5433:68:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7628, + "nodeType": "ExpressionStatement", + "src": "5433:68:76" + } + ] + }, + "documentation": { + "id": 7525, + "nodeType": "StructuredDocumentation", + "src": "4550:56:76", + "text": " @dev See {IERC1155-safeTransferFrom}." + }, + "functionSelector": "f242432a", + "id": 7630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7537, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4795:8:76" + }, + "parameters": { + "id": 7536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7527, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7630, + "src": "4646:12:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4646:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7529, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7630, + "src": "4668:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4668:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7531, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7630, + "src": "4688:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4688:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7533, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7630, + "src": "4708:14:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4708:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7535, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7630, + "src": "4732:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7534, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4732:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4636:119:76" + }, + "returnParameters": { + "id": 7538, + "nodeType": "ParameterList", + "parameters": [], + "src": "4808:0:76" + }, + "scope": 8313, + "src": "4611:897:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 8630 + ], + "body": { + "id": 7767, + "nodeType": "Block", + "src": "5802:962:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7648, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7638, + "src": "5820:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5820:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7650, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "5834:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5834:14:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5820:28:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368", + "id": 7653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5850:42:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + }, + "value": "ERC1155: ids and amounts length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + } + ], + "id": 7647, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5812:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5812:81:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7655, + "nodeType": "ExpressionStatement", + "src": "5812:81:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7657, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7635, + "src": "5911:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5925:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5917:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5917:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5917:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5911:16:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 7663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5929:39:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + }, + "value": "ERC1155: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + } + ], + "id": 7656, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5903:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5903:66:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7665, + "nodeType": "ExpressionStatement", + "src": "5903:66:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7667, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6000:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7668, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6008:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6008:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6000:20:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7672, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6041:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7673, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6047:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6047:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7671, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7524, + "src": "6024:16:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 7675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6024:36:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6000:60:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 7677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6074:52:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686", + "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\"" + }, + "value": "ERC1155: transfer caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686", + "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\"" + } + ], + "id": 7666, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5979:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5979:157:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7679, + "nodeType": "ExpressionStatement", + "src": "5979:157:76" + }, + { + "assignments": [ + 7681 + ], + "declarations": [ + { + "constant": false, + "id": 7681, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7767, + "src": "6147:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7680, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6147:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7684, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7682, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6166:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6166:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6147:31:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7686, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7681, + "src": "6210:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7687, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6220:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7688, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7635, + "src": "6226:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7689, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7638, + "src": "6230:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7690, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "6235:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7691, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7643, + "src": "6244:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7685, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8152, + "src": "6189:20:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 7692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6189:60:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7693, + "nodeType": "ExpressionStatement", + "src": "6189:60:76" + }, + { + "body": { + "id": 7748, + "nodeType": "Block", + "src": "6301:308:76", + "statements": [ + { + "assignments": [ + 7706 + ], + "declarations": [ + { + "constant": false, + "id": 7706, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7748, + "src": "6315:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6315:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7710, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7707, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7638, + "src": "6328:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7709, + "indexExpression": { + "argumentTypes": null, + "id": 7708, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7695, + "src": "6332:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6328:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6315:19:76" + }, + { + "assignments": [ + 7712 + ], + "declarations": [ + { + "constant": false, + "id": 7712, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7748, + "src": "6348:14:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6348:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7716, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7713, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "6365:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7715, + "indexExpression": { + "argumentTypes": null, + "id": 7714, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7695, + "src": "6373:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6365:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6348:27:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7717, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "6390:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7720, + "indexExpression": { + "argumentTypes": null, + "id": 7718, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7706, + "src": "6400:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6390:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7721, + "indexExpression": { + "argumentTypes": null, + "id": 7719, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6404:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6390:19:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7728, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7712, + "src": "6453:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572", + "id": 7729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6477:44:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + }, + "value": "ERC1155: insufficient balance for transfer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7722, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "6412:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7724, + "indexExpression": { + "argumentTypes": null, + "id": 7723, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7706, + "src": "6422:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6412:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7726, + "indexExpression": { + "argumentTypes": null, + "id": 7725, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6426:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6412:19:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "6412:23:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 7730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6412:123:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6390:145:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7732, + "nodeType": "ExpressionStatement", + "src": "6390:145:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7733, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "6549:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7736, + "indexExpression": { + "argumentTypes": null, + "id": 7734, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7706, + "src": "6559:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6549:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7737, + "indexExpression": { + "argumentTypes": null, + "id": 7735, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7635, + "src": "6563:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6549:17:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7744, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7712, + "src": "6591:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7738, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "6569:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7740, + "indexExpression": { + "argumentTypes": null, + "id": 7739, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7706, + "src": "6579:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6569:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7742, + "indexExpression": { + "argumentTypes": null, + "id": 7741, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7635, + "src": "6583:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6569:17:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "6569:21:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6569:29:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6549:49:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7747, + "nodeType": "ExpressionStatement", + "src": "6549:49:76" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7698, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7695, + "src": "6280:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7699, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7638, + "src": "6284:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6284:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6280:14:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7749, + "initializationExpression": { + "assignments": [ + 7695 + ], + "declarations": [ + { + "constant": false, + "id": 7695, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7749, + "src": "6265:9:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6265:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7697, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 7696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6277:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6265:13:76" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 7703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "6296:3:76", + "subExpression": { + "argumentTypes": null, + "id": 7702, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7695, + "src": "6298:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7704, + "nodeType": "ExpressionStatement", + "src": "6296:3:76" + }, + "nodeType": "ForStatement", + "src": "6260:349:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7751, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7681, + "src": "6638:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7752, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6648:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7753, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7635, + "src": "6654:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7754, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7638, + "src": "6658:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7755, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "6663:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 7750, + "name": "TransferBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8543, + "src": "6624:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 7756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6624:47:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7757, + "nodeType": "EmitStatement", + "src": "6619:52:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7759, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7681, + "src": "6718:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7760, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7633, + "src": "6728:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7761, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7635, + "src": "6734:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7762, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7638, + "src": "6738:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7763, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "6743:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7764, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7643, + "src": "6752:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7758, + "name": "_doSafeBatchTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8284, + "src": "6682:35:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 7765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6682:75:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7766, + "nodeType": "ExpressionStatement", + "src": "6682:75:76" + } + ] + }, + "documentation": { + "id": 7631, + "nodeType": "StructuredDocumentation", + "src": "5514:61:76", + "text": " @dev See {IERC1155-safeBatchTransferFrom}." + }, + "functionSelector": "2eb2c2d6", + "id": 7768, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeBatchTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7645, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5789:8:76" + }, + "parameters": { + "id": 7644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7633, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7768, + "src": "5620:12:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5620:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7635, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7768, + "src": "5642:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5642:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7638, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7768, + "src": "5662:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5662:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7637, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5662:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7641, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7768, + "src": "5692:24:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5692:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7640, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5692:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7643, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7768, + "src": "5726:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7642, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5726:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5610:139:76" + }, + "returnParameters": { + "id": 7646, + "nodeType": "ParameterList", + "parameters": [], + "src": "5802:0:76" + }, + "scope": 8313, + "src": "5580:1184:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7778, + "nodeType": "Block", + "src": "7641:30:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 7776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 7774, + "name": "_uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7330, + "src": "7651:4:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 7775, + "name": "newuri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7771, + "src": "7658:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "7651:13:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 7777, + "nodeType": "ExpressionStatement", + "src": "7651:13:76" + } + ] + }, + "documentation": { + "id": 7769, + "nodeType": "StructuredDocumentation", + "src": "6770:810:76", + "text": " @dev Sets a new URI for all token types, by relying on the token type ID\n substituion mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events." + }, + "id": 7779, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7771, + "mutability": "mutable", + "name": "newuri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7779, + "src": "7602:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7770, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7602:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7601:22:76" + }, + "returnParameters": { + "id": 7773, + "nodeType": "ParameterList", + "parameters": [], + "src": "7641:0:76" + }, + "scope": 8313, + "src": "7585:86:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 7860, + "nodeType": "Block", + "src": "8150:476:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7792, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7782, + "src": "8168:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8187:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8179:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8179:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8179:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8168:21:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373", + "id": 7798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8191:35:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + }, + "value": "ERC1155: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + } + ], + "id": 7791, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8160:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8160:67:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7800, + "nodeType": "ExpressionStatement", + "src": "8160:67:76" + }, + { + "assignments": [ + 7802 + ], + "declarations": [ + { + "constant": false, + "id": 7802, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7860, + "src": "8238:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7801, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8238:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7805, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7803, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "8257:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8257:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8238:31:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7807, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "8301:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8319:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8311:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8311:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8311:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7812, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7782, + "src": "8323:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7814, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "8350:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7813, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8312, + "src": "8332:17:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 7815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8332:21:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7817, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7786, + "src": "8373:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7816, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8312, + "src": "8355:17:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 7818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8355:25:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7819, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7788, + "src": "8382:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7806, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8152, + "src": "8280:20:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 7820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8280:107:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7821, + "nodeType": "ExpressionStatement", + "src": "8280:107:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 7835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7822, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "8398:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7825, + "indexExpression": { + "argumentTypes": null, + "id": 7823, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "8408:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8398:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7826, + "indexExpression": { + "argumentTypes": null, + "id": 7824, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7782, + "src": "8412:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8398:22:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7833, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7786, + "src": "8450:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7827, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "8423:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7829, + "indexExpression": { + "argumentTypes": null, + "id": 7828, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "8433:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8423:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7831, + "indexExpression": { + "argumentTypes": null, + "id": 7830, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7782, + "src": "8437:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8423:22:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "8423:26:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8423:34:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8398:59:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7836, + "nodeType": "ExpressionStatement", + "src": "8398:59:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7838, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "8487:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8505:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8497:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7839, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8497:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8497:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7843, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7782, + "src": "8509:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7844, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "8518:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7845, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7786, + "src": "8522:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7837, + "name": "TransferSingle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8528, + "src": "8472:14:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256)" + } + }, + "id": 7846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8472:57:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7847, + "nodeType": "EmitStatement", + "src": "8467:62:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7849, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "8571:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8589:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8581:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8581:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8581:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7854, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7782, + "src": "8593:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7855, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "8602:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7856, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7786, + "src": "8606:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7857, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7788, + "src": "8614:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7848, + "name": "_doSafeTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8217, + "src": "8540:30:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,bytes memory)" + } + }, + "id": 7858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8540:79:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7859, + "nodeType": "ExpressionStatement", + "src": "8540:79:76" + } + ] + }, + "documentation": { + "id": 7780, + "nodeType": "StructuredDocumentation", + "src": "7677:372:76", + "text": " @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n Emits a {TransferSingle} event.\n Requirements:\n - `account` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value." + }, + "id": 7861, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7789, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7782, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7861, + "src": "8069:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7781, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8069:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7784, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7861, + "src": "8086:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7783, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8086:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7786, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7861, + "src": "8098:14:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7785, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8098:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7788, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7861, + "src": "8114:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7787, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8114:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8068:64:76" + }, + "returnParameters": { + "id": 7790, + "nodeType": "ParameterList", + "parameters": [], + "src": "8150:0:76" + }, + "scope": 8313, + "src": "8054:572:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 7968, + "nodeType": "Block", + "src": "9087:584:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7876, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9105:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9119:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9111:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9111:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9111:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9105:16:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373", + "id": 7882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9123:35:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + }, + "value": "ERC1155: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + } + ], + "id": 7875, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9097:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9097:62:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7884, + "nodeType": "ExpressionStatement", + "src": "9097:62:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7886, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9177:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9177:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7888, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7870, + "src": "9191:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9191:14:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9177:28:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368", + "id": 7891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9207:42:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + }, + "value": "ERC1155: ids and amounts length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + } + ], + "id": 7885, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9169:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9169:81:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7893, + "nodeType": "ExpressionStatement", + "src": "9169:81:76" + }, + { + "assignments": [ + 7895 + ], + "declarations": [ + { + "constant": false, + "id": 7895, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7968, + "src": "9261:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9261:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7898, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7896, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "9280:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9280:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9261:31:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7900, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7895, + "src": "9324:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9342:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9334:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9334:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9334:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7905, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9346:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7906, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9350:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7907, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7870, + "src": "9355:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7908, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7872, + "src": "9364:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7899, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8152, + "src": "9303:20:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 7909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9303:66:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7910, + "nodeType": "ExpressionStatement", + "src": "9303:66:76" + }, + { + "body": { + "id": 7943, + "nodeType": "Block", + "src": "9418:86:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 7941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7922, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "9432:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7927, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7923, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9442:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7925, + "indexExpression": { + "argumentTypes": null, + "id": 7924, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7912, + "src": "9446:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9442:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9432:17:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7928, + "indexExpression": { + "argumentTypes": null, + "id": 7926, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9450:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9432:21:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7933, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "9471:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 7937, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7934, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9481:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7936, + "indexExpression": { + "argumentTypes": null, + "id": 7935, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7912, + "src": "9485:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9481:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9471:17:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 7939, + "indexExpression": { + "argumentTypes": null, + "id": 7938, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9489:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9471:21:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 7929, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7870, + "src": "9456:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7931, + "indexExpression": { + "argumentTypes": null, + "id": 7930, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7912, + "src": "9464:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9456:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "9456:14:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9456:37:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9432:61:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7942, + "nodeType": "ExpressionStatement", + "src": "9432:61:76" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7915, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7912, + "src": "9397:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7916, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9401:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 7917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9401:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9397:14:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7944, + "initializationExpression": { + "assignments": [ + 7912 + ], + "declarations": [ + { + "constant": false, + "id": 7912, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7944, + "src": "9385:6:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7911, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9385:4:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7914, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 7913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9394:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9385:10:76" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 7920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9413:3:76", + "subExpression": { + "argumentTypes": null, + "id": 7919, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7912, + "src": "9413:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7921, + "nodeType": "ExpressionStatement", + "src": "9413:3:76" + }, + "nodeType": "ForStatement", + "src": "9380:124:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7946, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7895, + "src": "9533:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9551:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9543:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9543:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9543:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7951, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9555:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7952, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9559:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7953, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7870, + "src": "9564:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 7945, + "name": "TransferBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8543, + "src": "9519:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 7954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9519:53:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7955, + "nodeType": "EmitStatement", + "src": "9514:58:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7957, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7895, + "src": "9619:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9637:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9629:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7958, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9629:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9629:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7962, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9641:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7963, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7867, + "src": "9645:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7964, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7870, + "src": "9650:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 7965, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7872, + "src": "9659:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7956, + "name": "_doSafeBatchTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8284, + "src": "9583:35:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 7966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9583:81:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7967, + "nodeType": "ExpressionStatement", + "src": "9583:81:76" + } + ] + }, + "documentation": { + "id": 7862, + "nodeType": "StructuredDocumentation", + "src": "8632:334:76", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value." + }, + "id": 7969, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mintBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7864, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7969, + "src": "8991:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8991:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7867, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7969, + "src": "9003:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7865, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9003:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7866, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9003:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7870, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7969, + "src": "9025:24:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7868, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9025:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7869, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9025:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7872, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7969, + "src": "9051:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7871, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9051:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8990:79:76" + }, + "returnParameters": { + "id": 7874, + "nodeType": "ParameterList", + "parameters": [], + "src": "9087:0:76" + }, + "scope": 8313, + "src": "8971:700:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8037, + "nodeType": "Block", + "src": "9997:461:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 7985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 7980, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "10015:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10034:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7982, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10026:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10026:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 7984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10026:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10015:21:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 7986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10038:37:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + }, + "value": "ERC1155: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + } + ], + "id": 7979, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10007:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10007:69:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7988, + "nodeType": "ExpressionStatement", + "src": "10007:69:76" + }, + { + "assignments": [ + 7990 + ], + "declarations": [ + { + "constant": false, + "id": 7990, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8037, + "src": "10087:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10087:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7993, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7991, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "10106:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10106:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10087:31:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7995, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7990, + "src": "10150:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7996, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "10160:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 7999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10177:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10169:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10169:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8000, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10169:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8002, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "10199:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8001, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8312, + "src": "10181:17:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 8003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10181:21:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8005, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7976, + "src": "10222:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8004, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8312, + "src": "10204:17:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 8006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10204:25:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 8007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10231:2:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 7994, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8152, + "src": "10129:20:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 8008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10129:105:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8009, + "nodeType": "ExpressionStatement", + "src": "10129:105:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 8024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8010, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "10245:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 8013, + "indexExpression": { + "argumentTypes": null, + "id": 8011, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "10255:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10245:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8014, + "indexExpression": { + "argumentTypes": null, + "id": 8012, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "10259:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10245:22:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8021, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7976, + "src": "10310:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 8022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10330:38:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + }, + "value": "ERC1155: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8015, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "10270:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 8017, + "indexExpression": { + "argumentTypes": null, + "id": 8016, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "10280:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10270:13:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8019, + "indexExpression": { + "argumentTypes": null, + "id": 8018, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "10284:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10270:22:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "10270:26:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 8023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10270:108:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10245:133:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8025, + "nodeType": "ExpressionStatement", + "src": "10245:133:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8027, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7990, + "src": "10409:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8028, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7972, + "src": "10419:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10436:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10428:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10428:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10428:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8033, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "10440:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8034, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7976, + "src": "10444:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8026, + "name": "TransferSingle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8528, + "src": "10394:14:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256)" + } + }, + "id": 8035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10394:57:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8036, + "nodeType": "EmitStatement", + "src": "10389:62:76" + } + ] + }, + "documentation": { + "id": 7970, + "nodeType": "StructuredDocumentation", + "src": "9677:238:76", + "text": " @dev Destroys `amount` tokens of token type `id` from `account`\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens of token type `id`." + }, + "id": 8038, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7972, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8038, + "src": "9935:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9935:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7974, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8038, + "src": "9952:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9952:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7976, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8038, + "src": "9964:14:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9964:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9934:45:76" + }, + "returnParameters": { + "id": 7978, + "nodeType": "ParameterList", + "parameters": [], + "src": "9997:0:76" + }, + "scope": 8313, + "src": "9920:538:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8132, + "nodeType": "Block", + "src": "10754:603:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8051, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8041, + "src": "10772:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10791:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10783:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10783:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10783:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10772:21:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 8057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10795:37:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + }, + "value": "ERC1155: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + } + ], + "id": 8050, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10764:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10764:69:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8059, + "nodeType": "ExpressionStatement", + "src": "10764:69:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 8061, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8044, + "src": "10851:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10851:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 8063, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8047, + "src": "10865:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10865:14:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10851:28:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368", + "id": 8066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10881:42:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + }, + "value": "ERC1155: ids and amounts length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + } + ], + "id": 8060, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10843:7:76", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10843:81:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8068, + "nodeType": "ExpressionStatement", + "src": "10843:81:76" + }, + { + "assignments": [ + 8070 + ], + "declarations": [ + { + "constant": false, + "id": 8070, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8132, + "src": "10935:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8069, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10935:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 8073, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8071, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "10954:10:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10954:12:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10935:31:76" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8075, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8070, + "src": "10998:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8076, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8041, + "src": "11008:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11025:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11017:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11017:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11017:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8081, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8044, + "src": "11029:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8082, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8047, + "src": "11034:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 8083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11043:2:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 8074, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8152, + "src": "10977:20:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 8084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10977:69:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8085, + "nodeType": "ExpressionStatement", + "src": "10977:69:76" + }, + { + "body": { + "id": 8119, + "nodeType": "Block", + "src": "11095:182:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8097, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "11109:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 8102, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8098, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8044, + "src": "11119:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8100, + "indexExpression": { + "argumentTypes": null, + "id": 8099, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8087, + "src": "11123:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11119:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11109:17:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8103, + "indexExpression": { + "argumentTypes": null, + "id": 8101, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8041, + "src": "11127:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11109:26:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8112, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8047, + "src": "11186:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8114, + "indexExpression": { + "argumentTypes": null, + "id": 8113, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8087, + "src": "11194:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11186:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 8115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11214:38:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + }, + "value": "ERC1155: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8104, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "11138:9:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 8108, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8105, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8044, + "src": "11148:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8107, + "indexExpression": { + "argumentTypes": null, + "id": 8106, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8087, + "src": "11152:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11148:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11138:17:76", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8110, + "indexExpression": { + "argumentTypes": null, + "id": 8109, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8041, + "src": "11156:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11138:26:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "11138:30:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 8116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11138:128:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11109:157:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8118, + "nodeType": "ExpressionStatement", + "src": "11109:157:76" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8090, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8087, + "src": "11074:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 8091, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8044, + "src": "11078:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11078:10:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11074:14:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8120, + "initializationExpression": { + "assignments": [ + 8087 + ], + "declarations": [ + { + "constant": false, + "id": 8087, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8120, + "src": "11062:6:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8086, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11062:4:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 8089, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 8088, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11071:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11062:10:76" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 8095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11090:3:76", + "subExpression": { + "argumentTypes": null, + "id": 8094, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8087, + "src": "11090:1:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8096, + "nodeType": "ExpressionStatement", + "src": "11090:3:76" + }, + "nodeType": "ForStatement", + "src": "11057:220:76" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8122, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8070, + "src": "11306:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8123, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8041, + "src": "11316:7:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11333:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11325:7:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11325:7:76", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11325:10:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8128, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8044, + "src": "11337:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8129, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8047, + "src": "11342:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 8121, + "name": "TransferBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8543, + "src": "11292:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 8130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11292:58:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8131, + "nodeType": "EmitStatement", + "src": "11287:63:76" + } + ] + }, + "documentation": { + "id": 8039, + "nodeType": "StructuredDocumentation", + "src": "10464:183:76", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Requirements:\n - `ids` and `amounts` must have the same length." + }, + "id": 8133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8041, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8133, + "src": "10672:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10672:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8044, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8133, + "src": "10689:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10689:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8043, + "length": null, + "nodeType": "ArrayTypeName", + "src": "10689:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8047, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8133, + "src": "10711:24:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10711:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8046, + "length": null, + "nodeType": "ArrayTypeName", + "src": "10711:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10671:65:76" + }, + "returnParameters": { + "id": 8049, + "nodeType": "ParameterList", + "parameters": [], + "src": "10754:0:76" + }, + "scope": 8313, + "src": "10652:705:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8151, + "nodeType": "Block", + "src": "12515:3:76", + "statements": [] + }, + "documentation": { + "id": 8134, + "nodeType": "StructuredDocumentation", + "src": "11363:923:76", + "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 8152, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8136, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8152, + "src": "12330:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12330:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8138, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8152, + "src": "12356:12:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12356:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8140, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8152, + "src": "12378:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12378:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8143, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8152, + "src": "12398:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8141, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12398:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8142, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12398:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8146, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8152, + "src": "12428:24:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12428:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8145, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12428:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8148, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8152, + "src": "12462:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8147, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12462:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12320:165:76" + }, + "returnParameters": { + "id": 8150, + "nodeType": "ParameterList", + "parameters": [], + "src": "12515:0:76" + }, + "scope": 8313, + "src": "12291:227:76", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8216, + "nodeType": "Block", + "src": "12729:536:76", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 8167, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8158, + "src": "12743:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 12639, + "src": "12743:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 8169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12743:15:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 8215, + "nodeType": "IfStatement", + "src": "12739:520:76", + "trueBody": { + "id": 8214, + "nodeType": "Block", + "src": "12760:499:76", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 8196, + "nodeType": "Block", + "src": "12877:188:76", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 8189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8183, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8181, + "src": "12899:8:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8185, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8158, + "src": "12928:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8184, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8687, + "src": "12911:16:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$8687_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 8186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12911:20:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$8687", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 8187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 8668, + "src": "12911:38:76", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 8188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12911:47:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12899:59:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 8195, + "nodeType": "IfStatement", + "src": "12895:156:76", + "trueBody": { + "id": 8194, + "nodeType": "Block", + "src": "12960:91:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73", + "id": 8191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12989:42:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + }, + "value": "ERC1155: ERC1155Receiver rejected tokens" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + } + ], + "id": 8190, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "12982:6:76", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 8192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12982:50:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8193, + "nodeType": "ExpressionStatement", + "src": "12982:50:76" + } + ] + } + } + ] + }, + "errorName": "", + "id": 8197, + "nodeType": "TryCatchClause", + "parameters": { + "id": 8182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8181, + "mutability": "mutable", + "name": "response", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8197, + "src": "12860:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8180, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "12860:6:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12859:17:76" + }, + "src": "12851:214:76" + }, + { + "block": { + "id": 8205, + "nodeType": "Block", + "src": "13100:47:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8202, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8199, + "src": "13125:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8201, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13118:6:76", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 8203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13118:14:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8204, + "nodeType": "ExpressionStatement", + "src": "13118:14:76" + } + ] + }, + "errorName": "Error", + "id": 8206, + "nodeType": "TryCatchClause", + "parameters": { + "id": 8200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8199, + "mutability": "mutable", + "name": "reason", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8206, + "src": "13078:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8198, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13078:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13077:22:76" + }, + "src": "13066:81:76" + }, + { + "block": { + "id": 8211, + "nodeType": "Block", + "src": "13154:95:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572", + "id": 8208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13179:54:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + }, + "value": "ERC1155: transfer to non ERC1155Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + } + ], + "id": 8207, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13172:6:76", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 8209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13172:62:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8210, + "nodeType": "ExpressionStatement", + "src": "13172:62:76" + } + ] + }, + "errorName": "", + "id": 8212, + "nodeType": "TryCatchClause", + "parameters": null, + "src": "13148:101:76" + } + ], + "externalCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8174, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8154, + "src": "12817:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8175, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8156, + "src": "12827:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8176, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8160, + "src": "12833:2:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8177, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8162, + "src": "12837:6:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8178, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8164, + "src": "12845:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8171, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8158, + "src": "12795:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8170, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8687, + "src": "12778:16:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$8687_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 8172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12778:20:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$8687", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 8173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 8668, + "src": "12778:38:76", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 8179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12778:72:76", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 8213, + "nodeType": "TryStatement", + "src": "12774:475:76" + } + ] + } + } + ] + }, + "documentation": null, + "id": 8217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_doSafeTransferAcceptanceCheck", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8154, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8217, + "src": "12573:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12573:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8156, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8217, + "src": "12599:12:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12599:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8158, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8217, + "src": "12621:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12621:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8160, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8217, + "src": "12641:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12641:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8162, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8217, + "src": "12661:14:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8161, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12661:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8164, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8217, + "src": "12685:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8163, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12685:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12563:145:76" + }, + "returnParameters": { + "id": 8166, + "nodeType": "ParameterList", + "parameters": [], + "src": "12729:0:76" + }, + "scope": 8313, + "src": "12524:741:76", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 8283, + "nodeType": "Block", + "src": "13501:548:76", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 8234, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13515:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 12639, + "src": "13515:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 8236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13515:15:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 8282, + "nodeType": "IfStatement", + "src": "13511:532:76", + "trueBody": { + "id": 8281, + "nodeType": "Block", + "src": "13532:511:76", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 8263, + "nodeType": "Block", + "src": "13656:193:76", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 8256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8250, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8248, + "src": "13678:8:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8252, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13707:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8251, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8687, + "src": "13690:16:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$8687_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 8253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13690:20:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$8687", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 8254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 8686, + "src": "13690:43:76", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 8255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13690:52:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "13678:64:76", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 8262, + "nodeType": "IfStatement", + "src": "13674:161:76", + "trueBody": { + "id": 8261, + "nodeType": "Block", + "src": "13744:91:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73", + "id": 8258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13773:42:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + }, + "value": "ERC1155: ERC1155Receiver rejected tokens" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + } + ], + "id": 8257, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13766:6:76", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 8259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13766:50:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8260, + "nodeType": "ExpressionStatement", + "src": "13766:50:76" + } + ] + } + } + ] + }, + "errorName": "", + "id": 8264, + "nodeType": "TryCatchClause", + "parameters": { + "id": 8249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8248, + "mutability": "mutable", + "name": "response", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8264, + "src": "13639:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8247, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "13639:6:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13638:17:76" + }, + "src": "13630:219:76" + }, + { + "block": { + "id": 8272, + "nodeType": "Block", + "src": "13884:47:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8269, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8266, + "src": "13909:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8268, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13902:6:76", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 8270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13902:14:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8271, + "nodeType": "ExpressionStatement", + "src": "13902:14:76" + } + ] + }, + "errorName": "Error", + "id": 8273, + "nodeType": "TryCatchClause", + "parameters": { + "id": 8267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8266, + "mutability": "mutable", + "name": "reason", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8273, + "src": "13862:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8265, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13862:6:76", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13861:22:76" + }, + "src": "13850:81:76" + }, + { + "block": { + "id": 8278, + "nodeType": "Block", + "src": "13938:95:76", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572", + "id": 8275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13963:54:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + }, + "value": "ERC1155: transfer to non ERC1155Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + } + ], + "id": 8274, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13956:6:76", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 8276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13956:62:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8277, + "nodeType": "ExpressionStatement", + "src": "13956:62:76" + } + ] + }, + "errorName": "", + "id": 8279, + "nodeType": "TryCatchClause", + "parameters": null, + "src": "13932:101:76" + } + ], + "externalCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8241, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8219, + "src": "13594:8:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8242, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8221, + "src": "13604:4:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8243, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8226, + "src": "13610:3:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8244, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8229, + "src": "13615:7:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8245, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8231, + "src": "13624:4:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8238, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8223, + "src": "13567:2:76", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8237, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8687, + "src": "13550:16:76", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$8687_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 8239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13550:20:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$8687", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 8240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 8686, + "src": "13550:43:76", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 8246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13550:79:76", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 8280, + "nodeType": "TryStatement", + "src": "13546:487:76" + } + ] + } + } + ] + }, + "documentation": null, + "id": 8284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_doSafeBatchTransferAcceptanceCheck", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8219, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8284, + "src": "13325:16:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13325:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8221, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8284, + "src": "13351:12:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13351:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8223, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8284, + "src": "13373:10:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13373:7:76", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8226, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8284, + "src": "13393:20:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13393:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8225, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13393:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8229, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8284, + "src": "13423:24:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13423:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8228, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13423:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8231, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8284, + "src": "13457:17:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8230, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13457:5:76", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13315:165:76" + }, + "returnParameters": { + "id": 8233, + "nodeType": "ParameterList", + "parameters": [], + "src": "13501:0:76" + }, + "scope": 8313, + "src": "13271:778:76", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 8311, + "nodeType": "Block", + "src": "14139:109:76", + "statements": [ + { + "assignments": [ + 8296 + ], + "declarations": [ + { + "constant": false, + "id": 8296, + "mutability": "mutable", + "name": "array", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8311, + "src": "14149:22:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14149:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8295, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14149:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 8302, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 8300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14188:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 8299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14174:13:76", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 8297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14178:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8298, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14178:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 8301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14174:16:76", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14149:41:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 8307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8303, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8296, + "src": "14200:5:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 8305, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 8304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14206:1:76", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14200:8:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 8306, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8286, + "src": "14211:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14200:18:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8308, + "nodeType": "ExpressionStatement", + "src": "14200:18:76" + }, + { + "expression": { + "argumentTypes": null, + "id": 8309, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8296, + "src": "14236:5:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 8291, + "id": 8310, + "nodeType": "Return", + "src": "14229:12:76" + } + ] + }, + "documentation": null, + "id": 8312, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_asSingletonArray", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8286, + "mutability": "mutable", + "name": "element", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8312, + "src": "14082:15:76", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8285, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14082:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14081:17:76" + }, + "returnParameters": { + "id": 8291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8290, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8312, + "src": "14121:16:76", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14121:7:76", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8289, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14121:9:76", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14120:18:76" + }, + "scope": 8313, + "src": "14055:193:76", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 8314, + "src": "512:13738:76" + } + ], + "src": "33:14218:76" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620024d4380380620024d4833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052505050620001106301ffc9a760e01b6200015860201b60201c565b62000121816200026160201b60201c565b6200013963d9b67a2660e01b6200015860201b60201c565b62000151630e89341c60e01b6200015860201b60201c565b506200032c565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620001f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b8060039080519060200190620002799291906200027d565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c057805160ff1916838001178555620002f1565b82800160010185558215620002f1579182015b82811115620002f0578251825591602001919060010190620002d3565b5b50905062000300919062000304565b5090565b6200032991905b80821115620003255760008160009055506001016200030b565b5090565b90565b612198806200033c6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461041d578063a22cb465146105be578063e985e9c51461060e578063f242432a1461068a57610087565b8062fdd58e1461008c57806301ffc9a7146100ee5780630e89341c146101535780632eb2c2d6146101fa575b600080fd5b6100d8600480360360408110156100a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610799565b6040518082815260200191505060405180910390f35b6101396004803603602081101561010457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610879565b604051808215151515815260200191505060405180910390f35b61017f6004803603602081101561016957600080fd5b81019080803590602001909291905050506108e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61041b600480360360a081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561030157600080fd5b82018360208201111561031357600080fd5b8035906020019184602083028401116401000000008311171561033557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610984565b005b6105676004803603604081101561043357600080fd5b810190808035906020019064010000000081111561045057600080fd5b82018360208201111561046257600080fd5b8035906020019184602083028401116401000000008311171561048457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104e457600080fd5b8201836020820111156104f657600080fd5b8035906020019184602083028401116401000000008311171561051857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610e12565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105aa57808201518184015260208101905061058f565b505050509050019250505060405180910390f35b61060c600480360360408110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611007565b005b6106706004803603604081101561062457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111a2565b604051808215151515815260200191505060405180910390f35b610797600480360360a08110156106a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561071157600080fd5b82018360208201111561072357600080fd5b8035906020019184600183028401116401000000008311171561074557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611236565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611fe3602b913960400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b50505050509050919050565b81518351146109de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061213b6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120686025913960400191505060405180910390fd5b610a6c6115ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610ab25750610ab185610aac6115ab565b6111a2565b5b610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061208d6032913960400191505060405180910390fd5b6000610b116115ab565b9050610b218187878787876115b3565b60008090505b8451811015610cf5576000858281518110610b3e57fe5b602002602001015190506000858381518110610b5657fe5b60200260200101519050610bdd816040518060600160405280602a81526020016120bf602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b6001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c94816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167b90919063ffffffff16565b6001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806001019050610b27565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610de7578082015181840152602081019050610dcc565b5050505090500194505050505060405180910390a4610e0a818787878787611703565b505050505050565b60608151835114610e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806121126029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610e8857600080fd5b50604051908082528060200260200182016040528015610eb75781602001602082028036833780820191505090505b50905060008090505b8451811015610ffc57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610eed57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061200e6031913960400191505060405180910390fd5b60016000858381518110610f7257fe5b602002602001015181526020019081526020016000206000868381518110610f9657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610fe557fe5b602002602001018181525050806001019050610ec0565b508091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff166110266115ab565b73ffffffffffffffffffffffffffffffffffffffff161415611093576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806120e96029913960400191505060405180910390fd5b80600260006110a06115ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661114d6115ab565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120686025913960400191505060405180910390fd5b6112c46115ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061130a5750611309856113046115ab565b6111a2565b5b61135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061203f6029913960400191505060405180910390fd5b60006113696115ab565b905061138981878761137a88611abe565b61138388611abe565b876115b3565b611406836040518060600160405280602a81526020016120bf602a91396001600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114bd836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167b90919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46115a3818787878787611b2e565b505050505050565b600033905090565b505050505050565b6000838311158290611668576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561162d578082015181840152602081019050611612565b50505050905090810190601f16801561165a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6117228473ffffffffffffffffffffffffffffffffffffffff16611e67565b15611ab6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156118065780820151818401526020810190506117eb565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561184857808201518184015260208101905061182d565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561188757808201518184015260208101905061186c565b50505050905090810190601f1680156118b45780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156118d957600080fd5b505af192505050801561190d57506040513d60208110156118f957600080fd5b810190808051906020019092919050505060015b611a1757611919611ed0565b8061192457506119c6565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561198b578082015181840152602081019050611970565b50505050905090810190601f1680156119b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611f876034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611fbb6028913960400191505060405180910390fd5b505b505050505050565b606080600167ffffffffffffffff81118015611ad957600080fd5b50604051908082528060200260200182016040528015611b085781602001602082028036833780820191505090505b5090508281600081518110611b1957fe5b60200260200101818152505080915050919050565b611b4d8473ffffffffffffffffffffffffffffffffffffffff16611e67565b15611e5f578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c32578082015181840152602081019050611c17565b50505050905090810190601f168015611c5f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611c8257600080fd5b505af1925050508015611cb657506040513d6020811015611ca257600080fd5b810190808051906020019092919050505060015b611dc057611cc2611ed0565b80611ccd5750611d6f565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d34578082015181840152602081019050611d19565b50505050905090810190601f168015611d615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611f876034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611fbb6028913960400191505060405180910390fd5b505b505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611ea957506000801b8214155b92505050919050565b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015611ee057611f83565b60046000803e611ef1600051611ec3565b6308c379a08114611f025750611f83565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715611f2e57505050611f83565b808201805167ffffffffffffffff811115611f4d575050505050611f83565b8060208301013d8501811115611f6857505050505050611f83565b611f7182611eb2565b60208401016040528296505050505050505b9056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a264697066735822122092d8fd816c0b89bde57354d477b4a1ec4bd6678b1052144baf36f3204e3ed88064736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461041d578063a22cb465146105be578063e985e9c51461060e578063f242432a1461068a57610087565b8062fdd58e1461008c57806301ffc9a7146100ee5780630e89341c146101535780632eb2c2d6146101fa575b600080fd5b6100d8600480360360408110156100a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610799565b6040518082815260200191505060405180910390f35b6101396004803603602081101561010457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610879565b604051808215151515815260200191505060405180910390f35b61017f6004803603602081101561016957600080fd5b81019080803590602001909291905050506108e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61041b600480360360a081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561030157600080fd5b82018360208201111561031357600080fd5b8035906020019184602083028401116401000000008311171561033557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610984565b005b6105676004803603604081101561043357600080fd5b810190808035906020019064010000000081111561045057600080fd5b82018360208201111561046257600080fd5b8035906020019184602083028401116401000000008311171561048457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104e457600080fd5b8201836020820111156104f657600080fd5b8035906020019184602083028401116401000000008311171561051857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610e12565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105aa57808201518184015260208101905061058f565b505050509050019250505060405180910390f35b61060c600480360360408110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611007565b005b6106706004803603604081101561062457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111a2565b604051808215151515815260200191505060405180910390f35b610797600480360360a08110156106a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561071157600080fd5b82018360208201111561072357600080fd5b8035906020019184600183028401116401000000008311171561074557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611236565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611fe3602b913960400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b50505050509050919050565b81518351146109de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061213b6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610a64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120686025913960400191505060405180910390fd5b610a6c6115ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610ab25750610ab185610aac6115ab565b6111a2565b5b610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061208d6032913960400191505060405180910390fd5b6000610b116115ab565b9050610b218187878787876115b3565b60008090505b8451811015610cf5576000858281518110610b3e57fe5b602002602001015190506000858381518110610b5657fe5b60200260200101519050610bdd816040518060600160405280602a81526020016120bf602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b6001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c94816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167b90919063ffffffff16565b6001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806001019050610b27565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610de7578082015181840152602081019050610dcc565b5050505090500194505050505060405180910390a4610e0a818787878787611703565b505050505050565b60608151835114610e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806121126029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610e8857600080fd5b50604051908082528060200260200182016040528015610eb75781602001602082028036833780820191505090505b50905060008090505b8451811015610ffc57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610eed57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061200e6031913960400191505060405180910390fd5b60016000858381518110610f7257fe5b602002602001015181526020019081526020016000206000868381518110610f9657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610fe557fe5b602002602001018181525050806001019050610ec0565b508091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff166110266115ab565b73ffffffffffffffffffffffffffffffffffffffff161415611093576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806120e96029913960400191505060405180910390fd5b80600260006110a06115ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661114d6115ab565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120686025913960400191505060405180910390fd5b6112c46115ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061130a5750611309856113046115ab565b6111a2565b5b61135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061203f6029913960400191505060405180910390fd5b60006113696115ab565b905061138981878761137a88611abe565b61138388611abe565b876115b3565b611406836040518060600160405280602a81526020016120bf602a91396001600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114bd836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167b90919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46115a3818787878787611b2e565b505050505050565b600033905090565b505050505050565b6000838311158290611668576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561162d578082015181840152602081019050611612565b50505050905090810190601f16801561165a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6117228473ffffffffffffffffffffffffffffffffffffffff16611e67565b15611ab6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156118065780820151818401526020810190506117eb565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561184857808201518184015260208101905061182d565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561188757808201518184015260208101905061186c565b50505050905090810190601f1680156118b45780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156118d957600080fd5b505af192505050801561190d57506040513d60208110156118f957600080fd5b810190808051906020019092919050505060015b611a1757611919611ed0565b8061192457506119c6565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561198b578082015181840152602081019050611970565b50505050905090810190601f1680156119b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611f876034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611fbb6028913960400191505060405180910390fd5b505b505050505050565b606080600167ffffffffffffffff81118015611ad957600080fd5b50604051908082528060200260200182016040528015611b085781602001602082028036833780820191505090505b5090508281600081518110611b1957fe5b60200260200101818152505080915050919050565b611b4d8473ffffffffffffffffffffffffffffffffffffffff16611e67565b15611e5f578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c32578082015181840152602081019050611c17565b50505050905090810190601f168015611c5f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611c8257600080fd5b505af1925050508015611cb657506040513d6020811015611ca257600080fd5b810190808051906020019092919050505060015b611dc057611cc2611ed0565b80611ccd5750611d6f565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d34578082015181840152602081019050611d19565b50505050905090810190601f168015611d615780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611f876034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611fbb6028913960400191505060405180910390fd5b505b505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611ea957506000801b8214155b92505050919050565b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015611ee057611f83565b60046000803e611ef1600051611ec3565b6308c379a08114611f025750611f83565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715611f2e57505050611f83565b808201805167ffffffffffffffff811115611f4d575050505050611f83565b8060208301013d8501811115611f6857505050505050611f83565b611f7182611eb2565b60208401016040528296505050505050505b9056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a264697066735822122092d8fd816c0b89bde57354d477b4a1ec4bd6678b1052144baf36f3204e3ed88064736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Burnable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Burnable.json new file mode 100644 index 0000000..98fc2a6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Burnable.json @@ -0,0 +1,1378 @@ +{ + "fileName": "ERC1155Burnable.sol", + "contractName": "ERC1155Burnable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ERC1155.sol\";\n\n/**\n * @dev Extension of {ERC1155} that allows token holders to destroy both their\n * own tokens and those that they have been approved to use.\n *\n * _Available since v3.1._\n */\nabstract contract ERC1155Burnable is ERC1155 {\n function burn(address account, uint256 id, uint256 value) public virtual {\n require(\n account == _msgSender() || isApprovedForAll(account, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n _burn(account, id, value);\n }\n\n function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual {\n require(\n account == _msgSender() || isApprovedForAll(account, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n _burnBatch(account, ids, values);\n }\n}\n", + "sourcePath": "contracts/token/ERC1155/ERC1155Burnable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "burnBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/ERC1155Burnable.sol", + "exportedSymbols": { + "ERC1155Burnable": [ + 8382 + ] + }, + "id": 8383, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8315, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:77" + }, + { + "absolutePath": "contracts/token/ERC1155/ERC1155.sol", + "file": "./ERC1155.sol", + "id": 8316, + "nodeType": "ImportDirective", + "scope": 8383, + "sourceUnit": 8314, + "src": "58:23:77", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8318, + "name": "ERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8313, + "src": "298:7:77", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$8313", + "typeString": "contract ERC1155" + } + }, + "id": 8319, + "nodeType": "InheritanceSpecifier", + "src": "298:7:77" + } + ], + "contractDependencies": [ + 22, + 1802, + 2048, + 8313, + 8631, + 8646 + ], + "contractKind": "contract", + "documentation": { + "id": 8317, + "nodeType": "StructuredDocumentation", + "src": "83:177:77", + "text": " @dev Extension of {ERC1155} that allows token holders to destroy both their\n own tokens and those that they have been approved to use.\n _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 8382, + "linearizedBaseContracts": [ + 8382, + 8313, + 8646, + 8631, + 1802, + 2048, + 22 + ], + "name": "ERC1155Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8348, + "nodeType": "Block", + "src": "385:207:77", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8329, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8321, + "src": "416:7:77", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8330, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "427:10:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "427:12:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "416:23:77", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8334, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8321, + "src": "460:7:77", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8335, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "469:10:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "469:12:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 8333, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7524, + "src": "443:16:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 8337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:39:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "416:66:77", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 8339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "496:43:77", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + }, + "value": "ERC1155: caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + } + ], + "id": 8328, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "395:7:77", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "395:154:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8341, + "nodeType": "ExpressionStatement", + "src": "395:154:77" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8343, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8321, + "src": "566:7:77", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8344, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8323, + "src": "575:2:77", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8345, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8325, + "src": "579:5:77", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8342, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8038, + "src": "560:5:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 8346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "560:25:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8347, + "nodeType": "ExpressionStatement", + "src": "560:25:77" + } + ] + }, + "documentation": null, + "functionSelector": "f5298aca", + "id": 8349, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8321, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8349, + "src": "326:15:77", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "326:7:77", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8323, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8349, + "src": "343:10:77", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "343:7:77", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8325, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8349, + "src": "355:13:77", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "355:7:77", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "325:44:77" + }, + "returnParameters": { + "id": 8327, + "nodeType": "ParameterList", + "parameters": [], + "src": "385:0:77" + }, + "scope": 8382, + "src": "312:280:77", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 8380, + "nodeType": "Block", + "src": "696:214:77", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8361, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8351, + "src": "727:7:77", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8362, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "738:10:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "738:12:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "727:23:77", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8366, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8351, + "src": "771:7:77", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8367, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "780:10:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "780:12:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 8365, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7524, + "src": "754:16:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 8369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "754:39:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "727:66:77", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 8371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "807:43:77", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + }, + "value": "ERC1155: caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + } + ], + "id": 8360, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "706:7:77", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "706:154:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8373, + "nodeType": "ExpressionStatement", + "src": "706:154:77" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8375, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8351, + "src": "882:7:77", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8376, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8354, + "src": "891:3:77", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8377, + "name": "values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8357, + "src": "896:6:77", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 8374, + "name": "_burnBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8133, + "src": "871:10:77", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,uint256[] memory,uint256[] memory)" + } + }, + "id": 8378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:32:77", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8379, + "nodeType": "ExpressionStatement", + "src": "871:32:77" + } + ] + }, + "documentation": null, + "functionSelector": "6b20c454", + "id": 8381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8358, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8351, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8381, + "src": "617:15:77", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:77", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8354, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8381, + "src": "634:20:77", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "634:7:77", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8353, + "length": null, + "nodeType": "ArrayTypeName", + "src": "634:9:77", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8357, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8381, + "src": "656:23:77", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "656:7:77", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8356, + "length": null, + "nodeType": "ArrayTypeName", + "src": "656:9:77", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:64:77" + }, + "returnParameters": { + "id": 8359, + "nodeType": "ParameterList", + "parameters": [], + "src": "696:0:77" + }, + "scope": 8382, + "src": "598:312:77", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 8383, + "src": "261:651:77" + } + ], + "src": "33:880:77" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Holder.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Holder.json new file mode 100644 index 0000000..886da38 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Holder.json @@ -0,0 +1,757 @@ +{ + "fileName": "ERC1155Holder.sol", + "contractName": "ERC1155Holder", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ERC1155Receiver.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ncontract ERC1155Holder is ERC1155Receiver {\n function onERC1155Received(address, address, uint256, uint256, bytes memory) public virtual override returns (bytes4) {\n return this.onERC1155Received.selector;\n }\n\n function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) public virtual override returns (bytes4) {\n return this.onERC1155BatchReceived.selector;\n }\n}\n", + "sourcePath": "contracts/token/ERC1155/ERC1155Holder.sol", + "sourceMap": "131:430:78:-:0;;;;;;;;;;;;;751:40:10;418:10;770:20;;751:18;;;:40;;:::i;:::-;272:152:80;364:50;;;304:45;;;:110;272:18;;;:152;;:::i;:::-;131:430:78;;1482:198:10;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;131:430:78:-;;;;;;;", + "deployedSourceMap": "131:430:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;358:201:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;179:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;948:140:10;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;358:201:78:-;491:6;516:36;;;509:43;;358:201;;;;;;;:::o;179:173::-;289:6;314:31;;;307:38;;179:173;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/ERC1155Holder.sol", + "exportedSymbols": { + "ERC1155Holder": [ + 8433 + ] + }, + "id": 8434, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8384, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:78" + }, + { + "absolutePath": "contracts/token/ERC1155/ERC1155Receiver.sol", + "file": "./ERC1155Receiver.sol", + "id": 8385, + "nodeType": "ImportDirective", + "scope": 8434, + "sourceUnit": 8510, + "src": "58:31:78", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8387, + "name": "ERC1155Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8509, + "src": "157:15:78", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Receiver_$8509", + "typeString": "contract ERC1155Receiver" + } + }, + "id": 8388, + "nodeType": "InheritanceSpecifier", + "src": "157:15:78" + } + ], + "contractDependencies": [ + 1802, + 2048, + 8509, + 8687 + ], + "contractKind": "contract", + "documentation": { + "id": 8386, + "nodeType": "StructuredDocumentation", + "src": "91:39:78", + "text": " @dev _Available since v3.1._" + }, + "fullyImplemented": true, + "id": 8433, + "linearizedBaseContracts": [ + 8433, + 8509, + 8687, + 1802, + 2048 + ], + "name": "ERC1155Holder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 8668 + ], + "body": { + "id": 8408, + "nodeType": "Block", + "src": "297:55:78", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 8404, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "314:4:78", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Holder_$8433", + "typeString": "contract ERC1155Holder" + } + }, + "id": 8405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 8409, + "src": "314:22:78", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 8406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "314:31:78", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 8403, + "id": 8407, + "nodeType": "Return", + "src": "307:38:78" + } + ] + }, + "documentation": null, + "functionSelector": "f23a6e61", + "id": 8409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC1155Received", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8400, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "271:8:78" + }, + "parameters": { + "id": 8399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8390, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8409, + "src": "206:7:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "206:7:78", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8392, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8409, + "src": "215:7:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "215:7:78", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8394, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8409, + "src": "224:7:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8393, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "224:7:78", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8396, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8409, + "src": "233:7:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "233:7:78", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8398, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8409, + "src": "242:12:78", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8397, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "242:5:78", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "205:50:78" + }, + "returnParameters": { + "id": 8403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8402, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8409, + "src": "289:6:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8401, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "289:6:78", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "288:8:78" + }, + "scope": 8433, + "src": "179:173:78", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 8686 + ], + "body": { + "id": 8431, + "nodeType": "Block", + "src": "499:60:78", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 8427, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "516:4:78", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Holder_$8433", + "typeString": "contract ERC1155Holder" + } + }, + "id": 8428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 8432, + "src": "516:27:78", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 8429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "516:36:78", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 8426, + "id": 8430, + "nodeType": "Return", + "src": "509:43:78" + } + ] + }, + "documentation": null, + "functionSelector": "bc197c81", + "id": 8432, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC1155BatchReceived", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8423, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "473:8:78" + }, + "parameters": { + "id": 8422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8411, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8432, + "src": "390:7:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "390:7:78", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8413, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8432, + "src": "399:7:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "399:7:78", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8416, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8432, + "src": "408:16:78", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "408:7:78", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8415, + "length": null, + "nodeType": "ArrayTypeName", + "src": "408:9:78", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8419, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8432, + "src": "426:16:78", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "426:7:78", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8418, + "length": null, + "nodeType": "ArrayTypeName", + "src": "426:9:78", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8421, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8432, + "src": "444:12:78", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8420, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "444:5:78", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "389:68:78" + }, + "returnParameters": { + "id": 8426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8425, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8432, + "src": "491:6:78", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8424, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "491:6:78", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "490:8:78" + }, + "scope": 8433, + "src": "358:201:78", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 8434, + "src": "131:430:78" + } + ], + "src": "33:529:78" + }, + "bytecode": "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004b60201b60201c565b61004663bc197c8160e01b63f23a6e6160e01b1861004b60201b60201c565b610153565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156100e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610548806101626000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c81146100ab578063f23a6e6114610320575b600080fd5b6100916004803603602081101561005c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610481565b604051808215151515815260200191505060405180910390f35b6102cc600480360360a08110156100c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156101b257600080fd5b8201836020820111156101c457600080fd5b803590602001918460208302840111640100000000831117156101e657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506104e8565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61042d600480360360a081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506104fd565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600063bc197c8160e01b905095945050505050565b600063f23a6e6160e01b90509594505050505056fea2646970667358221220a9d0e44a05ab18f0f54536f9b1f558cba7f84237e83cbf8a019a5da8bdd0843064736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c81146100ab578063f23a6e6114610320575b600080fd5b6100916004803603602081101561005c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610481565b604051808215151515815260200191505060405180910390f35b6102cc600480360360a08110156100c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156101b257600080fd5b8201836020820111156101c457600080fd5b803590602001918460208302840111640100000000831117156101e657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506104e8565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61042d600480360360a081101561033657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506104fd565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600063bc197c8160e01b905095945050505050565b600063f23a6e6160e01b90509594505050505056fea2646970667358221220a9d0e44a05ab18f0f54536f9b1f558cba7f84237e83cbf8a019a5da8bdd0843064736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Pausable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Pausable.json new file mode 100644 index 0000000..29e4cc9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Pausable.json @@ -0,0 +1,1003 @@ +{ + "fileName": "ERC1155Pausable.sol", + "contractName": "ERC1155Pausable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ERC1155.sol\";\nimport \"../../utils/Pausable.sol\";\n\n/**\n * @dev ERC1155 token with pausable token transfers, minting and burning.\n *\n * Useful for scenarios such as preventing trades until the end of an evaluation\n * period, or having an emergency switch for freezing all token transfers in the\n * event of a large bug.\n *\n * _Available since v3.1._\n */\nabstract contract ERC1155Pausable is ERC1155, Pausable {\n /**\n * @dev See {ERC1155-_beforeTokenTransfer}.\n *\n * Requirements:\n *\n * - the contract must not be paused.\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n internal virtual override\n {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n require(!paused(), \"ERC1155Pausable: token transfer while paused\");\n }\n}\n", + "sourcePath": "contracts/token/ERC1155/ERC1155Pausable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/ERC1155Pausable.sol", + "exportedSymbols": { + "ERC1155Pausable": [ + 8481 + ] + }, + "id": 8482, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8435, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:79" + }, + { + "absolutePath": "contracts/token/ERC1155/ERC1155.sol", + "file": "./ERC1155.sol", + "id": 8436, + "nodeType": "ImportDirective", + "scope": 8482, + "sourceUnit": 8314, + "src": "58:23:79", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Pausable.sol", + "file": "../../utils/Pausable.sol", + "id": 8437, + "nodeType": "ImportDirective", + "scope": 8482, + "sourceUnit": 13998, + "src": "82:34:79", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8439, + "name": "ERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8313, + "src": "457:7:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$8313", + "typeString": "contract ERC1155" + } + }, + "id": 8440, + "nodeType": "InheritanceSpecifier", + "src": "457:7:79" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8441, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13997, + "src": "466:8:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$13997", + "typeString": "contract Pausable" + } + }, + "id": 8442, + "nodeType": "InheritanceSpecifier", + "src": "466:8:79" + } + ], + "contractDependencies": [ + 22, + 1802, + 2048, + 8313, + 8631, + 8646, + 13997 + ], + "contractKind": "contract", + "documentation": { + "id": 8438, + "nodeType": "StructuredDocumentation", + "src": "118:301:79", + "text": " @dev ERC1155 token with pausable token transfers, minting and burning.\n Useful for scenarios such as preventing trades until the end of an evaluation\n period, or having an emergency switch for freezing all token transfers in the\n event of a large bug.\n _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 8481, + "linearizedBaseContracts": [ + 8481, + 13997, + 8313, + 8646, + 8631, + 1802, + 2048, + 22 + ], + "name": "ERC1155Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 8152 + ], + "body": { + "id": 8479, + "nodeType": "Block", + "src": "855:160:79", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8464, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8445, + "src": "892:8:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8465, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8447, + "src": "902:4:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8466, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8449, + "src": "908:2:79", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8467, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8452, + "src": "912:3:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8468, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8455, + "src": "917:7:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 8469, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8457, + "src": "926:4:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 8461, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "865:5:79", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC1155Pausable_$8481", + "typeString": "contract super ERC1155Pausable" + } + }, + "id": 8463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8152, + "src": "865:26:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 8470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "865:66:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8471, + "nodeType": "ExpressionStatement", + "src": "865:66:79" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "950:9:79", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8473, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13943, + "src": "951:6:79", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 8474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "951:8:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135355061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564", + "id": 8476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:46:79", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_382791644f51336ed3667770955aa8eb4efb839029c48708cadb22e92d271435", + "typeString": "literal_string \"ERC1155Pausable: token transfer while paused\"" + }, + "value": "ERC1155Pausable: token transfer while paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_382791644f51336ed3667770955aa8eb4efb839029c48708cadb22e92d271435", + "typeString": "literal_string \"ERC1155Pausable: token transfer while paused\"" + } + ], + "id": 8472, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "942:7:79", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "942:66:79", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8478, + "nodeType": "ExpressionStatement", + "src": "942:66:79" + } + ] + }, + "documentation": { + "id": 8443, + "nodeType": "StructuredDocumentation", + "src": "481:136:79", + "text": " @dev See {ERC1155-_beforeTokenTransfer}.\n Requirements:\n - the contract must not be paused." + }, + "id": 8480, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8459, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "842:8:79" + }, + "parameters": { + "id": 8458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8445, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8480, + "src": "661:16:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "661:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8447, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8480, + "src": "687:12:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8449, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8480, + "src": "709:10:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:79", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8452, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8480, + "src": "729:20:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "729:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8451, + "length": null, + "nodeType": "ArrayTypeName", + "src": "729:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8455, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8480, + "src": "759:24:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "759:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8454, + "length": null, + "nodeType": "ArrayTypeName", + "src": "759:9:79", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8457, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8480, + "src": "793:17:79", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8456, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "793:5:79", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "651:165:79" + }, + "returnParameters": { + "id": 8460, + "nodeType": "ParameterList", + "parameters": [], + "src": "855:0:79" + }, + "scope": 8481, + "src": "622:393:79", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 8482, + "src": "420:597:79" + } + ], + "src": "33:985:79" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1155PresetMinterPauser.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155PresetMinterPauser.json new file mode 100644 index 0000000..b82a6ba --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155PresetMinterPauser.json @@ -0,0 +1,3204 @@ +{ + "fileName": "ERC1155PresetMinterPauser.sol", + "contractName": "ERC1155PresetMinterPauser", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../access/AccessControl.sol\";\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC1155/ERC1155.sol\";\nimport \"../token/ERC1155/ERC1155Burnable.sol\";\nimport \"../token/ERC1155/ERC1155Pausable.sol\";\n\n/**\n * @dev {ERC1155} token, including:\n *\n * - ability for holders to burn (destroy) their tokens\n * - a minter role that allows for token minting (creation)\n * - a pauser role that allows to stop all token transfers\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter and pauser\n * roles, as well as the default admin role, which will let it grant both minter\n * and pauser roles to other accounts.\n */\ncontract ERC1155PresetMinterPauser is Context, AccessControl, ERC1155Burnable, ERC1155Pausable {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that\n * deploys the contract.\n */\n constructor(string memory uri) public ERC1155(uri) {\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n _setupRole(MINTER_ROLE, _msgSender());\n _setupRole(PAUSER_ROLE, _msgSender());\n }\n\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual {\n require(hasRole(MINTER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have minter role to mint\");\n\n _mint(to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}.\n */\n function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public virtual {\n require(hasRole(MINTER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have minter role to mint\");\n\n _mintBatch(to, ids, amounts, data);\n }\n\n /**\n * @dev Pauses all token transfers.\n *\n * See {ERC1155Pausable} and {Pausable-_pause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function pause() public virtual {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have pauser role to pause\");\n _pause();\n }\n\n /**\n * @dev Unpauses all token transfers.\n *\n * See {ERC1155Pausable} and {Pausable-_unpause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function unpause() public virtual {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have pauser role to unpause\");\n _unpause();\n }\n\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n internal virtual override(ERC1155, ERC1155Pausable)\n {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n}\n", + "sourcePath": "contracts/presets/ERC1155PresetMinterPauser.sol", + "sourceMap": "828:2533:73:-:0;;;1205:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:3;751:40:10;418:10;770:20;;751:18;;;:40;;:::i;:::-;2013:12:76;2021:3;2013:7;;;:12;;:::i;:::-;2114:41;1752:10;2133:21;;2114:18;;;:41;;:::i;:::-;2255:54;1904:10;2274:34;;2255:18;;;:54;;:::i;:::-;1964:352;933:5:110;923:7;;:15;;;;;;;;;;;;;;;;;;1266:44:73::1;1762:4:6;1277:18:73::0;::::1;1297:12;:10;;;:12;;:::i;:::-;1266:10;;;:44;;:::i;:::-;1321:37;967:24;;;;;;;::::0;::::1;;;;;;;;;;;1345:12;:10;;;:12;;:::i;:::-;1321:10;;;:37;;:::i;:::-;1368;1035:24;;;;;;;::::0;::::1;;;;;;;;;;;1392:12;:10;;;:12;;:::i;:::-;1368:10;;;:37;;:::i;:::-;1205:207:::0;828:2533;;1482:198:10;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;7585:86:76:-;7658:6;7651:4;:13;;;;;;;;;;;;:::i;:::-;;7585:86;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;6578:110:6:-;6656:25;6667:4;6673:7;6656:10;;;:25;;:::i;:::-;6578:110;;:::o;7015:184::-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;;;:12;;:::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;;;:41;;:::i;:::-;4950:48;;4864:141;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;;;:21;;:::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;828:2533:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "828:2533:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2953:220:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;948:140:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2714:97:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1971:278:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4272:112:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5580:1184:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4634:223:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5808:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2834:177:73;;;:::i;:::-;;3330:615:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040:76:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;598:312:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1623:246:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2454:171;;;:::i;:::-;;3955:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2940:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1717:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4013:306:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3245:125:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;929:62:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5091:226:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;997:62:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4386:158:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4611:897;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;312:280:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2953:220:76;3031:7;3077:1;3058:21;;:7;:21;;;;3050:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3144:9;:13;3154:2;3144:13;;;;;;;;;;;:22;3158:7;3144:22;;;;;;;;;;;;;;;;3137:29;;2953:220;;;;:::o;948:140:10:-;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;2714:97:76:-;2768:13;2800:4;2793:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:97;;;:::o;1971:278:73:-;2102:34;967:24;;;;;;;;;;;;;;;;;;;2123:12;:10;:12::i;:::-;2102:7;:34::i;:::-;2094:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:34;2219:2;2223:3;2228:7;2237:4;2208:10;:34::i;:::-;1971:278;;;;:::o;4272:112:6:-;4329:7;4355:6;:12;4362:4;4355:12;;;;;;;;;;;:22;;;4348:29;;4272:112;;;:::o;5580:1184:76:-;5834:7;:14;5820:3;:10;:28;5812:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5925:1;5911:16;;:2;:16;;;;5903:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6008:12;:10;:12::i;:::-;6000:20;;:4;:20;;;:60;;;;6024:36;6041:4;6047:12;:10;:12::i;:::-;6024:16;:36::i;:::-;6000:60;5979:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6147:16;6166:12;:10;:12::i;:::-;6147:31;;6189:60;6210:8;6220:4;6226:2;6230:3;6235:7;6244:4;6189:20;:60::i;:::-;6265:9;6277:1;6265:13;;6260:349;6284:3;:10;6280:1;:14;6260:349;;;6315:10;6328:3;6332:1;6328:6;;;;;;;;;;;;;;6315:19;;6348:14;6365:7;6373:1;6365:10;;;;;;;;;;;;;;6348:27;;6412:123;6453:6;6412:123;;;;;;;;;;;;;;;;;:9;:13;6422:2;6412:13;;;;;;;;;;;:19;6426:4;6412:19;;;;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6390:9;:13;6400:2;6390:13;;;;;;;;;;;:19;6404:4;6390:19;;;;;;;;;;;;;;;:145;;;;6569:29;6591:6;6569:9;:13;6579:2;6569:13;;;;;;;;;;;:17;6583:2;6569:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;6549:9;:13;6559:2;6549:13;;;;;;;;;;;:17;6563:2;6549:17;;;;;;;;;;;;;;;:49;;;;6260:349;;6296:3;;;;;6260:349;;;;6654:2;6624:47;;6648:4;6624:47;;6638:8;6624:47;;;6658:3;6663:7;6624:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6682:75;6718:8;6728:4;6734:2;6738:3;6743:7;6752:4;6682:35;:75::i;:::-;5580:1184;;;;;;:::o;4634:223:6:-;4717:45;4725:6;:12;4732:4;4725:12;;;;;;;;;;;:22;;;4749:12;:10;:12::i;:::-;4717:7;:45::i;:::-;4709:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4825:25;4836:4;4842:7;4825:10;:25::i;:::-;4634:223;;:::o;5808:205::-;5905:12;:10;:12::i;:::-;5894:23;;:7;:23;;;5886:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5980:26;5992:4;5998:7;5980:11;:26::i;:::-;5808:205;;:::o;2834:177:73:-;2886:34;1035:24;;;;;;;;;;;;;;;;;;;2907:12;:10;:12::i;:::-;2886:7;:34::i;:::-;2878:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:10;:8;:10::i;:::-;2834:177::o;3330:615:76:-;3487:16;3546:3;:10;3527:8;:15;:29;3519:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:30;3660:8;:15;3646:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3613:63;;3692:9;3704:1;3692:13;;3687:221;3711:8;:15;3707:1;:19;3687:221;;;3778:1;3755:25;;:8;3764:1;3755:11;;;;;;;;;;;;;;:25;;;;3747:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3867:9;:17;3877:3;3881:1;3877:6;;;;;;;;;;;;;;3867:17;;;;;;;;;;;:30;3885:8;3894:1;3885:11;;;;;;;;;;;;;;3867:30;;;;;;;;;;;;;;;;3848:13;3862:1;3848:16;;;;;;;;;;;;;:49;;;;;3728:3;;;;;3687:221;;;;3925:13;3918:20;;;3330:615;;;;:::o;1040:76:110:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;598:312:77:-;738:12;:10;:12::i;:::-;727:23;;:7;:23;;;:66;;;;754:39;771:7;780:12;:10;:12::i;:::-;754:16;:39::i;:::-;727:66;706:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;871:32;882:7;891:3;896:6;871:10;:32::i;:::-;598:312;;;:::o;1623:246:73:-;1729:34;967:24;;;;;;;;;;;;;;;;;;;1750:12;:10;:12::i;:::-;1729:7;:34::i;:::-;1721:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1835:27;1841:2;1845;1849:6;1857:4;1835:5;:27::i;:::-;1623:246;;;;:::o;2454:171::-;2504:34;1035:24;;;;;;;;;;;;;;;;;;;2525:12;:10;:12::i;:::-;2504:7;:34::i;:::-;2496:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:8;:6;:8::i;:::-;2454:171::o;3955:136:6:-;4028:7;4054:30;4078:5;4054:6;:12;4061:4;4054:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;4047:37;;3955:136;;;;:::o;2940:137::-;3009:4;3032:38;3062:7;3032:6;:12;3039:4;3032:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;3025:45;;2940:137;;;;:::o;1717:49::-;1762:4;1717:49;;;:::o;4013:306:76:-;4131:8;4115:24;;:12;:10;:12::i;:::-;:24;;;;4107:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4241:8;4196:18;:32;4215:12;:10;:12::i;:::-;4196:32;;;;;;;;;;;;;;;:42;4229:8;4196:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;4293:8;4264:48;;4279:12;:10;:12::i;:::-;4264:48;;;4303:8;4264:48;;;;;;;;;;;;;;;;;;;;;;4013:306;;:::o;3245:125:6:-;3308:7;3334:29;:6;:12;3341:4;3334:12;;;;;;;;;;;:20;;:27;:29::i;:::-;3327:36;;3245:125;;;:::o;929:62:73:-;967:24;;;;;;;;;;;;;;;;;;;929:62;:::o;5091:226:6:-;5175:45;5183:6;:12;5190:4;5183:12;;;;;;;;;;;:22;;;5207:12;:10;:12::i;:::-;5175:7;:45::i;:::-;5167:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:26;5296:4;5302:7;5284:11;:26::i;:::-;5091:226;;:::o;997:62:73:-;1035:24;;;;;;;;;;;;;;;;;;;997:62;:::o;4386:158:76:-;4477:4;4500:18;:27;4519:7;4500:27;;;;;;;;;;;;;;;:37;4528:8;4500:37;;;;;;;;;;;;;;;;;;;;;;;;;4493:44;;4386:158;;;;:::o;4611:897::-;4840:1;4826:16;;:2;:16;;;;4818:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4923:12;:10;:12::i;:::-;4915:20;;:4;:20;;;:60;;;;4939:36;4956:4;4962:12;:10;:12::i;:::-;4939:16;:36::i;:::-;4915:60;4894:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5053:16;5072:12;:10;:12::i;:::-;5053:31;;5095:96;5116:8;5126:4;5132:2;5136:21;5154:2;5136:17;:21::i;:::-;5159:25;5177:6;5159:17;:25::i;:::-;5186:4;5095:20;:96::i;:::-;5224:77;5248:6;5224:77;;;;;;;;;;;;;;;;;:9;:13;5234:2;5224:13;;;;;;;;;;;:19;5238:4;5224:19;;;;;;;;;;;;;;;;:23;;:77;;;;;:::i;:::-;5202:9;:13;5212:2;5202:13;;;;;;;;;;;:19;5216:4;5202:19;;;;;;;;;;;;;;;:99;;;;5331:29;5353:6;5331:9;:13;5341:2;5331:13;;;;;;;;;;;:17;5345:2;5331:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;5311:9;:13;5321:2;5311:13;;;;;;;;;;;:17;5325:2;5311:17;;;;;;;;;;;;;;;:49;;;;5407:2;5376:46;;5401:4;5376:46;;5391:8;5376:46;;;5411:2;5415:6;5376:46;;;;;;;;;;;;;;;;;;;;;;;;5433:68;5464:8;5474:4;5480:2;5484;5488:6;5496:4;5433:30;:68::i;:::-;4611:897;;;;;;:::o;312:280:77:-;427:12;:10;:12::i;:::-;416:23;;:7;:23;;;:66;;;;443:39;460:7;469:12;:10;:12::i;:::-;443:16;:39::i;:::-;416:66;395:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:25;566:7;575:2;579:5;560;:25::i;:::-;312:280;;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;:41::i;:::-;4950:48;;4864:141;;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;8971:700:76:-;9119:1;9105:16;;:2;:16;;;;9097:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9191:7;:14;9177:3;:10;:28;9169:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9261:16;9280:12;:10;:12::i;:::-;9261:31;;9303:66;9324:8;9342:1;9346:2;9350:3;9355:7;9364:4;9303:20;:66::i;:::-;9385:6;9394:1;9385:10;;9380:124;9401:3;:10;9397:1;:14;9380:124;;;9456:37;9471:9;:17;9481:3;9485:1;9481:6;;;;;;;;;;;;;;9471:17;;;;;;;;;;;:21;9489:2;9471:21;;;;;;;;;;;;;;;;9456:7;9464:1;9456:10;;;;;;;;;;;;;;:14;;:37;;;;:::i;:::-;9432:9;:17;9442:3;9446:1;9442:6;;;;;;;;;;;;;;9432:17;;;;;;;;;;;:21;9450:2;9432:21;;;;;;;;;;;;;;;:61;;;;9413:3;;;;;;;9380:124;;;;9555:2;9519:53;;9551:1;9519:53;;9533:8;9519:53;;;9559:3;9564:7;9519:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9583:81;9619:8;9637:1;9641:2;9645:3;9650:7;9659:4;9583:35;:81::i;:::-;8971:700;;;;;:::o;3017:342:73:-;3286:66;3313:8;3323:4;3329:2;3333:3;3338:7;3347:4;3286:26;:66::i;:::-;3017:342;;;;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;13271:778:76:-;13515:15;:2;:13;;;:15::i;:::-;13511:532;;;13567:2;13550:43;;;13594:8;13604:4;13610:3;13615:7;13624:4;13550:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:487;;;;;;;;;;;;;13909:6;13902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:487;13956:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:487;13690:52;;;13678:64;;;:8;:64;;;;13674:161;;13766:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13674:161;13630:219;13511:532;13271:778;;;;;;:::o;7015:184:6:-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;:12::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;7205:188::-;7279:36;7307:7;7279:6;:12;7286:4;7279:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;7275:112;;;7363:12;:10;:12::i;:::-;7336:40;;7354:7;7336:40;;7348:4;7336:40;;;;;;;;;;7275:112;7205:188;;:::o;2042:117:110:-;1610:7;;;;;;;;;;;1602:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2110:5:::1;2100:7;;:15;;;;;;;;;;;;;;;;;;2130:22;2139:12;:10;:12::i;:::-;2130:22;;;;;;;;;;;;;;;;;;;;;;2042:117::o:0;10652:705:76:-;10791:1;10772:21;;:7;:21;;;;10764:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10865:7;:14;10851:3;:10;:28;10843:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10935:16;10954:12;:10;:12::i;:::-;10935:31;;10977:69;10998:8;11008:7;11025:1;11029:3;11034:7;10977:69;;;;;;;;;;;;:20;:69::i;:::-;11062:6;11071:1;11062:10;;11057:220;11078:3;:10;11074:1;:14;11057:220;;;11138:128;11186:7;11194:1;11186:10;;;;;;;;;;;;;;11138:128;;;;;;;;;;;;;;;;;:9;:17;11148:3;11152:1;11148:6;;;;;;;;;;;;;;11138:17;;;;;;;;;;;:26;11156:7;11138:26;;;;;;;;;;;;;;;;:30;;:128;;;;;:::i;:::-;11109:9;:17;11119:3;11123:1;11119:6;;;;;;;;;;;;;;11109:17;;;;;;;;;;;:26;11127:7;11109:26;;;;;;;;;;;;;;;:157;;;;11090:3;;;;;;;11057:220;;;;11333:1;11292:58;;11316:7;11292:58;;11306:8;11292:58;;;11337:3;11342:7;11292:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10652:705;;;;:::o;8054:572::-;8187:1;8168:21;;:7;:21;;;;8160:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8238:16;8257:12;:10;:12::i;:::-;8238:31;;8280:107;8301:8;8319:1;8323:7;8332:21;8350:2;8332:17;:21::i;:::-;8355:25;8373:6;8355:17;:25::i;:::-;8382:4;8280:20;:107::i;:::-;8423:34;8450:6;8423:9;:13;8433:2;8423:13;;;;;;;;;;;:22;8437:7;8423:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;8398:9;:13;8408:2;8398:13;;;;;;;;;;;:22;8412:7;8398:22;;;;;;;;;;;;;;;:59;;;;8509:7;8472:57;;8505:1;8472:57;;8487:8;8472:57;;;8518:2;8522:6;8472:57;;;;;;;;;;;;;;;;;;;;;;;;8540:79;8571:8;8589:1;8593:7;8602:2;8606:6;8614:4;8540:30;:79::i;:::-;8054:572;;;;;:::o;1795:115:110:-;1346:7;;;;;;;;;;;1345:8;1337:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:4:::1;1854:7;;:14;;;;;;;;;;;;;;;;;;1883:20;1890:12;:10;:12::i;:::-;1883:20;;;;;;;;;;;;;;;;;;;;;;1795:115::o:0;6085:147:109:-;6159:7;6201:22;6205:3;:10;;6217:5;6201:3;:22::i;:::-;6193:31;;6178:47;;6085:147;;;;:::o;5401:156::-;5481:4;5504:46;5514:3;:10;;5542:5;5534:14;;5526:23;;5504:9;:46::i;:::-;5497:53;;5401:156;;;;:::o;5638:115::-;5701:7;5727:19;5735:3;:10;;5727:7;:19::i;:::-;5720:26;;5638:115;;;:::o;14055:193:76:-;14121:16;14149:22;14188:1;14174:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14149:41;;14211:7;14200:5;14206:1;14200:8;;;;;;;;;;;;;:18;;;;;14236:5;14229:12;;;14055:193;;;:::o;12524:741::-;12743:15;:2;:13;;;:15::i;:::-;12739:520;;;12795:2;12778:38;;;12817:8;12827:4;12833:2;12837:6;12845:4;12778:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12774:475;;;;;;;;;;;;;13125:6;13118:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12774:475;13172:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12774:475;12911:47;;;12899:59;;;:8;:59;;;;12895:156;;12982:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:156;12851:214;12739:520;12524:741;;;;;;:::o;9920:538::-;10034:1;10015:21;;:7;:21;;;;10007:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10087:16;10106:12;:10;:12::i;:::-;10087:31;;10129:105;10150:8;10160:7;10177:1;10181:21;10199:2;10181:17;:21::i;:::-;10204:25;10222:6;10204:17;:25::i;:::-;10129:105;;;;;;;;;;;;:20;:105::i;:::-;10270:108;10310:6;10270:108;;;;;;;;;;;;;;;;;:9;:13;10280:2;10270:13;;;;;;;;;;;:22;10284:7;10270:22;;;;;;;;;;;;;;;;:26;;:108;;;;;:::i;:::-;10245:9;:13;10255:2;10245:13;;;;;;;;;;;:22;10259:7;10245:22;;;;;;;;;;;;;;;:133;;;;10436:1;10394:57;;10419:7;10394:57;;10409:8;10394:57;;;10440:2;10444:6;10394:57;;;;;;;;;;;;;;;;;;;;;;;;9920:538;;;;:::o;1611:404:109:-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;622:393:79:-;865:66;892:8;902:4;908:2;912:3;917:7;926:4;865:26;:66::i;:::-;951:8;:6;:8::i;:::-;950:9;942:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;622:393;;;;;;:::o;718:610:104:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;5173:147:109:-;5246:4;5269:44;5277:3;:10;;5305:5;5297:14;;5289:23;;5269:7;:44::i;:::-;5262:51;;5173:147;;;;:::o;4423:201::-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;3984:107::-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;12291:227:76:-;;;;;;;:::o;2183:1512:109:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;5:97:-1:-;;93:2;89:7;84:2;77:5;73:14;69:28;59:38;;53:49;;;;110:106;;200:5;195:3;191:15;169:37;;163:53;;;;224:739;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;336;333;318:23;357:34;388:1;382:8;357:34;;;414:10;409:3;406:19;396:2;;429:5;;;396:2;460;454:9;514:1;496:16;492:24;489:1;483:4;468:49;543:4;537:11;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;553:2;693:6;687:4;683:17;725:3;719:10;748:18;740:6;737:30;734:2;;;770:5;;;;;;;734:2;814:6;807:4;802:3;798:14;794:27;847:16;841:4;837:27;832:3;829:36;826:2;;;868:5;;;;;;;;826:2;912:29;934:6;912:29;;;905:4;900:3;896:14;892:50;888:2;881:62;955:3;948:10;;267:696;;;;;;;;", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "burnBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mintBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/presets/ERC1155PresetMinterPauser.sol", + "exportedSymbols": { + "ERC1155PresetMinterPauser": [ + 7003 + ] + }, + "id": 7004, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6824, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:73" + }, + { + "absolutePath": "contracts/access/AccessControl.sol", + "file": "../access/AccessControl.sol", + "id": 6825, + "nodeType": "ImportDirective", + "scope": 7004, + "sourceUnit": 1468, + "src": "58:37:73", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 6826, + "nodeType": "ImportDirective", + "scope": 7004, + "sourceUnit": 23, + "src": "96:28:73", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC1155/ERC1155.sol", + "file": "../token/ERC1155/ERC1155.sol", + "id": 6827, + "nodeType": "ImportDirective", + "scope": 7004, + "sourceUnit": 8314, + "src": "125:38:73", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC1155/ERC1155Burnable.sol", + "file": "../token/ERC1155/ERC1155Burnable.sol", + "id": 6828, + "nodeType": "ImportDirective", + "scope": 7004, + "sourceUnit": 8383, + "src": "164:46:73", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC1155/ERC1155Pausable.sol", + "file": "../token/ERC1155/ERC1155Pausable.sol", + "id": 6829, + "nodeType": "ImportDirective", + "scope": 7004, + "sourceUnit": 8482, + "src": "211:46:73", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6831, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "866:7:73", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 6832, + "nodeType": "InheritanceSpecifier", + "src": "866:7:73" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6833, + "name": "AccessControl", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1467, + "src": "875:13:73", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AccessControl_$1467", + "typeString": "contract AccessControl" + } + }, + "id": 6834, + "nodeType": "InheritanceSpecifier", + "src": "875:13:73" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6835, + "name": "ERC1155Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8382, + "src": "890:15:73", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Burnable_$8382", + "typeString": "contract ERC1155Burnable" + } + }, + "id": 6836, + "nodeType": "InheritanceSpecifier", + "src": "890:15:73" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6837, + "name": "ERC1155Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8481, + "src": "907:15:73", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Pausable_$8481", + "typeString": "contract ERC1155Pausable" + } + }, + "id": 6838, + "nodeType": "InheritanceSpecifier", + "src": "907:15:73" + } + ], + "contractDependencies": [ + 22, + 1467, + 1802, + 2048, + 8313, + 8382, + 8481, + 8631, + 8646, + 13997 + ], + "contractKind": "contract", + "documentation": { + "id": 6830, + "nodeType": "StructuredDocumentation", + "src": "259:568:73", + "text": " @dev {ERC1155} token, including:\n - ability for holders to burn (destroy) their tokens\n - a minter role that allows for token minting (creation)\n - a pauser role that allows to stop all token transfers\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the minter and pauser\n roles, as well as the default admin role, which will let it grant both minter\n and pauser roles to other accounts." + }, + "fullyImplemented": true, + "id": 7003, + "linearizedBaseContracts": [ + 7003, + 8481, + 13997, + 8382, + 8313, + 8646, + 8631, + 1802, + 2048, + 1467, + 22 + ], + "name": "ERC1155PresetMinterPauser", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "d5391393", + "id": 6843, + "mutability": "constant", + "name": "MINTER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7003, + "src": "929:62:73", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6839, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "929:7:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4d494e5445525f524f4c45", + "id": 6841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "977:13:73", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + }, + "value": "MINTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + } + ], + "id": 6840, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "967:9:73", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "967:24:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "e63ab1e9", + "id": 6848, + "mutability": "constant", + "name": "PAUSER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7003, + "src": "997:62:73", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6844, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "997:7:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "5041555345525f524f4c45", + "id": 6846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1045:13:73", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 6845, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1035:9:73", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1035:24:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 6875, + "nodeType": "Block", + "src": "1256:156:73", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6858, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1210, + "src": "1277:18:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6859, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1297:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1297:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6857, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1266:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1266:44:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6862, + "nodeType": "ExpressionStatement", + "src": "1266:44:73" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6864, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6843, + "src": "1332:11:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6865, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1345:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1345:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6863, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1321:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1321:37:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6868, + "nodeType": "ExpressionStatement", + "src": "1321:37:73" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6870, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6848, + "src": "1379:11:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6871, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1392:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1392:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6869, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1368:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 6873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1368:37:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6874, + "nodeType": "ExpressionStatement", + "src": "1368:37:73" + } + ] + }, + "documentation": { + "id": 6849, + "nodeType": "StructuredDocumentation", + "src": "1066:134:73", + "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that\n deploys the contract." + }, + "id": 6876, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6854, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6851, + "src": "1251:3:73", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 6855, + "modifierName": { + "argumentTypes": null, + "id": 6853, + "name": "ERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8313, + "src": "1243:7:73", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155_$8313_$", + "typeString": "type(contract ERC1155)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1243:12:73" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6851, + "mutability": "mutable", + "name": "uri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6876, + "src": "1217:17:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6850, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1217:6:73", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1216:19:73" + }, + "returnParameters": { + "id": 6856, + "nodeType": "ParameterList", + "parameters": [], + "src": "1256:0:73" + }, + "scope": 7003, + "src": "1205:207:73", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6904, + "nodeType": "Block", + "src": "1711:158:73", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6890, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6843, + "src": "1737:11:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6891, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1750:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1750:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6889, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "1729:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1729:34:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74", + "id": 6894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1765:58:73", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\"" + }, + "value": "ERC1155PresetMinterPauser: must have minter role to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\"" + } + ], + "id": 6888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1721:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1721:103:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6896, + "nodeType": "ExpressionStatement", + "src": "1721:103:73" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6898, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "1841:2:73", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6899, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6881, + "src": "1845:2:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6900, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6883, + "src": "1849:6:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6901, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6885, + "src": "1857:4:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6897, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7861, + "src": "1835:5:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory)" + } + }, + "id": 6902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1835:27:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6903, + "nodeType": "ExpressionStatement", + "src": "1835:27:73" + } + ] + }, + "documentation": { + "id": 6877, + "nodeType": "StructuredDocumentation", + "src": "1418:200:73", + "text": " @dev Creates `amount` new tokens for `to`, of token type `id`.\n See {ERC1155-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`." + }, + "functionSelector": "731133e9", + "id": 6905, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6879, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6905, + "src": "1637:10:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1637:7:73", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6881, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6905, + "src": "1649:10:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1649:7:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6883, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6905, + "src": "1661:14:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1661:7:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6885, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6905, + "src": "1677:17:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6884, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1677:5:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1636:59:73" + }, + "returnParameters": { + "id": 6887, + "nodeType": "ParameterList", + "parameters": [], + "src": "1711:0:73" + }, + "scope": 7003, + "src": "1623:246:73", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6935, + "nodeType": "Block", + "src": "2084:165:73", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6921, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6843, + "src": "2110:11:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6922, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2123:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2123:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6920, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2102:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2102:34:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74", + "id": 6925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2138:58:73", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\"" + }, + "value": "ERC1155PresetMinterPauser: must have minter role to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\"" + } + ], + "id": 6919, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2094:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2094:103:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6927, + "nodeType": "ExpressionStatement", + "src": "2094:103:73" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6929, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6908, + "src": "2219:2:73", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6930, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "2223:3:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 6931, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6914, + "src": "2228:7:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 6932, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6916, + "src": "2237:4:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6928, + "name": "_mintBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7969, + "src": "2208:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 6933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2208:34:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6934, + "nodeType": "ExpressionStatement", + "src": "2208:34:73" + } + ] + }, + "documentation": { + "id": 6906, + "nodeType": "StructuredDocumentation", + "src": "1875:91:73", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}." + }, + "functionSelector": "1f7fdffa", + "id": 6936, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mintBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6908, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6936, + "src": "1990:10:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1990:7:73", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6911, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6936, + "src": "2002:20:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2002:7:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6910, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2002:9:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6914, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6936, + "src": "2024:24:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2024:7:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6913, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2024:9:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6916, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6936, + "src": "2050:17:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6915, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2050:5:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1989:79:73" + }, + "returnParameters": { + "id": 6918, + "nodeType": "ParameterList", + "parameters": [], + "src": "2084:0:73" + }, + "scope": 7003, + "src": "1971:278:73", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6952, + "nodeType": "Block", + "src": "2486:139:73", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6942, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6848, + "src": "2512:11:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6943, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2525:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2525:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6941, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2504:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2504:34:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365", + "id": 6946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2540:59:73", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d5053a301adec69bf5c7c3782556a354b14090e41fa7ca93c4de3863fd6a98b9", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to pause\"" + }, + "value": "ERC1155PresetMinterPauser: must have pauser role to pause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d5053a301adec69bf5c7c3782556a354b14090e41fa7ca93c4de3863fd6a98b9", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to pause\"" + } + ], + "id": 6940, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2496:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2496:104:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6948, + "nodeType": "ExpressionStatement", + "src": "2496:104:73" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6949, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13980, + "src": "2610:6:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 6950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2610:8:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6951, + "nodeType": "ExpressionStatement", + "src": "2610:8:73" + } + ] + }, + "documentation": { + "id": 6937, + "nodeType": "StructuredDocumentation", + "src": "2255:194:73", + "text": " @dev Pauses all token transfers.\n See {ERC1155Pausable} and {Pausable-_pause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "8456cb59", + "id": 6953, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6938, + "nodeType": "ParameterList", + "parameters": [], + "src": "2468:2:73" + }, + "returnParameters": { + "id": 6939, + "nodeType": "ParameterList", + "parameters": [], + "src": "2486:0:73" + }, + "scope": 7003, + "src": "2454:171:73", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6969, + "nodeType": "Block", + "src": "2868:143:73", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6959, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6848, + "src": "2894:11:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6960, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2907:10:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2907:12:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 6958, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2886:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2886:34:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365", + "id": 6963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2922:61:73", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_be510562063387b7714478be5eff01a8c39efbb1b76d9be224d34aac440c9e31", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to unpause\"" + }, + "value": "ERC1155PresetMinterPauser: must have pauser role to unpause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_be510562063387b7714478be5eff01a8c39efbb1b76d9be224d34aac440c9e31", + "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to unpause\"" + } + ], + "id": 6957, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2878:7:73", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2878:106:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6965, + "nodeType": "ExpressionStatement", + "src": "2878:106:73" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6966, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13996, + "src": "2994:8:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 6967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2994:10:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6968, + "nodeType": "ExpressionStatement", + "src": "2994:10:73" + } + ] + }, + "documentation": { + "id": 6954, + "nodeType": "StructuredDocumentation", + "src": "2631:198:73", + "text": " @dev Unpauses all token transfers.\n See {ERC1155Pausable} and {Pausable-_unpause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "3f4ba83a", + "id": 6970, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6955, + "nodeType": "ParameterList", + "parameters": [], + "src": "2850:2:73" + }, + "returnParameters": { + "id": 6956, + "nodeType": "ParameterList", + "parameters": [], + "src": "2868:0:73" + }, + "scope": 7003, + "src": "2834:177:73", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 8152, + 8480 + ], + "body": { + "id": 7001, + "nodeType": "Block", + "src": "3276:83:73", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6993, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6972, + "src": "3313:8:73", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6994, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6974, + "src": "3323:4:73", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6995, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6976, + "src": "3329:2:73", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6996, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6979, + "src": "3333:3:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 6997, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6982, + "src": "3338:7:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 6998, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6984, + "src": "3347:4:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 6990, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3286:5:73", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC1155PresetMinterPauser_$7003", + "typeString": "contract super ERC1155PresetMinterPauser" + } + }, + "id": 6992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8480, + "src": "3286:26:73", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 6999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3286:66:73", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7000, + "nodeType": "ExpressionStatement", + "src": "3286:66:73" + } + ] + }, + "documentation": null, + "id": 7002, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6988, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 6986, + "name": "ERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8313, + "src": "3246:7:73", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$8313", + "typeString": "contract ERC1155" + } + }, + { + "contractScope": null, + "id": 6987, + "name": "ERC1155Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8481, + "src": "3255:15:73", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Pausable_$8481", + "typeString": "contract ERC1155Pausable" + } + } + ], + "src": "3237:34:73" + }, + "parameters": { + "id": 6985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6972, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7002, + "src": "3056:16:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3056:7:73", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6974, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7002, + "src": "3082:12:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3082:7:73", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6976, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7002, + "src": "3104:10:73", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3104:7:73", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6979, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7002, + "src": "3124:20:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3124:7:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6978, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3124:9:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6982, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7002, + "src": "3154:24:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6980, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3154:7:73", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6981, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3154:9:73", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6984, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7002, + "src": "3188:17:73", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6983, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3188:5:73", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3046:165:73" + }, + "returnParameters": { + "id": 6989, + "nodeType": "ParameterList", + "parameters": [], + "src": "3276:0:73" + }, + "scope": 7003, + "src": "3017:342:73", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 7004, + "src": "828:2533:73" + } + ], + "src": "33:3329:73" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620049c4380380620049c4833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b5060405250505080620001116301ffc9a760e01b6200024560201b60201c565b62000122816200034e60201b60201c565b6200013a63d9b67a2660e01b6200024560201b60201c565b62000152630e89341c60e01b6200024560201b60201c565b506000600560006101000a81548160ff021916908315150217905550620001926000801b620001866200036a60201b60201c565b6200037260201b60201c565b620001e860405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620001dc6200036a60201b60201c565b6200037260201b60201c565b6200023e60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620002326200036a60201b60201c565b6200037260201b60201c565b50620005af565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b80600490805190602001906200036692919062000500565b5050565b600033905090565b6200038482826200038860201b60201c565b5050565b620003b6816000808581526020019081526020016000206000016200042b60201b620025151790919060201c565b156200042757620003cc6200036a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200045b836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200046360201b60201c565b905092915050565b6000620004778383620004dd60201b60201c565b620004d2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004d7565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200054357805160ff191683800117855562000574565b8280016001018555821562000574579182015b828111156200057357825182559160200191906001019062000556565b5b50905062000583919062000587565b5090565b620005ac91905b80821115620005a85760008160009055506001016200058e565b5090565b90565b61440580620005bf6000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610e15578063e985e9c514610e33578063f242432a14610eaf578063f5298aca14610fbe57610172565b8063ca15c87314610d67578063d539139314610da9578063d547741f14610dc757610172565b8063731133e914610b225780638456cb5914610c115780639010d07c14610c1b57806391d1485414610c93578063a217fddf14610cf9578063a22cb46514610d1757610172565b80632f2ff15d116101305780632f2ff15d1461074d57806336568abe1461079b5780633f4ba83a146107e95780634e1273f4146107f35780635c975abb146109945780636b20c454146109b657610172565b8062fdd58e1461017757806301ffc9a7146101d95780630e89341c1461023e5780631f7fdffa146102e5578063248a9ca3146104e85780632eb2c2d61461052a575b600080fd5b6101c36004803603604081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611016565b6040518082815260200191505060405180910390f35b610224600480360360208110156101ef57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110f6565b604051808215151515815260200191505060405180910390f35b61026a6004803603602081101561025457600080fd5b810190808035906020019092919050505061115e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102aa57808201518184015260208101905061028f565b50505050905090810190601f1680156102d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104e6600480360360808110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561033857600080fd5b82018360208201111561034a57600080fd5b8035906020019184602083028401116401000000008311171561036c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103cc57600080fd5b8201836020820111156103de57600080fd5b8035906020019184602083028401116401000000008311171561040057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561046057600080fd5b82018360208201111561047257600080fd5b8035906020019184600183028401116401000000008311171561049457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611202565b005b610514600480360360208110156104fe57600080fd5b81019080803590602001909291905050506112af565b6040518082815260200191505060405180910390f35b61074b600480360360a081101561054057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111640100000000831117156105d157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561063157600080fd5b82018360208201111561064357600080fd5b8035906020019184602083028401116401000000008311171561066557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460018302840111640100000000831117156106f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112ce565b005b6107996004803603604081101561076357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175c565b005b6107e7600480360360408110156107b157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e5565b005b6107f161187e565b005b61093d6004803603604081101561080957600080fd5b810190808035906020019064010000000081111561082657600080fd5b82018360208201111561083857600080fd5b8035906020019184602083028401116401000000008311171561085a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108ba57600080fd5b8201836020820111156108cc57600080fd5b803590602001918460208302840111640100000000831117156108ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611923565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610980578082015181840152602081019050610965565b505050509050019250505060405180910390f35b61099c611b18565b604051808215151515815260200191505060405180910390f35b610b20600480360360608110156109cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a0957600080fd5b820183602082011115610a1b57600080fd5b80359060200191846020830284011164010000000083111715610a3d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a9d57600080fd5b820183602082011115610aaf57600080fd5b80359060200191846020830284011164010000000083111715610ad157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611b2f565b005b610c0f60048036036080811015610b3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610b8957600080fd5b820183602082011115610b9b57600080fd5b80359060200191846001830284011164010000000083111715610bbd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611be2565b005b610c19611c8f565b005b610c5160048036036040811015610c3157600080fd5b810190808035906020019092919080359060200190929190505050611d34565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cdf60048036036040811015610ca957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d65565b604051808215151515815260200191505060405180910390f35b610d01611d96565b6040518082815260200191505060405180910390f35b610d6560048036036040811015610d2d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d9d565b005b610d9360048036036020811015610d7d57600080fd5b8101908080359060200190929190505050611f38565b6040518082815260200191505060405180910390f35b610db1611f5e565b6040518082815260200191505060405180910390f35b610e1360048036036040811015610ddd57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f97565b005b610e1d612020565b6040518082815260200191505060405180910390f35b610e9560048036036040811015610e4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612059565b604051808215151515815260200191505060405180910390f35b610fbc600480360360a0811015610ec557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610f3657600080fd5b820183602082011115610f4857600080fd5b80359060200191846001830284011164010000000083111715610f6a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506120ed565b005b61101460048036036060811015610fd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612462565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806140b1602b913960400191505060405180910390fd5b6002600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111f65780601f106111cb576101008083540402835291602001916111f6565b820191906000526020600020905b8154815290600101906020018083116111d957829003601f168201915b50505050509050919050565b61124860405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611243612545565b611d65565b61129d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142306038913960400191505060405180910390fd5b6112a98484848461254d565b50505050565b6000806000838152602001908152602001600020600201549050919050565b8151835114611328576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143586028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806141b66025913960400191505060405180910390fd5b6113b6612545565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113fc57506113fb856113f6612545565b612059565b5b611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141db6032913960400191505060405180910390fd5b600061145b612545565b905061146b818787878787612872565b60008090505b845181101561163f57600085828151811061148857fe5b6020026020010151905060008583815181106114a057fe5b60200260200101519050611527816040518060600160405280602a8152602001614268602a91396002600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115de816002600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b6002600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806001019050611471565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116ef5780820151818401526020810190506116d4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611731578082015181840152602081019050611716565b5050505090500194505050505060405180910390a46117548187878787876129d0565b505050505050565b6117826000808481526020019081526020016000206002015461177d612545565b611d65565b6117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614082602f913960400191505060405180910390fd5b6117e18282612d8b565b5050565b6117ed612545565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806143a1602f913960400191505060405180910390fd5b61187a8282612e1e565b5050565b6118c460405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206118bf612545565b611d65565b611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180614292603b913960400191505060405180910390fd5b611921612eb1565b565b6060815183511461197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061432f6029913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561199957600080fd5b506040519080825280602002602001820160405280156119c85781602001602082028036833780820191505090505b50905060008090505b8451811015611b0d57600073ffffffffffffffffffffffffffffffffffffffff168582815181106119fe57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611a73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806140dc6031913960400191505060405180910390fd5b60026000858381518110611a8357fe5b602002602001015181526020019081526020016000206000868381518110611aa757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110611af657fe5b6020026020010181815250508060010190506119d1565b508091505092915050565b6000600560009054906101000a900460ff16905090565b611b37612545565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b7d5750611b7c83611b77612545565b612059565b5b611bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061415d6029913960400191505060405180910390fd5b611bdd838383612fba565b505050565b611c2860405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611c23612545565b611d65565b611c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142306038913960400191505060405180910390fd5b611c89848484846132f8565b50505050565b611cd560405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611cd0612545565b611d65565b611d2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806142cd6039913960400191505060405180910390fd5b611d326134fb565b565b6000611d5d8260008086815260200190815260200160002060000161360590919063ffffffff16565b905092915050565b6000611d8e8260008086815260200190815260200160002060000161361f90919063ffffffff16565b905092915050565b6000801b81565b8173ffffffffffffffffffffffffffffffffffffffff16611dbc612545565b73ffffffffffffffffffffffffffffffffffffffff161415611e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143066029913960400191505060405180910390fd5b8060036000611e36612545565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611ee3612545565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000611f5760008084815260200190815260200160002060000161364f565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611fbd60008084815260200190815260200160002060020154611fb8612545565b611d65565b612012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806141866030913960400191505060405180910390fd5b61201c8282612e1e565b5050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612173576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806141b66025913960400191505060405180910390fd5b61217b612545565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806121c157506121c0856121bb612545565b612059565b5b612216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061415d6029913960400191505060405180910390fd5b6000612220612545565b905061224081878761223188613664565b61223a88613664565b87612872565b6122bd836040518060600160405280602a8152602001614268602a91396002600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612374836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a461245a8187878787876136d4565b505050505050565b61246a612545565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806124b057506124af836124aa612545565b612059565b5b612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061415d6029913960400191505060405180910390fd5b612510838383613a0d565b505050565b600061253d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613c29565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143806021913960400191505060405180910390fd5b815183511461262d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143586028913960400191505060405180910390fd5b6000612637612545565b905061264881600087878787612872565b60008090505b8451811015612754576126e06002600087848151811061266a57fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548583815181106126ca57fe5b602002602001015161294890919063ffffffff16565b600260008784815181106126f057fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808060010191505061264e565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156128055780820151818401526020810190506127ea565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561284757808201518184015260208101905061282c565b5050505090500194505050505060405180910390a461286b816000878787876129d0565b5050505050565b612880868686868686613c99565b505050505050565b6000838311158290612935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128fa5780820151818401526020810190506128df565b50505050905090810190601f1680156129275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156129c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6129ef8473ffffffffffffffffffffffffffffffffffffffff16613d0d565b15612d83578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612ad3578082015181840152602081019050612ab8565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612b15578082015181840152602081019050612afa565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612b54578082015181840152602081019050612b39565b50505050905090810190601f168015612b815780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612ba657600080fd5b505af1925050508015612bda57506040513d6020811015612bc657600080fd5b810190808051906020019092919050505060015b612ce457612be6613f4d565b80612bf15750612c93565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c58578082015181840152602081019050612c3d565b50505050905090810190601f168015612c855780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806140046034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061405a6028913960400191505060405180910390fd5b505b505050505050565b612db28160008085815260200190815260200160002060000161251590919063ffffffff16565b15612e1a57612dbf612545565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612e4581600080858152602001908152602001600020600001613d5890919063ffffffff16565b15612ead57612e52612545565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600560009054906101000a900460ff16612f33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f77612545565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061420d6023913960400191505060405180910390fd5b805182511461309a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143586028913960400191505060405180910390fd5b60006130a4612545565b90506130c481856000868660405180602001604052806000815250612872565b60008090505b83518110156131ea576131768382815181106130e257fe5b602002602001015160405180606001604052806024815260200161410d602491396002600088868151811061311357fe5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600086848151811061318657fe5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506130ca565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561329b578082015181840152602081019050613280565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156132dd5780820151818401526020810190506132c2565b5050505090500194505050505060405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561337e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143806021913960400191505060405180910390fd5b6000613388612545565b90506133a98160008761339a88613664565b6133a388613664565b87612872565b61340c836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46134f4816000878787876136d4565b5050505050565b600560009054906101000a900460ff161561357e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586135c2612545565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006136148360000183613d88565b60001c905092915050565b6000613647836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613e0b565b905092915050565b600061365d82600001613e2e565b9050919050565b606080600167ffffffffffffffff8111801561367f57600080fd5b506040519080825280602002602001820160405280156136ae5781602001602082028036833780820191505090505b50905082816000815181106136bf57fe5b60200260200101818152505080915050919050565b6136f38473ffffffffffffffffffffffffffffffffffffffff16613d0d565b15613a05578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156137d85780820151818401526020810190506137bd565b50505050905090810190601f1680156138055780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561382857600080fd5b505af192505050801561385c57506040513d602081101561384857600080fd5b810190808051906020019092919050505060015b61396657613868613f4d565b806138735750613915565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138da5780820151818401526020810190506138bf565b50505050905090810190601f1680156139075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806140046034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061405a6028913960400191505060405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061420d6023913960400191505060405180910390fd5b6000613a9d612545565b9050613acd81856000613aaf87613664565b613ab887613664565b60405180602001604052806000815250612872565b613b4a8260405180606001604052806024815260200161410d602491396002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6000613c358383613e0b565b613c8e578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613c93565b600090505b92915050565b613ca7868686868686613e3f565b613caf611b18565b15613d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614131602c913960400191505060405180910390fd5b505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613d4f57506000801b8214155b92505050919050565b6000613d80836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613e47565b905092915050565b600081836000018054905011613de9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806140386022913960400191505060405180910390fd5b826000018281548110613df857fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b505050505050565b60008083600101600084815260200190815260200160002054905060008114613f235760006001820390506000600186600001805490500390506000866000018281548110613e9257fe5b9060005260206000200154905080876000018481548110613eaf57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613ee757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613f29565b60009150505b92915050565b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015613f5d57614000565b60046000803e613f6e600051613f40565b6308c379a08114613f7f5750614000565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715613fab57505050614000565b808201805167ffffffffffffffff811115613fca575050505050614000565b8060208301013d8501811115613fe557505050505050614000565b613fee82613f2f565b60208401016040528296505050505050505b9056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135355061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212206b062650d8fec1029803871e723264961d0ec87d557f914a314f0f556a99757b64736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610e15578063e985e9c514610e33578063f242432a14610eaf578063f5298aca14610fbe57610172565b8063ca15c87314610d67578063d539139314610da9578063d547741f14610dc757610172565b8063731133e914610b225780638456cb5914610c115780639010d07c14610c1b57806391d1485414610c93578063a217fddf14610cf9578063a22cb46514610d1757610172565b80632f2ff15d116101305780632f2ff15d1461074d57806336568abe1461079b5780633f4ba83a146107e95780634e1273f4146107f35780635c975abb146109945780636b20c454146109b657610172565b8062fdd58e1461017757806301ffc9a7146101d95780630e89341c1461023e5780631f7fdffa146102e5578063248a9ca3146104e85780632eb2c2d61461052a575b600080fd5b6101c36004803603604081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611016565b6040518082815260200191505060405180910390f35b610224600480360360208110156101ef57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110f6565b604051808215151515815260200191505060405180910390f35b61026a6004803603602081101561025457600080fd5b810190808035906020019092919050505061115e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102aa57808201518184015260208101905061028f565b50505050905090810190601f1680156102d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104e6600480360360808110156102fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561033857600080fd5b82018360208201111561034a57600080fd5b8035906020019184602083028401116401000000008311171561036c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103cc57600080fd5b8201836020820111156103de57600080fd5b8035906020019184602083028401116401000000008311171561040057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561046057600080fd5b82018360208201111561047257600080fd5b8035906020019184600183028401116401000000008311171561049457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611202565b005b610514600480360360208110156104fe57600080fd5b81019080803590602001909291905050506112af565b6040518082815260200191505060405180910390f35b61074b600480360360a081101561054057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111640100000000831117156105d157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561063157600080fd5b82018360208201111561064357600080fd5b8035906020019184602083028401116401000000008311171561066557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460018302840111640100000000831117156106f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112ce565b005b6107996004803603604081101561076357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175c565b005b6107e7600480360360408110156107b157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e5565b005b6107f161187e565b005b61093d6004803603604081101561080957600080fd5b810190808035906020019064010000000081111561082657600080fd5b82018360208201111561083857600080fd5b8035906020019184602083028401116401000000008311171561085a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108ba57600080fd5b8201836020820111156108cc57600080fd5b803590602001918460208302840111640100000000831117156108ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611923565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610980578082015181840152602081019050610965565b505050509050019250505060405180910390f35b61099c611b18565b604051808215151515815260200191505060405180910390f35b610b20600480360360608110156109cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a0957600080fd5b820183602082011115610a1b57600080fd5b80359060200191846020830284011164010000000083111715610a3d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a9d57600080fd5b820183602082011115610aaf57600080fd5b80359060200191846020830284011164010000000083111715610ad157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611b2f565b005b610c0f60048036036080811015610b3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610b8957600080fd5b820183602082011115610b9b57600080fd5b80359060200191846001830284011164010000000083111715610bbd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611be2565b005b610c19611c8f565b005b610c5160048036036040811015610c3157600080fd5b810190808035906020019092919080359060200190929190505050611d34565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cdf60048036036040811015610ca957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d65565b604051808215151515815260200191505060405180910390f35b610d01611d96565b6040518082815260200191505060405180910390f35b610d6560048036036040811015610d2d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d9d565b005b610d9360048036036020811015610d7d57600080fd5b8101908080359060200190929190505050611f38565b6040518082815260200191505060405180910390f35b610db1611f5e565b6040518082815260200191505060405180910390f35b610e1360048036036040811015610ddd57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f97565b005b610e1d612020565b6040518082815260200191505060405180910390f35b610e9560048036036040811015610e4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612059565b604051808215151515815260200191505060405180910390f35b610fbc600480360360a0811015610ec557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610f3657600080fd5b820183602082011115610f4857600080fd5b80359060200191846001830284011164010000000083111715610f6a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506120ed565b005b61101460048036036060811015610fd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612462565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806140b1602b913960400191505060405180910390fd5b6002600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111f65780601f106111cb576101008083540402835291602001916111f6565b820191906000526020600020905b8154815290600101906020018083116111d957829003601f168201915b50505050509050919050565b61124860405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611243612545565b611d65565b61129d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142306038913960400191505060405180910390fd5b6112a98484848461254d565b50505050565b6000806000838152602001908152602001600020600201549050919050565b8151835114611328576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143586028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806141b66025913960400191505060405180910390fd5b6113b6612545565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113fc57506113fb856113f6612545565b612059565b5b611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141db6032913960400191505060405180910390fd5b600061145b612545565b905061146b818787878787612872565b60008090505b845181101561163f57600085828151811061148857fe5b6020026020010151905060008583815181106114a057fe5b60200260200101519050611527816040518060600160405280602a8152602001614268602a91396002600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115de816002600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b6002600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806001019050611471565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116ef5780820151818401526020810190506116d4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611731578082015181840152602081019050611716565b5050505090500194505050505060405180910390a46117548187878787876129d0565b505050505050565b6117826000808481526020019081526020016000206002015461177d612545565b611d65565b6117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614082602f913960400191505060405180910390fd5b6117e18282612d8b565b5050565b6117ed612545565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806143a1602f913960400191505060405180910390fd5b61187a8282612e1e565b5050565b6118c460405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206118bf612545565b611d65565b611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180614292603b913960400191505060405180910390fd5b611921612eb1565b565b6060815183511461197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061432f6029913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561199957600080fd5b506040519080825280602002602001820160405280156119c85781602001602082028036833780820191505090505b50905060008090505b8451811015611b0d57600073ffffffffffffffffffffffffffffffffffffffff168582815181106119fe57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611a73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806140dc6031913960400191505060405180910390fd5b60026000858381518110611a8357fe5b602002602001015181526020019081526020016000206000868381518110611aa757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110611af657fe5b6020026020010181815250508060010190506119d1565b508091505092915050565b6000600560009054906101000a900460ff16905090565b611b37612545565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b7d5750611b7c83611b77612545565b612059565b5b611bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061415d6029913960400191505060405180910390fd5b611bdd838383612fba565b505050565b611c2860405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611c23612545565b611d65565b611c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142306038913960400191505060405180910390fd5b611c89848484846132f8565b50505050565b611cd560405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611cd0612545565b611d65565b611d2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806142cd6039913960400191505060405180910390fd5b611d326134fb565b565b6000611d5d8260008086815260200190815260200160002060000161360590919063ffffffff16565b905092915050565b6000611d8e8260008086815260200190815260200160002060000161361f90919063ffffffff16565b905092915050565b6000801b81565b8173ffffffffffffffffffffffffffffffffffffffff16611dbc612545565b73ffffffffffffffffffffffffffffffffffffffff161415611e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143066029913960400191505060405180910390fd5b8060036000611e36612545565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611ee3612545565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000611f5760008084815260200190815260200160002060000161364f565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611fbd60008084815260200190815260200160002060020154611fb8612545565b611d65565b612012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806141866030913960400191505060405180910390fd5b61201c8282612e1e565b5050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612173576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806141b66025913960400191505060405180910390fd5b61217b612545565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806121c157506121c0856121bb612545565b612059565b5b612216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061415d6029913960400191505060405180910390fd5b6000612220612545565b905061224081878761223188613664565b61223a88613664565b87612872565b6122bd836040518060600160405280602a8152602001614268602a91396002600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612374836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a461245a8187878787876136d4565b505050505050565b61246a612545565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806124b057506124af836124aa612545565b612059565b5b612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061415d6029913960400191505060405180910390fd5b612510838383613a0d565b505050565b600061253d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613c29565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143806021913960400191505060405180910390fd5b815183511461262d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143586028913960400191505060405180910390fd5b6000612637612545565b905061264881600087878787612872565b60008090505b8451811015612754576126e06002600087848151811061266a57fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548583815181106126ca57fe5b602002602001015161294890919063ffffffff16565b600260008784815181106126f057fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808060010191505061264e565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156128055780820151818401526020810190506127ea565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561284757808201518184015260208101905061282c565b5050505090500194505050505060405180910390a461286b816000878787876129d0565b5050505050565b612880868686868686613c99565b505050505050565b6000838311158290612935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128fa5780820151818401526020810190506128df565b50505050905090810190601f1680156129275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156129c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6129ef8473ffffffffffffffffffffffffffffffffffffffff16613d0d565b15612d83578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612ad3578082015181840152602081019050612ab8565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612b15578082015181840152602081019050612afa565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612b54578082015181840152602081019050612b39565b50505050905090810190601f168015612b815780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612ba657600080fd5b505af1925050508015612bda57506040513d6020811015612bc657600080fd5b810190808051906020019092919050505060015b612ce457612be6613f4d565b80612bf15750612c93565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c58578082015181840152602081019050612c3d565b50505050905090810190601f168015612c855780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806140046034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061405a6028913960400191505060405180910390fd5b505b505050505050565b612db28160008085815260200190815260200160002060000161251590919063ffffffff16565b15612e1a57612dbf612545565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612e4581600080858152602001908152602001600020600001613d5890919063ffffffff16565b15612ead57612e52612545565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600560009054906101000a900460ff16612f33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f77612545565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061420d6023913960400191505060405180910390fd5b805182511461309a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143586028913960400191505060405180910390fd5b60006130a4612545565b90506130c481856000868660405180602001604052806000815250612872565b60008090505b83518110156131ea576131768382815181106130e257fe5b602002602001015160405180606001604052806024815260200161410d602491396002600088868151811061311357fe5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600086848151811061318657fe5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506130ca565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561329b578082015181840152602081019050613280565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156132dd5780820151818401526020810190506132c2565b5050505090500194505050505060405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561337e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143806021913960400191505060405180910390fd5b6000613388612545565b90506133a98160008761339a88613664565b6133a388613664565b87612872565b61340c836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294890919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46134f4816000878787876136d4565b5050505050565b600560009054906101000a900460ff161561357e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586135c2612545565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006136148360000183613d88565b60001c905092915050565b6000613647836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613e0b565b905092915050565b600061365d82600001613e2e565b9050919050565b606080600167ffffffffffffffff8111801561367f57600080fd5b506040519080825280602002602001820160405280156136ae5781602001602082028036833780820191505090505b50905082816000815181106136bf57fe5b60200260200101818152505080915050919050565b6136f38473ffffffffffffffffffffffffffffffffffffffff16613d0d565b15613a05578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156137d85780820151818401526020810190506137bd565b50505050905090810190601f1680156138055780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561382857600080fd5b505af192505050801561385c57506040513d602081101561384857600080fd5b810190808051906020019092919050505060015b61396657613868613f4d565b806138735750613915565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138da5780820151818401526020810190506138bf565b50505050905090810190601f1680156139075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806140046034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061405a6028913960400191505060405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061420d6023913960400191505060405180910390fd5b6000613a9d612545565b9050613acd81856000613aaf87613664565b613ab887613664565b60405180602001604052806000815250612872565b613b4a8260405180606001604052806024815260200161410d602491396002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128889092919063ffffffff16565b6002600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6000613c358383613e0b565b613c8e578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613c93565b600090505b92915050565b613ca7868686868686613e3f565b613caf611b18565b15613d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614131602c913960400191505060405180910390fd5b505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613d4f57506000801b8214155b92505050919050565b6000613d80836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613e47565b905092915050565b600081836000018054905011613de9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806140386022913960400191505060405180910390fd5b826000018281548110613df857fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b505050505050565b60008083600101600084815260200190815260200160002054905060008114613f235760006001820390506000600186600001805490500390506000866000018281548110613e9257fe5b9060005260206000200154905080876000018481548110613eaf57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613ee757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613f29565b60009150505b92915050565b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015613f5d57614000565b60046000803e613f6e600051613f40565b6308c379a08114613f7f5750614000565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715613fab57505050614000565b808201805167ffffffffffffffff811115613fca575050505050614000565b8060208301013d8501811115613fe557505050505050614000565b613fee82613f2f565b60208401016040528296505050505050505b9056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135355061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212206b062650d8fec1029803871e723264961d0ec87d557f914a314f0f556a99757b64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Receiver.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Receiver.json new file mode 100644 index 0000000..a700a68 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1155Receiver.json @@ -0,0 +1,506 @@ +{ + "fileName": "ERC1155Receiver.sol", + "contractName": "ERC1155Receiver", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IERC1155Receiver.sol\";\nimport \"../../introspection/ERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\nabstract contract ERC1155Receiver is ERC165, IERC1155Receiver {\n constructor() public {\n _registerInterface(\n ERC1155Receiver(0).onERC1155Received.selector ^\n ERC1155Receiver(0).onERC1155BatchReceived.selector\n );\n }\n}\n", + "sourcePath": "contracts/token/ERC1155/ERC1155Receiver.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/ERC1155Receiver.sol", + "exportedSymbols": { + "ERC1155Receiver": [ + 8509 + ] + }, + "id": 8510, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8483, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:80" + }, + { + "absolutePath": "contracts/token/ERC1155/IERC1155Receiver.sol", + "file": "./IERC1155Receiver.sol", + "id": 8484, + "nodeType": "ImportDirective", + "scope": 8510, + "sourceUnit": 8688, + "src": "58:32:80", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 8485, + "nodeType": "ImportDirective", + "scope": 8510, + "sourceUnit": 1803, + "src": "91:40:80", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8487, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1802, + "src": "210:6:80", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$1802", + "typeString": "contract ERC165" + } + }, + "id": 8488, + "nodeType": "InheritanceSpecifier", + "src": "210:6:80" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8489, + "name": "IERC1155Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8687, + "src": "218:16:80", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$8687", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 8490, + "nodeType": "InheritanceSpecifier", + "src": "218:16:80" + } + ], + "contractDependencies": [ + 1802, + 2048, + 8687 + ], + "contractKind": "contract", + "documentation": { + "id": 8486, + "nodeType": "StructuredDocumentation", + "src": "133:39:80", + "text": " @dev _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 8509, + "linearizedBaseContracts": [ + 8509, + 8687, + 1802, + 2048 + ], + "name": "ERC1155Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8507, + "nodeType": "Block", + "src": "262:169:80", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 8504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "320:1:80", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8494, + "name": "ERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "304:15:80", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155Receiver_$8509_$", + "typeString": "type(contract ERC1155Receiver)" + } + }, + "id": 8496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "304:18:80", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Receiver_$8509", + "typeString": "contract ERC1155Receiver" + } + }, + "id": 8497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 8668, + "src": "304:36:80", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 8498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "304:45:80", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "380:1:80", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8499, + "name": "ERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "364:15:80", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155Receiver_$8509_$", + "typeString": "type(contract ERC1155Receiver)" + } + }, + "id": 8501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:18:80", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Receiver_$8509", + "typeString": "contract ERC1155Receiver" + } + }, + "id": 8502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 8686, + "src": "364:41:80", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 8503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "364:50:80", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "304:110:80", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 8493, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "272:18:80", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 8505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "272:152:80", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8506, + "nodeType": "ExpressionStatement", + "src": "272:152:80" + } + ] + }, + "documentation": null, + "id": 8508, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8491, + "nodeType": "ParameterList", + "parameters": [], + "src": "252:2:80" + }, + "returnParameters": { + "id": 8492, + "nodeType": "ParameterList", + "parameters": [], + "src": "262:0:80" + }, + "scope": 8509, + "src": "241:190:80", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 8510, + "src": "173:260:80" + } + ], + "src": "33:401:80" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC165.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC165.json new file mode 100644 index 0000000..8885235 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC165.json @@ -0,0 +1,723 @@ +{ + "fileName": "ERC165.sol", + "contractName": "ERC165", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\ncontract ERC165 is IERC165 {\n /*\n * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n */\n bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n /**\n * @dev Mapping of interface ids to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n constructor () internal {\n // Derived contracts need only register support for their own interfaces,\n // we register support for ERC165 itself here\n _registerInterface(_INTERFACE_ID_ERC165);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n *\n * Time complexity O(1), guaranteed to always use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) public view override returns (bool) {\n return _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Registers the contract as an implementer of the interface defined by\n * `interfaceId`. Support of the actual ERC165 interface is automatic and\n * registering its interface id is not required.\n *\n * See {IERC165-supportsInterface}.\n *\n * Requirements:\n *\n * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n */\n function _registerInterface(bytes4 interfaceId) internal virtual {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n", + "sourcePath": "contracts/introspection/ERC165.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/introspection/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 1802 + ] + }, + "id": 1803, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1747, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:10" + }, + { + "absolutePath": "contracts/introspection/IERC165.sol", + "file": "./IERC165.sol", + "id": 1748, + "nodeType": "ImportDirective", + "scope": 1803, + "sourceUnit": 2049, + "src": "58:23:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1750, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2048, + "src": "274:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$2048", + "typeString": "contract IERC165" + } + }, + "id": 1751, + "nodeType": "InheritanceSpecifier", + "src": "274:7:10" + } + ], + "contractDependencies": [ + 2048 + ], + "contractKind": "contract", + "documentation": { + "id": 1749, + "nodeType": "StructuredDocumentation", + "src": "83:171:10", + "text": " @dev Implementation of the {IERC165} interface.\n Contracts may inherit from this and call {_registerInterface} to declare\n their support of an interface." + }, + "fullyImplemented": true, + "id": 1802, + "linearizedBaseContracts": [ + 1802, + 2048 + ], + "name": "ERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1754, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1802, + "src": "371:57:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1752, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "371:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "418:10:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "constant": false, + "documentation": { + "id": 1755, + "nodeType": "StructuredDocumentation", + "src": "435:82:10", + "text": " @dev Mapping of interface ids to whether or not it's supported." + }, + "id": 1759, + "mutability": "mutable", + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1802, + "src": "522:52:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 1758, + "keyType": { + "id": 1756, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "530:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "522:23:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 1757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "540:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1766, + "nodeType": "Block", + "src": "605:193:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1763, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "770:20:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1762, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "751:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 1764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "751:40:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1765, + "nodeType": "ExpressionStatement", + "src": "751:40:10" + } + ] + }, + "documentation": null, + "id": 1767, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1760, + "nodeType": "ParameterList", + "parameters": [], + "src": "593:2:10" + }, + "returnParameters": { + "id": 1761, + "nodeType": "ParameterList", + "parameters": [], + "src": "605:0:10" + }, + "scope": 1802, + "src": "581:217:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 2047 + ], + "body": { + "id": 1780, + "nodeType": "Block", + "src": "1031:57:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1776, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "1048:20:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 1778, + "indexExpression": { + "argumentTypes": null, + "id": 1777, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1770, + "src": "1069:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1048:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1775, + "id": 1779, + "nodeType": "Return", + "src": "1041:40:10" + } + ] + }, + "documentation": { + "id": 1768, + "nodeType": "StructuredDocumentation", + "src": "804:139:10", + "text": " @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 1781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1772, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1007:8:10" + }, + "parameters": { + "id": 1771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1770, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1781, + "src": "975:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1769, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "975:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "974:20:10" + }, + "returnParameters": { + "id": 1775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1774, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1781, + "src": "1025:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1773, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1025:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1024:6:10" + }, + "scope": 1802, + "src": "948:140:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1800, + "nodeType": "Block", + "src": "1547:133:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1788, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1784, + "src": "1565:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1580:10:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1565:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433136353a20696e76616c696420696e74657266616365206964", + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1592:30:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee", + "typeString": "literal_string \"ERC165: invalid interface id\"" + }, + "value": "ERC165: invalid interface id" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee", + "typeString": "literal_string \"ERC165: invalid interface id\"" + } + ], + "id": 1787, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1557:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:66:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1793, + "nodeType": "ExpressionStatement", + "src": "1557:66:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1794, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "1633:20:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 1796, + "indexExpression": { + "argumentTypes": null, + "id": 1795, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1784, + "src": "1654:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1633:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1669:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1633:40:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1799, + "nodeType": "ExpressionStatement", + "src": "1633:40:10" + } + ] + }, + "documentation": { + "id": 1782, + "nodeType": "StructuredDocumentation", + "src": "1094:383:10", + "text": " @dev Registers the contract as an implementer of the interface defined by\n `interfaceId`. Support of the actual ERC165 interface is automatic and\n registering its interface id is not required.\n See {IERC165-supportsInterface}.\n Requirements:\n - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`)." + }, + "id": 1801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1784, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1801, + "src": "1510:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1783, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1510:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1509:20:10" + }, + "returnParameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [], + "src": "1547:0:10" + }, + "scope": 1802, + "src": "1482:198:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1803, + "src": "255:1427:10" + } + ], + "src": "33:1650:10" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC165Checker.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC165Checker.json new file mode 100644 index 0000000..a788868 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC165Checker.json @@ -0,0 +1,2323 @@ +{ + "fileName": "ERC165Checker.sol", + "contractName": "ERC165Checker", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\n/**\n * @dev Library used to query support of an interface declared via {IERC165}.\n *\n * Note that these functions return the actual result of the query: they do not\n * `revert` if an interface is not supported. It is up to the caller to decide\n * what to do in these cases.\n */\nlibrary ERC165Checker {\n // As per the EIP-165 spec, no interface should ever match 0xffffffff\n bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff;\n\n /*\n * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n */\n bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n /**\n * @dev Returns true if `account` supports the {IERC165} interface,\n */\n function supportsERC165(address account) internal view returns (bool) {\n // Any contract that implements ERC165 must explicitly indicate support of\n // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid\n return _supportsERC165Interface(account, _INTERFACE_ID_ERC165) &&\n !_supportsERC165Interface(account, _INTERFACE_ID_INVALID);\n }\n\n /**\n * @dev Returns true if `account` supports the interface defined by\n * `interfaceId`. Support for {IERC165} itself is queried automatically.\n *\n * See {IERC165-supportsInterface}.\n */\n function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) {\n // query support of both ERC165 as per the spec and support of _interfaceId\n return supportsERC165(account) &&\n _supportsERC165Interface(account, interfaceId);\n }\n\n /**\n * @dev Returns true if `account` supports all the interfaces defined in\n * `interfaceIds`. Support for {IERC165} itself is queried automatically.\n *\n * Batch-querying can lead to gas savings by skipping repeated checks for\n * {IERC165} support.\n *\n * See {IERC165-supportsInterface}.\n */\n function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) {\n // query support of ERC165 itself\n if (!supportsERC165(account)) {\n return false;\n }\n\n // query support of each interface in _interfaceIds\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n if (!_supportsERC165Interface(account, interfaceIds[i])) {\n return false;\n }\n }\n\n // all interfaces supported\n return true;\n }\n\n /**\n * @notice Query if a contract implements an interface, does not check ERC165 support\n * @param account The address of the contract to query for support of an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @return true if the contract at account indicates support of the interface with\n * identifier interfaceId, false otherwise\n * @dev Assumes that account contains a contract that supports ERC165, otherwise\n * the behavior of this method is undefined. This precondition can be checked\n * with {supportsERC165}.\n * Interface identification is specified in ERC-165.\n */\n function _supportsERC165Interface(address account, bytes4 interfaceId) private view returns (bool) {\n // success determines whether the staticcall succeeded and result determines\n // whether the contract at account indicates support of _interfaceId\n (bool success, bool result) = _callERC165SupportsInterface(account, interfaceId);\n\n return (success && result);\n }\n\n /**\n * @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw\n * @param account The address of the contract to query for support of an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @return success true if the STATICCALL succeeded, false otherwise\n * @return result true if the STATICCALL succeeded and the contract at account\n * indicates support of the interface with identifier interfaceId, false otherwise\n */\n function _callERC165SupportsInterface(address account, bytes4 interfaceId)\n private\n view\n returns (bool, bool)\n {\n bytes memory encodedParams = abi.encodeWithSelector(_INTERFACE_ID_ERC165, interfaceId);\n (bool success, bytes memory result) = account.staticcall{ gas: 30000 }(encodedParams);\n if (result.length < 32) return (false, false);\n return (success, abi.decode(result, (bool)));\n }\n}\n", + "sourcePath": "contracts/introspection/ERC165Checker.sol", + "sourceMap": "336:4192:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "336:4192:11:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/introspection/ERC165Checker.sol", + "exportedSymbols": { + "ERC165Checker": [ + 1974 + ] + }, + "id": 1975, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1804, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:11" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1805, + "nodeType": "StructuredDocumentation", + "src": "58:277:11", + "text": " @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases." + }, + "fullyImplemented": true, + "id": 1974, + "linearizedBaseContracts": [ + 1974 + ], + "name": "ERC165Checker", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1808, + "mutability": "constant", + "name": "_INTERFACE_ID_INVALID", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1974, + "src": "438:58:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1806, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "438:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "486:10:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1811, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1974, + "src": "586:57:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1809, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "586:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "633:10:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "body": { + "id": 1830, + "nodeType": "Block", + "src": "808:324:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1820, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "1022:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1821, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1811, + "src": "1031:20:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1819, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1922, + "src": "997:24:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "997:55:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 1827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1068:57:11", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1824, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1814, + "src": "1094:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1825, + "name": "_INTERFACE_ID_INVALID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1808, + "src": "1103:21:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1823, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1922, + "src": "1069:24:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1069:56:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "997:128:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1818, + "id": 1829, + "nodeType": "Return", + "src": "990:135:11" + } + ] + }, + "documentation": { + "id": 1812, + "nodeType": "StructuredDocumentation", + "src": "650:83:11", + "text": " @dev Returns true if `account` supports the {IERC165} interface," + }, + "id": 1831, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsERC165", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1814, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1831, + "src": "762:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "762:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "761:17:11" + }, + "returnParameters": { + "id": 1818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1817, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1831, + "src": "802:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1816, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "802:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "801:6:11" + }, + "scope": 1974, + "src": "738:394:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1850, + "nodeType": "Block", + "src": "1443:193:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1842, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "1559:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1841, + "name": "supportsERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "1544:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1544:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1845, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "1608:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1846, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1836, + "src": "1617:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1844, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1922, + "src": "1583:24:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1583:46:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1544:85:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1840, + "id": 1849, + "nodeType": "Return", + "src": "1537:92:11" + } + ] + }, + "documentation": { + "id": 1832, + "nodeType": "StructuredDocumentation", + "src": "1138:207:11", + "text": " @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}." + }, + "id": 1851, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1834, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1851, + "src": "1377:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1377:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1836, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1851, + "src": "1394:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1835, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1394:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1376:37:11" + }, + "returnParameters": { + "id": 1840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1839, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1851, + "src": "1437:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1838, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1437:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1436:6:11" + }, + "scope": 1974, + "src": "1350:286:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1896, + "nodeType": "Block", + "src": "2078:429:11", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2134:24:11", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1863, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "2150:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1862, + "name": "supportsERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "2135:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2135:23:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1869, + "nodeType": "IfStatement", + "src": "2130:67:11", + "trueBody": { + "id": 1868, + "nodeType": "Block", + "src": "2160:37:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2181:5:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1861, + "id": 1867, + "nodeType": "Return", + "src": "2174:12:11" + } + ] + } + }, + { + "body": { + "id": 1892, + "nodeType": "Block", + "src": "2317:126:11", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2335:51:11", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1882, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "2361:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1883, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "2370:12:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 1885, + "indexExpression": { + "argumentTypes": null, + "id": 1884, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1871, + "src": "2383:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2370:15:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1881, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1922, + "src": "2336:24:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2336:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1891, + "nodeType": "IfStatement", + "src": "2331:102:11", + "trueBody": { + "id": 1890, + "nodeType": "Block", + "src": "2388:45:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2413:5:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1861, + "id": 1889, + "nodeType": "Return", + "src": "2406:12:11" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1874, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1871, + "src": "2287:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1875, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "2291:12:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2291:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2287:23:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1893, + "initializationExpression": { + "assignments": [ + 1871 + ], + "declarations": [ + { + "constant": false, + "id": 1871, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1893, + "src": "2272:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1870, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2272:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1873, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2284:1:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2272:13:11" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2312:3:11", + "subExpression": { + "argumentTypes": null, + "id": 1878, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1871, + "src": "2312:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1880, + "nodeType": "ExpressionStatement", + "src": "2312:3:11" + }, + "nodeType": "ForStatement", + "src": "2267:176:11" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2496:4:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1861, + "id": 1895, + "nodeType": "Return", + "src": "2489:11:11" + } + ] + }, + "documentation": { + "id": 1852, + "nodeType": "StructuredDocumentation", + "src": "1642:324:11", + "text": " @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}." + }, + "id": 1897, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsAllInterfaces", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1854, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1897, + "src": "2002:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1853, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2002:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1857, + "mutability": "mutable", + "name": "interfaceIds", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1897, + "src": "2019:28:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 1855, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2019:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 1856, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2019:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2001:47:11" + }, + "returnParameters": { + "id": 1861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1860, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1897, + "src": "2072:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1859, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2072:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2071:6:11" + }, + "scope": 1974, + "src": "1971:536:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1921, + "nodeType": "Block", + "src": "3269:296:11", + "statements": [ + { + "assignments": [ + 1908, + 1910 + ], + "declarations": [ + { + "constant": false, + "id": 1908, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1921, + "src": "3442:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1907, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3442:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1910, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1921, + "src": "3456:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1909, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3456:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1912, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1900, + "src": "3500:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1913, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1902, + "src": "3509:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1911, + "name": "_callERC165SupportsInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "3471:28:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool,bool)" + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3471:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", + "typeString": "tuple(bool,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3441:80:11" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1916, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1908, + "src": "3540:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 1917, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "3551:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3540:17:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1919, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3539:19:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1906, + "id": 1920, + "nodeType": "Return", + "src": "3532:26:11" + } + ] + }, + "documentation": { + "id": 1898, + "nodeType": "StructuredDocumentation", + "src": "2513:652:11", + "text": " @notice Query if a contract implements an interface, does not check ERC165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with {supportsERC165}.\n Interface identification is specified in ERC-165." + }, + "id": 1922, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsERC165Interface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1900, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1922, + "src": "3204:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3204:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1902, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1922, + "src": "3221:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1901, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3221:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3203:37:11" + }, + "returnParameters": { + "id": 1906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1905, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1922, + "src": "3263:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1904, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3263:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3262:6:11" + }, + "scope": 1974, + "src": "3170:395:11", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1972, + "nodeType": "Block", + "src": "4219:307:11", + "statements": [ + { + "assignments": [ + 1935 + ], + "declarations": [ + { + "constant": false, + "id": 1935, + "mutability": "mutable", + "name": "encodedParams", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1972, + "src": "4229:26:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1934, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4229:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1941, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1938, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1811, + "src": "4281:20:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 1939, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1927, + "src": "4303:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": null, + "id": 1936, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4258:3:11", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4258:22:11", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4258:57:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4229:86:11" + }, + { + "assignments": [ + 1943, + 1945 + ], + "declarations": [ + { + "constant": false, + "id": 1943, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1972, + "src": "4326:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1942, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4326:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1945, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1972, + "src": "4340:19:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1944, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4340:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1952, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1950, + "name": "encodedParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1935, + "src": "4396:13:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1946, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "4363:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4363:18:11", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "gas" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "hexValue": "3330303030", + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4388:5:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_30000_by_1", + "typeString": "int_const 30000" + }, + "value": "30000" + } + ], + "src": "4363:32:11", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4363:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4325:85:11" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1953, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "4424:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4424:13:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 1955, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4440:2:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "4424:18:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1961, + "nodeType": "IfStatement", + "src": "4420:45:11", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4452:5:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4459:5:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "id": 1959, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4451:14:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", + "typeString": "tuple(bool,bool)" + } + }, + "functionReturnParameters": 1933, + "id": 1960, + "nodeType": "Return", + "src": "4444:21:11" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1962, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "4483:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1965, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "4503:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4512:4:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 1966, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4512:4:11", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 1968, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4511:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "argumentTypes": null, + "id": 1963, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4492:3:11", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4492:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4492:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1970, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4482:37:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", + "typeString": "tuple(bool,bool)" + } + }, + "functionReturnParameters": 1933, + "id": 1971, + "nodeType": "Return", + "src": "4475:44:11" + } + ] + }, + "documentation": { + "id": 1923, + "nodeType": "StructuredDocumentation", + "src": "3571:506:11", + "text": " @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return success true if the STATICCALL succeeded, false otherwise\n @return result true if the STATICCALL succeeded and the contract at account\n indicates support of the interface with identifier interfaceId, false otherwise" + }, + "id": 1973, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callERC165SupportsInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1925, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1973, + "src": "4120:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4120:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1927, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1973, + "src": "4137:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1926, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4137:6:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4119:37:11" + }, + "returnParameters": { + "id": 1933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1930, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1973, + "src": "4203:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1929, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4203:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1932, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1973, + "src": "4209:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1931, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4209:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4202:12:11" + }, + "scope": 1974, + "src": "4082:444:11", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1975, + "src": "336:4192:11" + } + ], + "src": "33:4496:11" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207889834912bdfed2692ae41ac58b4b3336fdafcadd7674d71c8aafbc50c21d5d64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207889834912bdfed2692ae41ac58b4b3336fdafcadd7674d71c8aafbc50c21d5d64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC165CheckerMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC165CheckerMock.json new file mode 100644 index 0000000..41b1892 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC165CheckerMock.json @@ -0,0 +1,715 @@ +{ + "fileName": "ERC165CheckerMock.sol", + "contractName": "ERC165CheckerMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../introspection/ERC165Checker.sol\";\n\ncontract ERC165CheckerMock {\n using ERC165Checker for address;\n\n function supportsERC165(address account) public view returns (bool) {\n return account.supportsERC165();\n }\n\n function supportsInterface(address account, bytes4 interfaceId) public view returns (bool) {\n return account.supportsInterface(interfaceId);\n }\n\n function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) public view returns (bool) {\n return account.supportsAllInterfaces(interfaceIds);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC165CheckerMock.sol", + "sourceMap": "104:526:30:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "104:526:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;456:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;175:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;297:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;456:172;555:4;578:43;608:12;578:7;:29;;;;:43;;;;:::i;:::-;571:50;;456:172;;;;:::o;175:116::-;237:4;260:24;:7;:22;;;:24::i;:::-;253:31;;175:116;;;:::o;297:153::-;382:4;405:38;431:11;405:7;:25;;;;:38;;;;:::i;:::-;398:45;;297:153;;;;:::o;1971:536:12:-;2072:4;2135:23;2150:7;2135:14;:23::i;:::-;2130:67;;2181:5;2174:12;;;;2130:67;2272:9;2284:1;2272:13;;2267:176;2291:12;:19;2287:1;:23;2267:176;;;2336:50;2361:7;2370:12;2383:1;2370:15;;;;;;;;;;;;;;2336:24;:50::i;:::-;2331:102;;2413:5;2406:12;;;;;2331:102;2312:3;;;;;;;2267:176;;;;2496:4;2489:11;;1971:536;;;;;:::o;738:394::-;802:4;997:55;1022:7;633:10;1031:20;;997:24;:55::i;:::-;:128;;;;;1069:56;1094:7;486:10;1103:21;;1069:24;:56::i;:::-;1068:57;997:128;990:135;;738:394;;;:::o;1350:286::-;1437:4;1544:23;1559:7;1544:14;:23::i;:::-;:85;;;;;1583:46;1608:7;1617:11;1583:24;:46::i;:::-;1544:85;1537:92;;1350:286;;;;:::o;3170:395::-;3263:4;3442:12;3456:11;3471:50;3500:7;3509:11;3471:28;:50::i;:::-;3441:80;;;;3540:7;:17;;;;;3551:6;3540:17;3532:26;;;;3170:395;;;;:::o;4082:444::-;4203:4;4209;4229:26;633:10;4281:20;;4303:11;4258:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:86;;4326:12;4340:19;4363:7;:18;;4388:5;4396:13;4363:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4325:85;;;;4440:2;4424:6;:13;:18;4420:45;;;4452:5;4459;4444:21;;;;;;;;;4420:45;4483:7;4503:6;4492:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:44;;;;;;;4082:444;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "interfaceIds", + "type": "bytes4[]" + } + ], + "name": "supportsAllInterfaces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "supportsERC165", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC165CheckerMock.sol", + "exportedSymbols": { + "ERC165CheckerMock": [ + 3488 + ] + }, + "id": 3489, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3440, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:30" + }, + { + "absolutePath": "contracts/introspection/ERC165Checker.sol", + "file": "../introspection/ERC165Checker.sol", + "id": 3441, + "nodeType": "ImportDirective", + "scope": 3489, + "sourceUnit": 2363, + "src": "58:44:30", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3488, + "linearizedBaseContracts": [ + 3488 + ], + "name": "ERC165CheckerMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3444, + "libraryName": { + "contractScope": null, + "id": 3442, + "name": "ERC165Checker", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2362, + "src": "143:13:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165Checker_$2362", + "typeString": "library ERC165Checker" + } + }, + "nodeType": "UsingForDirective", + "src": "137:32:30", + "typeName": { + "id": 3443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "161:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "body": { + "id": 3455, + "nodeType": "Block", + "src": "243:48:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3451, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3446, + "src": "260:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "supportsERC165", + "nodeType": "MemberAccess", + "referencedDeclaration": 2219, + "src": "260:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "260:24:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3450, + "id": 3454, + "nodeType": "Return", + "src": "253:31:30" + } + ] + }, + "documentation": null, + "functionSelector": "c398a925", + "id": 3456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsERC165", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3446, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3456, + "src": "199:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "199:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "198:17:30" + }, + "returnParameters": { + "id": 3450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3449, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3456, + "src": "237:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "237:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "236:6:30" + }, + "scope": 3488, + "src": "175:116:30", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3470, + "nodeType": "Block", + "src": "388:62:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3467, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3460, + "src": "431:11:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": null, + "id": 3465, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3458, + "src": "405:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 2239, + "src": "405:25:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "405:38:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3464, + "id": 3469, + "nodeType": "Return", + "src": "398:45:30" + } + ] + }, + "documentation": null, + "functionSelector": "d9057007", + "id": 3471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3458, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3471, + "src": "324:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "324:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3460, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3471, + "src": "341:18:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3459, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "341:6:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "323:37:30" + }, + "returnParameters": { + "id": 3464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3463, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3471, + "src": "382:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "382:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "381:6:30" + }, + "scope": 3488, + "src": "297:153:30", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3486, + "nodeType": "Block", + "src": "561:67:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3483, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3476, + "src": "608:12:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3481, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3473, + "src": "578:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "supportsAllInterfaces", + "nodeType": "MemberAccess", + "referencedDeclaration": 2285, + "src": "578:29:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address,bytes4[] memory) view returns (bool)" + } + }, + "id": 3484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "578:43:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3480, + "id": 3485, + "nodeType": "Return", + "src": "571:50:30" + } + ] + }, + "documentation": null, + "functionSelector": "4b9dd904", + "id": 3487, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsAllInterfaces", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3473, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3487, + "src": "487:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3472, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "487:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3476, + "mutability": "mutable", + "name": "interfaceIds", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3487, + "src": "504:28:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 3474, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "504:6:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3475, + "length": null, + "nodeType": "ArrayTypeName", + "src": "504:8:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "486:47:30" + }, + "returnParameters": { + "id": 3480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3479, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3487, + "src": "555:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3478, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "555:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "554:6:30" + }, + "scope": 3488, + "src": "456:172:30", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3489, + "src": "104:526:30" + } + ], + "src": "33:598:30" + }, + "bytecode": "0x608060405234801561001057600080fd5b5061058d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634b9dd90414610046578063c398a92514610136578063d905700714610192575b600080fd5b61011c6004803603604081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561009957600080fd5b8201836020820111156100ab57600080fd5b803590602001918460208302840111640100000000831117156100cd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610217565b604051808215151515815260200191505060405180910390f35b6101786004803603602081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061024a565b604051808215151515815260200191505060405180910390f35b6101fd600480360360408110156101a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610272565b604051808215151515815260200191505060405180910390f35b6000610242828473ffffffffffffffffffffffffffffffffffffffff166102a590919063ffffffff16565b905092915050565b600061026b8273ffffffffffffffffffffffffffffffffffffffff16610310565b9050919050565b600061029d828473ffffffffffffffffffffffffffffffffffffffff1661034490919063ffffffff16565b905092915050565b60006102b083610310565b6102bd576000905061030a565b60008090505b8251811015610304576102e9848483815181106102dc57fe5b6020026020010151610369565b6102f757600091505061030a565b80806001019150506102c3565b50600190505b92915050565b6000610323826301ffc9a760e01b610369565b801561033d575061033b8263ffffffff60e01b610369565b155b9050919050565b600061034f83610310565b801561036157506103608383610369565b5b905092915050565b60008060006103788585610390565b915091508180156103865750805b9250505092915050565b60008060606301ffc9a760e01b8460405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608673ffffffffffffffffffffffffffffffffffffffff16617530846040518082805190602001908083835b6020831061049d578051825260208201915060208101905060208303925061047a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d80600081146104fe576040519150601f19603f3d011682016040523d82523d6000602084013e610503565b606091505b50915091506020815110156105215760008094509450505050610550565b8181806020019051602081101561053757600080fd5b8101908080519060200190929190505050945094505050505b925092905056fea2646970667358221220ff996e1a6c8bb06efbcedf22f19430e193c26be856c1cae2540505237850cda664736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634b9dd90414610046578063c398a92514610136578063d905700714610192575b600080fd5b61011c6004803603604081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561009957600080fd5b8201836020820111156100ab57600080fd5b803590602001918460208302840111640100000000831117156100cd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610217565b604051808215151515815260200191505060405180910390f35b6101786004803603602081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061024a565b604051808215151515815260200191505060405180910390f35b6101fd600480360360408110156101a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610272565b604051808215151515815260200191505060405180910390f35b6000610242828473ffffffffffffffffffffffffffffffffffffffff166102a590919063ffffffff16565b905092915050565b600061026b8273ffffffffffffffffffffffffffffffffffffffff16610310565b9050919050565b600061029d828473ffffffffffffffffffffffffffffffffffffffff1661034490919063ffffffff16565b905092915050565b60006102b083610310565b6102bd576000905061030a565b60008090505b8251811015610304576102e9848483815181106102dc57fe5b6020026020010151610369565b6102f757600091505061030a565b80806001019150506102c3565b50600190505b92915050565b6000610323826301ffc9a760e01b610369565b801561033d575061033b8263ffffffff60e01b610369565b155b9050919050565b600061034f83610310565b801561036157506103608383610369565b5b905092915050565b60008060006103788585610390565b915091508180156103865750805b9250505092915050565b60008060606301ffc9a760e01b8460405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001915050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608673ffffffffffffffffffffffffffffffffffffffff16617530846040518082805190602001908083835b6020831061049d578051825260208201915060208101905060208303925061047a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d80600081146104fe576040519150601f19603f3d011682016040523d82523d6000602084013e610503565b606091505b50915091506020815110156105215760008094509450505050610550565b8181806020019051602081101561053757600080fd5b8101908080519060200190929190505050945094505050505b925092905056fea2646970667358221220ff996e1a6c8bb06efbcedf22f19430e193c26be856c1cae2540505237850cda664736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC165InterfacesSupported.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC165InterfacesSupported.json new file mode 100644 index 0000000..04b022d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC165InterfacesSupported.json @@ -0,0 +1,1116 @@ +{ + "fileName": "ERC165InterfacesSupported.sol", + "contractName": "ERC165InterfacesSupported", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * https://eips.ethereum.org/EIPS/eip-214#specification\n * From the specification:\n * > Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead\n * throw an exception.\n * > These operations include [...], LOG0, LOG1, LOG2, [...]\n *\n * therefore, because this contract is staticcall'd we need to not emit events (which is how solidity-coverage works)\n * solidity-coverage ignores the /mocks folder, so we duplicate its implementation here to avoid instrumenting it\n */\ncontract SupportsInterfaceWithLookupMock is IERC165 {\n /*\n * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n */\n bytes4 public constant INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n /**\n * @dev A mapping of interface id to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev A contract implementing SupportsInterfaceWithLookup\n * implement ERC165 itself.\n */\n constructor () public {\n _registerInterface(INTERFACE_ID_ERC165);\n }\n\n /**\n * @dev Implement supportsInterface(bytes4) using a lookup table.\n */\n function supportsInterface(bytes4 interfaceId) public view override returns (bool) {\n return _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Private method for registering an interface.\n */\n function _registerInterface(bytes4 interfaceId) internal {\n require(interfaceId != 0xffffffff, \"ERC165InterfacesSupported: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n\ncontract ERC165InterfacesSupported is SupportsInterfaceWithLookupMock {\n constructor (bytes4[] memory interfaceIds) public {\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n _registerInterface(interfaceIds[i]);\n }\n }\n}\n", + "sourcePath": "contracts/mocks/ERC165/ERC165InterfacesSupported.sol", + "sourceMap": "1693:254:28:-:0;;;1769:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1123:39;815:10;1142:19;;1123:18;;;:39;;:::i;:::-;1834:9;1846:1;1834:13;;1829:110;1853:12;:19;1849:1;:23;1829:110;;;1893:35;1912:12;1925:1;1912:15;;;;;;;;;;;;;;1893:18;;;:35;;:::i;:::-;1874:3;;;;;;;1829:110;;;;1769:176;1693:254;;1480:209;1570:10;1555:25;;:11;:25;;;;;1547:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1678:4;1642:20;:33;1663:11;1642:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1480:209;:::o;1693:254::-;;;;;;;", + "deployedSourceMap": "1693:254:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1261:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;770:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1261:140;1338:4;1361:20;:33;1382:11;1361:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1354:40;;1261:140;;;:::o;770:55::-;815:10;770:55;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4[]", + "name": "interfaceIds", + "type": "bytes4[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "INTERFACE_ID_ERC165", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC165/ERC165InterfacesSupported.sol", + "exportedSymbols": { + "ERC165InterfacesSupported": [ + 3435 + ], + "SupportsInterfaceWithLookupMock": [ + 3406 + ] + }, + "id": 3436, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3350, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:28" + }, + { + "absolutePath": "contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 3351, + "nodeType": "ImportDirective", + "scope": 3436, + "sourceUnit": 2437, + "src": "58:41:28", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3353, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2436, + "src": "673:7:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$2436", + "typeString": "contract IERC165" + } + }, + "id": 3354, + "nodeType": "InheritanceSpecifier", + "src": "673:7:28" + } + ], + "contractDependencies": [ + 2436 + ], + "contractKind": "contract", + "documentation": { + "id": 3352, + "nodeType": "StructuredDocumentation", + "src": "101:527:28", + "text": " https://eips.ethereum.org/EIPS/eip-214#specification\n From the specification:\n > Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead\n throw an exception.\n > These operations include [...], LOG0, LOG1, LOG2, [...]\n therefore, because this contract is staticcall'd we need to not emit events (which is how solidity-coverage works)\n solidity-coverage ignores the /mocks folder, so we duplicate its implementation here to avoid instrumenting it" + }, + "fullyImplemented": true, + "id": 3406, + "linearizedBaseContracts": [ + 3406, + 2436 + ], + "name": "SupportsInterfaceWithLookupMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "34d7006c", + "id": 3357, + "mutability": "constant", + "name": "INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "770:55:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3355, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "770:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "815:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "public" + }, + { + "constant": false, + "documentation": { + "id": 3358, + "nodeType": "StructuredDocumentation", + "src": "832:83:28", + "text": " @dev A mapping of interface id to whether or not it's supported." + }, + "id": 3362, + "mutability": "mutable", + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "920:52:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 3361, + "keyType": { + "id": 3359, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "928:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "920:23:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 3360, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "938:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3370, + "nodeType": "Block", + "src": "1113:56:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3367, + "name": "INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3357, + "src": "1142:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3366, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "1123:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1123:39:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3369, + "nodeType": "ExpressionStatement", + "src": "1123:39:28" + } + ] + }, + "documentation": { + "id": 3363, + "nodeType": "StructuredDocumentation", + "src": "979:107:28", + "text": " @dev A contract implementing SupportsInterfaceWithLookup\n implement ERC165 itself." + }, + "id": 3371, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3364, + "nodeType": "ParameterList", + "parameters": [], + "src": "1103:2:28" + }, + "returnParameters": { + "id": 3365, + "nodeType": "ParameterList", + "parameters": [], + "src": "1113:0:28" + }, + "scope": 3406, + "src": "1091:78:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 2435 + ], + "body": { + "id": 3384, + "nodeType": "Block", + "src": "1344:57:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3380, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "1361:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3382, + "indexExpression": { + "argumentTypes": null, + "id": 3381, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3374, + "src": "1382:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1361:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3379, + "id": 3383, + "nodeType": "Return", + "src": "1354:40:28" + } + ] + }, + "documentation": { + "id": 3372, + "nodeType": "StructuredDocumentation", + "src": "1175:81:28", + "text": " @dev Implement supportsInterface(bytes4) using a lookup table." + }, + "functionSelector": "01ffc9a7", + "id": 3385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3376, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1320:8:28" + }, + "parameters": { + "id": 3375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3374, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3385, + "src": "1288:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3373, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1288:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1287:20:28" + }, + "returnParameters": { + "id": 3379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3378, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3385, + "src": "1338:4:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3377, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1338:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1337:6:28" + }, + "scope": 3406, + "src": "1261:140:28", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3404, + "nodeType": "Block", + "src": "1537:152:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3392, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3388, + "src": "1555:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 3393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1570:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1555:25:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313635496e7465726661636573537570706f727465643a20696e76616c696420696e74657266616365206964", + "id": 3395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:49:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab988774bd2736ab186ba4a48b62a1df6ee4d364b326b9ef43e1c20f8f72aade", + "typeString": "literal_string \"ERC165InterfacesSupported: invalid interface id\"" + }, + "value": "ERC165InterfacesSupported: invalid interface id" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ab988774bd2736ab186ba4a48b62a1df6ee4d364b326b9ef43e1c20f8f72aade", + "typeString": "literal_string \"ERC165InterfacesSupported: invalid interface id\"" + } + ], + "id": 3391, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1547:7:28", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1547:85:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3397, + "nodeType": "ExpressionStatement", + "src": "1547:85:28" + }, + { + "expression": { + "argumentTypes": null, + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3398, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "1642:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3400, + "indexExpression": { + "argumentTypes": null, + "id": 3399, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3388, + "src": "1663:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1642:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1678:4:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1642:40:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3403, + "nodeType": "ExpressionStatement", + "src": "1642:40:28" + } + ] + }, + "documentation": { + "id": 3386, + "nodeType": "StructuredDocumentation", + "src": "1407:68:28", + "text": " @dev Private method for registering an interface." + }, + "id": 3405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3388, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3405, + "src": "1508:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3387, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1508:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1507:20:28" + }, + "returnParameters": { + "id": 3390, + "nodeType": "ParameterList", + "parameters": [], + "src": "1537:0:28" + }, + "scope": 3406, + "src": "1480:209:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3436, + "src": "629:1062:28" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3407, + "name": "SupportsInterfaceWithLookupMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3406, + "src": "1731:31:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SupportsInterfaceWithLookupMock_$3406", + "typeString": "contract SupportsInterfaceWithLookupMock" + } + }, + "id": 3408, + "nodeType": "InheritanceSpecifier", + "src": "1731:31:28" + } + ], + "contractDependencies": [ + 2436, + 3406 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3435, + "linearizedBaseContracts": [ + 3435, + 3406, + 2436 + ], + "name": "ERC165InterfacesSupported", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3433, + "nodeType": "Block", + "src": "1819:126:28", + "statements": [ + { + "body": { + "id": 3431, + "nodeType": "Block", + "src": "1879:60:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3426, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3411, + "src": "1912:12:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3428, + "indexExpression": { + "argumentTypes": null, + "id": 3427, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1925:1:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1912:15:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3425, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "1893:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1893:35:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3430, + "nodeType": "ExpressionStatement", + "src": "1893:35:28" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3418, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1849:1:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3419, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3411, + "src": "1853:12:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1853:19:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1849:23:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3432, + "initializationExpression": { + "assignments": [ + 3415 + ], + "declarations": [ + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3432, + "src": "1834:9:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1834:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3417, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1846:1:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1834:13:28" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1874:3:28", + "subExpression": { + "argumentTypes": null, + "id": 3422, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1874:1:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3424, + "nodeType": "ExpressionStatement", + "src": "1874:3:28" + }, + "nodeType": "ForStatement", + "src": "1829:110:28" + } + ] + }, + "documentation": null, + "id": 3434, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3411, + "mutability": "mutable", + "name": "interfaceIds", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3434, + "src": "1782:28:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 3409, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1782:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3410, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1782:8:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1781:30:28" + }, + "returnParameters": { + "id": 3413, + "nodeType": "ParameterList", + "parameters": [], + "src": "1819:0:28" + }, + "scope": 3435, + "src": "1769:176:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3436, + "src": "1693:254:28" + } + ], + "src": "33:1915:28" + }, + "bytecode": "0x608060405234801561001057600080fd5b506040516103f23803806103f28339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b8382019150602082018581111561006957600080fd5b825186602082028301116401000000008211171561008657600080fd5b8083526020830192505050908051906020019060200280838360005b838110156100bd5780820151818401526020810190506100a2565b505050509050016040525050506100e06301ffc9a760e01b61012560201b60201c565b60008090505b815181101561011e576101118282815181106100fe57fe5b602002602001015161012560201b60201c565b80806001019150506100e6565b5050610210565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156101a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806103c3602f913960400191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6101a48061021f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806334d7006c146100a0575b600080fd5b6100866004803603602081101561005157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506100fc565b604051808215151515815260200191505060405180910390f35b6100a8610163565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6301ffc9a760e01b8156fea264697066735822122035775d1a749c75361aff994bc925fd76bcdc693fb03b3072e47e12359aaff54564736f6c63430006090033455243313635496e7465726661636573537570706f727465643a20696e76616c696420696e74657266616365206964", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806334d7006c146100a0575b600080fd5b6100866004803603602081101561005157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506100fc565b604051808215151515815260200191505060405180910390f35b6100a8610163565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6301ffc9a760e01b8156fea264697066735822122035775d1a749c75361aff994bc925fd76bcdc693fb03b3072e47e12359aaff54564736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC165Mock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC165Mock.json new file mode 100644 index 0000000..e073824 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC165Mock.json @@ -0,0 +1,250 @@ +{ + "fileName": "ERC165Mock.sol", + "contractName": "ERC165Mock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../introspection/ERC165.sol\";\n\ncontract ERC165Mock is ERC165 {\n function registerInterface(bytes4 interfaceId) public {\n _registerInterface(interfaceId);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC165Mock.sol", + "sourceMap": "97:140:31:-:0;;;;;;;;;;;;;751:40:11;418:10;770:20;;751:18;;;:40;;:::i;:::-;97:140:31;;1482:198:11;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;97:140:31:-;;;;;;;", + "deployedSourceMap": "97:140:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948::11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;133:102:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;948:140:11;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;133:102:31:-;197:31;216:11;197:18;:31::i;:::-;133:102;:::o;1482:198:11:-;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "registerInterface", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC165Mock.sol", + "exportedSymbols": { + "ERC165Mock": [ + 3504 + ] + }, + "id": 3505, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3490, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:31" + }, + { + "absolutePath": "contracts/introspection/ERC165.sol", + "file": "../introspection/ERC165.sol", + "id": 3491, + "nodeType": "ImportDirective", + "scope": 3505, + "sourceUnit": 2191, + "src": "58:37:31", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3492, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2190, + "src": "120:6:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$2190", + "typeString": "contract ERC165" + } + }, + "id": 3493, + "nodeType": "InheritanceSpecifier", + "src": "120:6:31" + } + ], + "contractDependencies": [ + 2190, + 2436 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3504, + "linearizedBaseContracts": [ + 3504, + 2190, + 2436 + ], + "name": "ERC165Mock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3502, + "nodeType": "Block", + "src": "187:48:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3499, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "216:11:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3498, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "197:18:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "197:31:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3501, + "nodeType": "ExpressionStatement", + "src": "197:31:31" + } + ] + }, + "documentation": null, + "functionSelector": "214cdb80", + "id": 3503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3495, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3503, + "src": "160:18:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3494, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "160:6:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "159:20:31" + }, + "returnParameters": { + "id": 3497, + "nodeType": "ParameterList", + "parameters": [], + "src": "187:0:31" + }, + "scope": 3504, + "src": "133:102:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3505, + "src": "97:140:31" + } + ], + "src": "33:205:31" + }, + "bytecode": "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61002c60201b60201c565b610134565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156100c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61029e806101436000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063214cdb80146100a0575b600080fd5b6100866004803603602081101561005157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506100ed565b604051808215151515815260200191505060405180910390f35b6100eb600480360360208110156100b657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610154565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b61015d81610160565b50565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156101fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055505056fea2646970667358221220f8b3f917fb8f90b707e70ef3832f32ff341f370e229f5121ecb40f4403a6bfd864736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b578063214cdb80146100a0575b600080fd5b6100866004803603602081101561005157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506100ed565b604051808215151515815260200191505060405180910390f35b6100eb600480360360208110156100b657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610154565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b61015d81610160565b50565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156101fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055505056fea2646970667358221220f8b3f917fb8f90b707e70ef3832f32ff341f370e229f5121ecb40f4403a6bfd864736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC165NotSupported.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC165NotSupported.json new file mode 100644 index 0000000..e1ebe82 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC165NotSupported.json @@ -0,0 +1,62 @@ +{ + "fileName": "ERC165NotSupported.sol", + "contractName": "ERC165NotSupported", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\ncontract ERC165NotSupported { }\n", + "sourcePath": "contracts/mocks/ERC165/ERC165NotSupported.sol", + "sourceMap": "58:31:29:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "58:31:29:-:0;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/mocks/ERC165/ERC165NotSupported.sol", + "exportedSymbols": { + "ERC165NotSupported": [ + 3438 + ] + }, + "id": 3439, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3437, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:29" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3438, + "linearizedBaseContracts": [ + 3438 + ], + "name": "ERC165NotSupported", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 3439, + "src": "58:31:29" + } + ], + "src": "33:57:29" + }, + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212200b48ef16c63f260d6fa0af2369d3118c55c635413516e85a1d17cbc7f77ef23a64736f6c63430006090033", + "deployedBytecode": "0x6080604052600080fdfea26469706673582212200b48ef16c63f260d6fa0af2369d3118c55c635413516e85a1d17cbc7f77ef23a64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1820Implementer.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1820Implementer.json new file mode 100644 index 0000000..c4dbbf7 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1820Implementer.json @@ -0,0 +1,830 @@ +{ + "fileName": "ERC1820Implementer.sol", + "contractName": "ERC1820Implementer", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IERC1820Implementer.sol\";\n\n/**\n * @dev Implementation of the {IERC1820Implementer} interface.\n *\n * Contracts may inherit from this and call {_registerInterfaceForAddress} to\n * declare their willingness to be implementers.\n * {IERC1820Registry-setInterfaceImplementer} should then be called for the\n * registration to be complete.\n */\ncontract ERC1820Implementer is IERC1820Implementer {\n bytes32 constant private _ERC1820_ACCEPT_MAGIC = keccak256(abi.encodePacked(\"ERC1820_ACCEPT_MAGIC\"));\n\n mapping(bytes32 => mapping(address => bool)) private _supportedInterfaces;\n\n /**\n * See {IERC1820Implementer-canImplementInterfaceForAddress}.\n */\n function canImplementInterfaceForAddress(bytes32 interfaceHash, address account) public view override returns (bytes32) {\n return _supportedInterfaces[interfaceHash][account] ? _ERC1820_ACCEPT_MAGIC : bytes32(0x00);\n }\n\n /**\n * @dev Declares the contract as willing to be an implementer of\n * `interfaceHash` for `account`.\n *\n * See {IERC1820Registry-setInterfaceImplementer} and\n * {IERC1820Registry-interfaceHash}.\n */\n function _registerInterfaceForAddress(bytes32 interfaceHash, address account) internal virtual {\n _supportedInterfaces[interfaceHash][account] = true;\n }\n}\n", + "sourcePath": "contracts/introspection/ERC1820Implementer.sol", + "sourceMap": "404:954:12:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "404:954:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;730:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;841:7;867:20;:35;888:13;867:35;;;;;;;;;;;:44;903:7;867:44;;;;;;;;;;;;;;;;;;;;;;;;;:84;;946:4;938:13;;867:84;;;520:40;;;;;;;;;;;;;;;;;;;;;;;;;;510:51;;;;;;867:84;860:91;;730:228;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "canImplementInterfaceForAddress", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/introspection/ERC1820Implementer.sol", + "exportedSymbols": { + "ERC1820Implementer": [ + 2036 + ] + }, + "id": 2037, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1976, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:12" + }, + { + "absolutePath": "contracts/introspection/IERC1820Implementer.sol", + "file": "./IERC1820Implementer.sol", + "id": 1977, + "nodeType": "ImportDirective", + "scope": 2037, + "sourceUnit": 2063, + "src": "58:35:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1979, + "name": "IERC1820Implementer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2062, + "src": "435:19:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Implementer_$2062", + "typeString": "contract IERC1820Implementer" + } + }, + "id": 1980, + "nodeType": "InheritanceSpecifier", + "src": "435:19:12" + } + ], + "contractDependencies": [ + 2062 + ], + "contractKind": "contract", + "documentation": { + "id": 1978, + "nodeType": "StructuredDocumentation", + "src": "95:308:12", + "text": " @dev Implementation of the {IERC1820Implementer} interface.\n Contracts may inherit from this and call {_registerInterfaceForAddress} to\n declare their willingness to be implementers.\n {IERC1820Registry-setInterfaceImplementer} should then be called for the\n registration to be complete." + }, + "fullyImplemented": true, + "id": 2036, + "linearizedBaseContracts": [ + 2036, + 2062 + ], + "name": "ERC1820Implementer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1988, + "mutability": "constant", + "name": "_ERC1820_ACCEPT_MAGIC", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2036, + "src": "461:100:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1981, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "461:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313832305f4143434550545f4d41474943", + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "537:22:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b4", + "typeString": "literal_string \"ERC1820_ACCEPT_MAGIC\"" + }, + "value": "ERC1820_ACCEPT_MAGIC" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b4", + "typeString": "literal_string \"ERC1820_ACCEPT_MAGIC\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 1983, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "520:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "520:16:12", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "520:40:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1982, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "510:9:12", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "510:51:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1994, + "mutability": "mutable", + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2036, + "src": "568:73:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 1993, + "keyType": { + "id": 1989, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "576:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "568:44:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 1992, + "keyType": { + "id": 1990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "595:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "587:24:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1991, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "606:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "baseFunctions": [ + 2061 + ], + "body": { + "id": 2017, + "nodeType": "Block", + "src": "850:108:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2005, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "867:20:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 2007, + "indexExpression": { + "argumentTypes": null, + "id": 2006, + "name": "interfaceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "888:13:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "867:35:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2009, + "indexExpression": { + "argumentTypes": null, + "id": 2008, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1999, + "src": "903:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "867:44:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783030", + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "946:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "938:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2011, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "938:7:12", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "938:13:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "867:84:12", + "trueExpression": { + "argumentTypes": null, + "id": 2010, + "name": "_ERC1820_ACCEPT_MAGIC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "914:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2004, + "id": 2016, + "nodeType": "Return", + "src": "860:91:12" + } + ] + }, + "documentation": { + "id": 1995, + "nodeType": "StructuredDocumentation", + "src": "648:77:12", + "text": " See {IERC1820Implementer-canImplementInterfaceForAddress}." + }, + "functionSelector": "249cb3fa", + "id": 2018, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "canImplementInterfaceForAddress", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2001, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "823:8:12" + }, + "parameters": { + "id": 2000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2018, + "src": "771:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1996, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "771:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1999, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2018, + "src": "794:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "794:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "770:40:12" + }, + "returnParameters": { + "id": 2004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2003, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2018, + "src": "841:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2002, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "841:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "840:9:12" + }, + "scope": 2036, + "src": "730:228:12", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2034, + "nodeType": "Block", + "src": "1288:68:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2026, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "1298:20:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 2029, + "indexExpression": { + "argumentTypes": null, + "id": 2027, + "name": "interfaceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2021, + "src": "1319:13:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1298:35:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2030, + "indexExpression": { + "argumentTypes": null, + "id": 2028, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2023, + "src": "1334:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1298:44:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1345:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1298:51:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2033, + "nodeType": "ExpressionStatement", + "src": "1298:51:12" + } + ] + }, + "documentation": { + "id": 2019, + "nodeType": "StructuredDocumentation", + "src": "964:224:12", + "text": " @dev Declares the contract as willing to be an implementer of\n `interfaceHash` for `account`.\n See {IERC1820Registry-setInterfaceImplementer} and\n {IERC1820Registry-interfaceHash}." + }, + "id": 2035, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterfaceForAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2021, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2035, + "src": "1231:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2020, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1231:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2023, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2035, + "src": "1254:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2022, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1254:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1230:40:12" + }, + "returnParameters": { + "id": 2025, + "nodeType": "ParameterList", + "parameters": [], + "src": "1288:0:12" + }, + "scope": 2036, + "src": "1193:163:12", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2037, + "src": "404:954:12" + } + ], + "src": "33:1326:12" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610184806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063249cb3fa14610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610092565b6040518082815260200191505060405180910390f35b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166100fe576000801b610146565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b90509291505056fea2646970667358221220115698fde7e58e31681a36f472ab2aff4589b83de7fd82b442f1f598e26e831264736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063249cb3fa14610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610092565b6040518082815260200191505060405180910390f35b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166100fe576000801b610146565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b90509291505056fea2646970667358221220115698fde7e58e31681a36f472ab2aff4589b83de7fd82b442f1f598e26e831264736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC1820ImplementerMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC1820ImplementerMock.json new file mode 100644 index 0000000..3a784ed --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC1820ImplementerMock.json @@ -0,0 +1,306 @@ +{ + "fileName": "ERC1820ImplementerMock.sol", + "contractName": "ERC1820ImplementerMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../introspection/ERC1820Implementer.sol\";\n\ncontract ERC1820ImplementerMock is ERC1820Implementer {\n function registerInterfaceForAddress(bytes32 interfaceHash, address account) public {\n _registerInterfaceForAddress(interfaceHash, account);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC1820ImplementerMock.sol", + "sourceMap": "109:215:32:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "109:215:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;730:228:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;169:153:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;730:228:13;841:7;867:20;:35;888:13;867:35;;;;;;;;;;;:44;903:7;867:44;;;;;;;;;;;;;;;;;;;;;;;;;:84;;946:4;938:13;;867:84;;;520:40;;;;;;;;;;;;;;;;;;;;;;;;;;510:51;;;;;;867:84;860:91;;730:228;;;;:::o;169:153:32:-;263:52;292:13;307:7;263:28;:52::i;:::-;169:153;;:::o;1193:163:13:-;1345:4;1298:20;:35;1319:13;1298:35;;;;;;;;;;;:44;1334:7;1298:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;1193:163;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "canImplementInterfaceForAddress", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "registerInterfaceForAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC1820ImplementerMock.sol", + "exportedSymbols": { + "ERC1820ImplementerMock": [ + 3523 + ] + }, + "id": 3524, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3506, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:32" + }, + { + "absolutePath": "contracts/introspection/ERC1820Implementer.sol", + "file": "../introspection/ERC1820Implementer.sol", + "id": 3507, + "nodeType": "ImportDirective", + "scope": 3524, + "sourceUnit": 2425, + "src": "58:49:32", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3508, + "name": "ERC1820Implementer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2424, + "src": "144:18:32", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1820Implementer_$2424", + "typeString": "contract ERC1820Implementer" + } + }, + "id": 3509, + "nodeType": "InheritanceSpecifier", + "src": "144:18:32" + } + ], + "contractDependencies": [ + 2424, + 2450 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3523, + "linearizedBaseContracts": [ + 3523, + 2424, + 2450 + ], + "name": "ERC1820ImplementerMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3521, + "nodeType": "Block", + "src": "253:69:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3517, + "name": "interfaceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3511, + "src": "292:13:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3518, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3513, + "src": "307:7:32", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3516, + "name": "_registerInterfaceForAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2423, + "src": "263:28:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 3519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "263:52:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3520, + "nodeType": "ExpressionStatement", + "src": "263:52:32" + } + ] + }, + "documentation": null, + "functionSelector": "5536e45d", + "id": 3522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerInterfaceForAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3511, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3522, + "src": "206:21:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3510, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "206:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3513, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3522, + "src": "229:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "229:7:32", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "205:40:32" + }, + "returnParameters": { + "id": 3515, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:0:32" + }, + "scope": 3523, + "src": "169:153:32", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3524, + "src": "109:215:32" + } + ], + "src": "33:292:32" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610257806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063249cb3fa1461003b5780635536e45d1461009d575b600080fd5b6100876004803603604081101561005157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100eb565b6040518082815260200191505060405180910390f35b6100e9600480360360408110156100b357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a7565b005b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610157576000801b61019f565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b905092915050565b6101b182826101b5565b5050565b600160008084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea264697066735822122077b3be38edcf0b0e25ebb4b385221ef117bbe6587ad8314bb33670d7e4367f6764736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063249cb3fa1461003b5780635536e45d1461009d575b600080fd5b6100876004803603604081101561005157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100eb565b6040518082815260200191505060405180910390f35b6100e9600480360360408110156100b357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a7565b005b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610157576000801b61019f565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b905092915050565b6101b182826101b5565b5050565b600160008084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea264697066735822122077b3be38edcf0b0e25ebb4b385221ef117bbe6587ad8314bb33670d7e4367f6764736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20.json new file mode 100644 index 0000000..d97012d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20.json @@ -0,0 +1,6997 @@ +{ + "fileName": "ERC20.sol", + "contractName": "ERC20", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor (string memory name, string memory symbol) public {\n _name = name;\n _symbol = symbol;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20.sol", + "sourceMap": "1345:9446:84:-:0;;;2013:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:4;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;1345:9446;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "1345:9446:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3262:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4881:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3121:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5593:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3418:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2413:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6295:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3738:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3968:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2219:81;2256:13;2288:5;2281:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81;:::o;4255:166::-;4338:4;4354:39;4363:12;:10;:12::i;:::-;4377:7;4386:6;4354:8;:39::i;:::-;4410:4;4403:11;;4255:166;;;;:::o;3262:98::-;3315:7;3341:12;;3334:19;;3262:98;:::o;4881:317::-;4987:4;5003:36;5013:6;5021:9;5032:6;5003:9;:36::i;:::-;5049:121;5058:6;5066:12;:10;:12::i;:::-;5080:89;5118:6;5080:89;;;;;;;;;;;;;;;;;:11;:19;5092:6;5080:19;;;;;;;;;;;;;;;:33;5100:12;:10;:12::i;:::-;5080:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5049:8;:121::i;:::-;5187:4;5180:11;;4881:317;;;;;:::o;3121:81::-;3162:5;3186:9;;;;;;;;;;;3179:16;;3121:81;:::o;5593:215::-;5681:4;5697:83;5706:12;:10;:12::i;:::-;5720:7;5729:50;5768:10;5729:11;:25;5741:12;:10;:12::i;:::-;5729:25;;;;;;;;;;;;;;;:34;5755:7;5729:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5697:8;:83::i;:::-;5797:4;5790:11;;5593:215;;;;:::o;3418:117::-;3484:7;3510:9;:18;3520:7;3510:18;;;;;;;;;;;;;;;;3503:25;;3418:117;;;:::o;2413:85::-;2452:13;2484:7;2477:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:85;:::o;6295:266::-;6388:4;6404:129;6413:12;:10;:12::i;:::-;6427:7;6436:96;6475:15;6436:96;;;;;;;;;;;;;;;;;:11;:25;6448:12;:10;:12::i;:::-;6436:25;;;;;;;;;;;;;;;:34;6462:7;6436:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6404:8;:129::i;:::-;6550:4;6543:11;;6295:266;;;;:::o;3738:172::-;3824:4;3840:42;3850:12;:10;:12::i;:::-;3864:9;3875:6;3840:9;:42::i;:::-;3899:4;3892:11;;3738:172;;;;:::o;3968:149::-;4057:7;4083:11;:18;4095:5;4083:18;;;;;;;;;;;;;;;:27;4102:7;4083:27;;;;;;;;;;;;;;;;4076:34;;3968:149;;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;9359:340:84:-;9477:1;9460:19;;:5;:19;;;;9452:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9557:1;9538:21;;:7;:21;;;;9530:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9639:6;9609:11;:18;9621:5;9609:18;;;;;;;;;;;;;;;:27;9628:7;9609:27;;;;;;;;;;;;;;;:36;;;;9676:7;9660:32;;9669:5;9660:32;;;9685:6;9660:32;;;;;;;;;;;;;;;;;;9359:340;;;:::o;7035:530::-;7158:1;7140:20;;:6;:20;;;;7132:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7241:1;7220:23;;:9;:23;;;;7212:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:47;7315:6;7323:9;7334:6;7294:20;:47::i;:::-;7372:71;7394:6;7372:71;;;;;;;;;;;;;;;;;:9;:17;7382:6;7372:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7352:9;:17;7362:6;7352:17;;;;;;;;;;;;;;;:91;;;;7476:32;7501:6;7476:9;:20;7486:9;7476:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7453:9;:20;7463:9;7453:20;;;;;;;;;;;;;;;:55;;;;7540:9;7523:35;;7532:6;7523:35;;;7551:6;7523:35;;;;;;;;;;;;;;;;;;7035:530;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;10697:92:84:-;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "ERC20": [ + 9194 + ] + }, + "id": 9195, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8689, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:84" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 8690, + "nodeType": "ImportDirective", + "scope": 9195, + "sourceUnit": 23, + "src": "58:31:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 8691, + "nodeType": "ImportDirective", + "scope": 9195, + "sourceUnit": 9774, + "src": "90:22:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 8692, + "nodeType": "ImportDirective", + "scope": 9195, + "sourceUnit": 2422, + "src": "113:33:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 8693, + "nodeType": "ImportDirective", + "scope": 9195, + "sourceUnit": 12815, + "src": "147:33:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8695, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "1363:7:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 8696, + "nodeType": "InheritanceSpecifier", + "src": "1363:7:84" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8697, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1372:6:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 8698, + "nodeType": "InheritanceSpecifier", + "src": "1372:6:84" + } + ], + "contractDependencies": [ + 22, + 9773 + ], + "contractKind": "contract", + "documentation": { + "id": 8694, + "nodeType": "StructuredDocumentation", + "src": "182:1162:84", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." + }, + "fullyImplemented": true, + "id": 9194, + "linearizedBaseContracts": [ + 9194, + 9773, + 22 + ], + "name": "ERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 8701, + "libraryName": { + "contractScope": null, + "id": 8699, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "1391:8:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1385:27:84", + "typeName": { + "id": 8700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1404:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 8704, + "libraryName": { + "contractScope": null, + "id": 8702, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "1423:7:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "1417:26:84", + "typeName": { + "id": 8703, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1435:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": false, + "id": 8708, + "mutability": "mutable", + "name": "_balances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9194, + "src": "1449:46:84", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 8707, + "keyType": { + "id": 8705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1458:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1449:28:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 8706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1469:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 8714, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9194, + "src": "1502:69:84", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 8713, + "keyType": { + "id": 8709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1511:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1502:49:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 8712, + "keyType": { + "id": 8710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1531:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1522:28:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 8711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1542:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 8716, + "mutability": "mutable", + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9194, + "src": "1578:28:84", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8715, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1578:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 8718, + "mutability": "mutable", + "name": "_name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9194, + "src": "1613:20:84", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 8717, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1613:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 8720, + "mutability": "mutable", + "name": "_symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9194, + "src": "1639:22:84", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 8719, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1639:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 8722, + "mutability": "mutable", + "name": "_decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9194, + "src": "1667:23:84", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8721, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1667:5:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 8742, + "nodeType": "Block", + "src": "2075:79:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 8730, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8718, + "src": "2085:5:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 8731, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8725, + "src": "2093:4:84", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2085:12:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 8733, + "nodeType": "ExpressionStatement", + "src": "2085:12:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 8736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 8734, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8720, + "src": "2107:7:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 8735, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8727, + "src": "2117:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2107:16:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 8737, + "nodeType": "ExpressionStatement", + "src": "2107:16:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 8740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 8738, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8722, + "src": "2133:9:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3138", + "id": 8739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2145:2:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "2133:14:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 8741, + "nodeType": "ExpressionStatement", + "src": "2133:14:84" + } + ] + }, + "documentation": { + "id": 8723, + "nodeType": "StructuredDocumentation", + "src": "1697:311:84", + "text": " @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction." + }, + "id": 8743, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8725, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8743, + "src": "2026:18:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8724, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2026:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8727, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8743, + "src": "2046:20:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8726, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2046:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2025:42:84" + }, + "returnParameters": { + "id": 8729, + "nodeType": "ParameterList", + "parameters": [], + "src": "2075:0:84" + }, + "scope": 9194, + "src": "2013:141:84", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8751, + "nodeType": "Block", + "src": "2271:29:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8749, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8718, + "src": "2288:5:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 8748, + "id": 8750, + "nodeType": "Return", + "src": "2281:12:84" + } + ] + }, + "documentation": { + "id": 8744, + "nodeType": "StructuredDocumentation", + "src": "2160:54:84", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 8752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8745, + "nodeType": "ParameterList", + "parameters": [], + "src": "2232:2:84" + }, + "returnParameters": { + "id": 8748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8747, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8752, + "src": "2256:13:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8746, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2256:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2255:15:84" + }, + "scope": 9194, + "src": "2219:81:84", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8760, + "nodeType": "Block", + "src": "2467:31:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8758, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8720, + "src": "2484:7:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 8757, + "id": 8759, + "nodeType": "Return", + "src": "2477:14:84" + } + ] + }, + "documentation": { + "id": 8753, + "nodeType": "StructuredDocumentation", + "src": "2306:102:84", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 8761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8754, + "nodeType": "ParameterList", + "parameters": [], + "src": "2428:2:84" + }, + "returnParameters": { + "id": 8757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8756, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8761, + "src": "2452:13:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8755, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2452:6:84", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2451:15:84" + }, + "scope": 9194, + "src": "2413:85:84", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8769, + "nodeType": "Block", + "src": "3169:33:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8767, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8722, + "src": "3186:9:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 8766, + "id": 8768, + "nodeType": "Return", + "src": "3179:16:84" + } + ] + }, + "documentation": { + "id": 8762, + "nodeType": "StructuredDocumentation", + "src": "2504:612:84", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 8770, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8763, + "nodeType": "ParameterList", + "parameters": [], + "src": "3138:2:84" + }, + "returnParameters": { + "id": 8766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8765, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8770, + "src": "3162:5:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8764, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3162:5:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3161:7:84" + }, + "scope": 9194, + "src": "3121:81:84", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9704 + ], + "body": { + "id": 8779, + "nodeType": "Block", + "src": "3324:36:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8777, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "3341:12:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 8776, + "id": 8778, + "nodeType": "Return", + "src": "3334:19:84" + } + ] + }, + "documentation": { + "id": 8771, + "nodeType": "StructuredDocumentation", + "src": "3208:49:84", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 8780, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8773, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3297:8:84" + }, + "parameters": { + "id": 8772, + "nodeType": "ParameterList", + "parameters": [], + "src": "3282:2:84" + }, + "returnParameters": { + "id": 8776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8775, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8780, + "src": "3315:7:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3315:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3314:9:84" + }, + "scope": 9194, + "src": "3262:98:84", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9712 + ], + "body": { + "id": 8793, + "nodeType": "Block", + "src": "3493:42:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8789, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "3510:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8791, + "indexExpression": { + "argumentTypes": null, + "id": 8790, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8783, + "src": "3520:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3510:18:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 8788, + "id": 8792, + "nodeType": "Return", + "src": "3503:25:84" + } + ] + }, + "documentation": { + "id": 8781, + "nodeType": "StructuredDocumentation", + "src": "3366:47:84", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 8794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8785, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3466:8:84" + }, + "parameters": { + "id": 8784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8783, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8794, + "src": "3437:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8782, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3437:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3436:17:84" + }, + "returnParameters": { + "id": 8788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8787, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8794, + "src": "3484:7:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3484:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3483:9:84" + }, + "scope": 9194, + "src": "3418:117:84", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9722 + ], + "body": { + "id": 8814, + "nodeType": "Block", + "src": "3830:80:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8806, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "3850:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3850:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8808, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8797, + "src": "3864:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8809, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8799, + "src": "3875:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8805, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9015, + "src": "3840:9:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3840:42:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8811, + "nodeType": "ExpressionStatement", + "src": "3840:42:84" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 8812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3899:4:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 8804, + "id": 8813, + "nodeType": "Return", + "src": "3892:11:84" + } + ] + }, + "documentation": { + "id": 8795, + "nodeType": "StructuredDocumentation", + "src": "3541:192:84", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." + }, + "functionSelector": "a9059cbb", + "id": 8815, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8801, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3806:8:84" + }, + "parameters": { + "id": 8800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8797, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8815, + "src": "3756:17:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3756:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8799, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8815, + "src": "3775:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3775:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3755:35:84" + }, + "returnParameters": { + "id": 8804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8803, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8815, + "src": "3824:4:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8802, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3824:4:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3823:6:84" + }, + "scope": 9194, + "src": "3738:172:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 9732 + ], + "body": { + "id": 8832, + "nodeType": "Block", + "src": "4066:51:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8826, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8714, + "src": "4083:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 8828, + "indexExpression": { + "argumentTypes": null, + "id": 8827, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8818, + "src": "4095:5:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4083:18:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8830, + "indexExpression": { + "argumentTypes": null, + "id": 8829, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8820, + "src": "4102:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4083:27:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 8825, + "id": 8831, + "nodeType": "Return", + "src": "4076:34:84" + } + ] + }, + "documentation": { + "id": 8816, + "nodeType": "StructuredDocumentation", + "src": "3916:47:84", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 8833, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8822, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4039:8:84" + }, + "parameters": { + "id": 8821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8818, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8833, + "src": "3987:13:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3987:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8820, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8833, + "src": "4002:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4002:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3986:32:84" + }, + "returnParameters": { + "id": 8825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8824, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8833, + "src": "4057:7:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8823, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4057:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4056:9:84" + }, + "scope": 9194, + "src": "3968:149:84", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 9742 + ], + "body": { + "id": 8853, + "nodeType": "Block", + "src": "4344:77:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8845, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4363:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4363:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8847, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8836, + "src": "4377:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8848, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8838, + "src": "4386:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8844, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9171, + "src": "4354:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4354:39:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8850, + "nodeType": "ExpressionStatement", + "src": "4354:39:84" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 8851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4410:4:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 8843, + "id": 8852, + "nodeType": "Return", + "src": "4403:11:84" + } + ] + }, + "documentation": { + "id": 8834, + "nodeType": "StructuredDocumentation", + "src": "4123:127:84", + "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 8854, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8840, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4320:8:84" + }, + "parameters": { + "id": 8839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8836, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8854, + "src": "4272:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4272:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8838, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8854, + "src": "4289:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4289:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4271:33:84" + }, + "returnParameters": { + "id": 8843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8842, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8854, + "src": "4338:4:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8841, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4338:4:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4337:6:84" + }, + "scope": 9194, + "src": "4255:166:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 9754 + ], + "body": { + "id": 8891, + "nodeType": "Block", + "src": "4993:205:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8868, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8857, + "src": "5013:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8869, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8859, + "src": "5021:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8870, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8861, + "src": "5032:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8867, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9015, + "src": "5003:9:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5003:36:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8872, + "nodeType": "ExpressionStatement", + "src": "5003:36:84" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8874, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8857, + "src": "5058:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8875, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5066:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5066:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8884, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8861, + "src": "5118:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 8885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5126:42:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + }, + "value": "ERC20: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8877, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8714, + "src": "5080:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 8879, + "indexExpression": { + "argumentTypes": null, + "id": 8878, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8857, + "src": "5092:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5080:19:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8882, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8880, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5100:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5100:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5080:33:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "5080:37:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 8886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5080:89:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8873, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9171, + "src": "5049:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5049:121:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8888, + "nodeType": "ExpressionStatement", + "src": "5049:121:84" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 8889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5187:4:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 8866, + "id": 8890, + "nodeType": "Return", + "src": "5180:11:84" + } + ] + }, + "documentation": { + "id": 8855, + "nodeType": "StructuredDocumentation", + "src": "4427:449:84", + "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." + }, + "functionSelector": "23b872dd", + "id": 8892, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 8863, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4969:8:84" + }, + "parameters": { + "id": 8862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8857, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8892, + "src": "4903:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4903:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8859, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8892, + "src": "4919:17:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8858, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4919:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8861, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8892, + "src": "4938:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4938:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4902:51:84" + }, + "returnParameters": { + "id": 8866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8865, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8892, + "src": "4987:4:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8864, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4987:4:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4986:6:84" + }, + "scope": 9194, + "src": "4881:317:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 8919, + "nodeType": "Block", + "src": "5687:121:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8903, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5706:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5706:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8905, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8895, + "src": "5720:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8913, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8897, + "src": "5768:10:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8906, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8714, + "src": "5729:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 8909, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8907, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5741:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5741:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5729:25:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8911, + "indexExpression": { + "argumentTypes": null, + "id": 8910, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8895, + "src": "5755:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5729:34:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "5729:38:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 8914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5729:50:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8902, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9171, + "src": "5697:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5697:83:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8916, + "nodeType": "ExpressionStatement", + "src": "5697:83:84" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 8917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5797:4:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 8901, + "id": 8918, + "nodeType": "Return", + "src": "5790:11:84" + } + ] + }, + "documentation": { + "id": 8893, + "nodeType": "StructuredDocumentation", + "src": "5204:384:84", + "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "39509351", + "id": 8920, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8895, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8920, + "src": "5620:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5620:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8897, + "mutability": "mutable", + "name": "addedValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8920, + "src": "5637:18:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5637:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5619:37:84" + }, + "returnParameters": { + "id": 8901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8900, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8920, + "src": "5681:4:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8899, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5681:4:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5680:6:84" + }, + "scope": 9194, + "src": "5593:215:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 8948, + "nodeType": "Block", + "src": "6394:167:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8931, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6413:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6413:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8933, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8923, + "src": "6427:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8941, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8925, + "src": "6475:15:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 8942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6492:39:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8934, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8714, + "src": "6436:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 8937, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8935, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6448:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6448:12:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6436:25:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8939, + "indexExpression": { + "argumentTypes": null, + "id": 8938, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8923, + "src": "6462:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6436:34:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "6436:38:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 8943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6436:96:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8930, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9171, + "src": "6404:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6404:129:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8945, + "nodeType": "ExpressionStatement", + "src": "6404:129:84" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 8946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6550:4:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 8929, + "id": 8947, + "nodeType": "Return", + "src": "6543:11:84" + } + ] + }, + "documentation": { + "id": 8921, + "nodeType": "StructuredDocumentation", + "src": "5814:476:84", + "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." + }, + "functionSelector": "a457c2d7", + "id": 8949, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8923, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8949, + "src": "6322:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6322:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8925, + "mutability": "mutable", + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8949, + "src": "6339:23:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6339:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6321:42:84" + }, + "returnParameters": { + "id": 8929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8928, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8949, + "src": "6388:4:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8927, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6388:4:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6387:6:84" + }, + "scope": 9194, + "src": "6295:266:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 9014, + "nodeType": "Block", + "src": "7122:443:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8960, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8952, + "src": "7140:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7158:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7150:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7150:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7150:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7140:20:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 8966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7162:39:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 8959, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7132:7:84", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7132:70:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8968, + "nodeType": "ExpressionStatement", + "src": "7132:70:84" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8970, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8954, + "src": "7220:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7241:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7233:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7233:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 8974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7233:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7220:23:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 8976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7245:37:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 8969, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7212:7:84", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7212:71:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8978, + "nodeType": "ExpressionStatement", + "src": "7212:71:84" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8980, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8952, + "src": "7315:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8981, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8954, + "src": "7323:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 8982, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8956, + "src": "7334:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8979, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9193, + "src": "7294:20:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 8983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7294:47:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8984, + "nodeType": "ExpressionStatement", + "src": "7294:47:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 8995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8985, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "7352:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8987, + "indexExpression": { + "argumentTypes": null, + "id": 8986, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8952, + "src": "7362:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7352:17:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8992, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8956, + "src": "7394:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 8993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7402:40:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8988, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "7372:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8990, + "indexExpression": { + "argumentTypes": null, + "id": 8989, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8952, + "src": "7382:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7372:17:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "7372:21:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 8994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7372:71:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7352:91:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8996, + "nodeType": "ExpressionStatement", + "src": "7352:91:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 9006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 8997, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "7453:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 8999, + "indexExpression": { + "argumentTypes": null, + "id": 8998, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8954, + "src": "7463:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7453:20:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9004, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8956, + "src": "7501:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9000, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "7476:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9002, + "indexExpression": { + "argumentTypes": null, + "id": 9001, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8954, + "src": "7486:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7476:20:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "7476:24:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7476:32:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7453:55:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9007, + "nodeType": "ExpressionStatement", + "src": "7453:55:84" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9009, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8952, + "src": "7532:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9010, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8954, + "src": "7540:9:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9011, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8956, + "src": "7551:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9008, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9763, + "src": "7523:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7523:35:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9013, + "nodeType": "EmitStatement", + "src": "7518:40:84" + } + ] + }, + "documentation": { + "id": 8950, + "nodeType": "StructuredDocumentation", + "src": "6567:463:84", + "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." + }, + "id": 9015, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8952, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9015, + "src": "7054:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7054:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8954, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9015, + "src": "7070:17:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7070:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8956, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9015, + "src": "7089:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8955, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7089:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7053:51:84" + }, + "returnParameters": { + "id": 8958, + "nodeType": "ParameterList", + "parameters": [], + "src": "7122:0:84" + }, + "scope": 9194, + "src": "7035:530:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 9069, + "nodeType": "Block", + "src": "7900:305:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9024, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9018, + "src": "7918:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7937:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7929:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7929:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7929:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7918:21:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 9030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7941:33:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 9023, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7910:7:84", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7910:65:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9032, + "nodeType": "ExpressionStatement", + "src": "7910:65:84" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8015:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8007:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8007:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9037, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8007:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 9038, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9018, + "src": "8019:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9039, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "8028:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9033, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9193, + "src": "7986:20:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7986:49:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9041, + "nodeType": "ExpressionStatement", + "src": "7986:49:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 9047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9042, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "8046:12:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9045, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "8078:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9043, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "8061:12:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "8061:16:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8061:24:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8046:39:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9048, + "nodeType": "ExpressionStatement", + "src": "8046:39:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 9058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9049, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "8095:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9051, + "indexExpression": { + "argumentTypes": null, + "id": 9050, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9018, + "src": "8105:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8095:18:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9056, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "8139:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9052, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "8116:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9054, + "indexExpression": { + "argumentTypes": null, + "id": 9053, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9018, + "src": "8126:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8116:18:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "8116:22:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8116:30:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8095:51:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9059, + "nodeType": "ExpressionStatement", + "src": "8095:51:84" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8178:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8170:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8170:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8170:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 9065, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9018, + "src": "8182:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9066, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "8191:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9060, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9763, + "src": "8161:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8161:37:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9068, + "nodeType": "EmitStatement", + "src": "8156:42:84" + } + ] + }, + "documentation": { + "id": 9016, + "nodeType": "StructuredDocumentation", + "src": "7571:259:84", + "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." + }, + "id": 9070, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9018, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9070, + "src": "7850:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7850:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9020, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9070, + "src": "7867:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7867:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7849:33:84" + }, + "returnParameters": { + "id": 9022, + "nodeType": "ParameterList", + "parameters": [], + "src": "7900:0:84" + }, + "scope": 9194, + "src": "7835:370:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 9125, + "nodeType": "Block", + "src": "8589:345:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9079, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9073, + "src": "8607:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9082, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8626:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8618:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8618:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8618:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8607:21:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 9085, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8630:35:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 9078, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8599:7:84", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8599:67:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9087, + "nodeType": "ExpressionStatement", + "src": "8599:67:84" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9089, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9073, + "src": "8698:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8715:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8707:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8707:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8707:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 9094, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9075, + "src": "8719:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9088, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9193, + "src": "8677:20:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8677:49:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9096, + "nodeType": "ExpressionStatement", + "src": "8677:49:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 9107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9097, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "8737:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9099, + "indexExpression": { + "argumentTypes": null, + "id": 9098, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9073, + "src": "8747:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8737:18:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9104, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9075, + "src": "8781:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 9105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8789:36:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9100, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8708, + "src": "8758:9:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9102, + "indexExpression": { + "argumentTypes": null, + "id": 9101, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9073, + "src": "8768:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8758:18:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "8758:22:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 9106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8758:68:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8737:89:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9108, + "nodeType": "ExpressionStatement", + "src": "8737:89:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 9114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9109, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "8836:12:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9112, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9075, + "src": "8868:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9110, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "8851:12:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "8851:16:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8851:24:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8836:39:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9115, + "nodeType": "ExpressionStatement", + "src": "8836:39:84" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9117, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9073, + "src": "8899:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8916:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8908:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8908:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8908:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 9122, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9075, + "src": "8920:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9116, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9763, + "src": "8890:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8890:37:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9124, + "nodeType": "EmitStatement", + "src": "8885:42:84" + } + ] + }, + "documentation": { + "id": 9071, + "nodeType": "StructuredDocumentation", + "src": "8211:308:84", + "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." + }, + "id": 9126, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9073, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9126, + "src": "8539:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8539:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9075, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9126, + "src": "8556:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8556:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8538:33:84" + }, + "returnParameters": { + "id": 9077, + "nodeType": "ParameterList", + "parameters": [], + "src": "8589:0:84" + }, + "scope": 9194, + "src": "8524:410:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 9170, + "nodeType": "Block", + "src": "9442:257:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9137, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9129, + "src": "9460:5:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9477:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9469:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9469:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9469:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9460:19:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 9143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9481:38:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 9136, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9452:7:84", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9452:68:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9145, + "nodeType": "ExpressionStatement", + "src": "9452:68:84" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9147, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9131, + "src": "9538:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9557:1:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9549:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9549:7:84", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9549:10:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9538:21:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 9153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9561:36:84", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 9146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9530:7:84", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9530:68:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9155, + "nodeType": "ExpressionStatement", + "src": "9530:68:84" + }, + { + "expression": { + "argumentTypes": null, + "id": 9162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9156, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8714, + "src": "9609:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 9159, + "indexExpression": { + "argumentTypes": null, + "id": 9157, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9129, + "src": "9621:5:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9609:18:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 9160, + "indexExpression": { + "argumentTypes": null, + "id": 9158, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9131, + "src": "9628:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9609:27:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 9161, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9133, + "src": "9639:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9609:36:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9163, + "nodeType": "ExpressionStatement", + "src": "9609:36:84" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9165, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9129, + "src": "9669:5:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9166, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9131, + "src": "9676:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9167, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9133, + "src": "9685:6:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9164, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9772, + "src": "9660:8:84", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9660:32:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9169, + "nodeType": "EmitStatement", + "src": "9655:37:84" + } + ] + }, + "documentation": { + "id": 9127, + "nodeType": "StructuredDocumentation", + "src": "8940:414:84", + "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." + }, + "id": 9171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9129, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9171, + "src": "9377:13:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9377:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9131, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9171, + "src": "9392:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9392:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9133, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9171, + "src": "9409:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9409:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9376:48:84" + }, + "returnParameters": { + "id": 9135, + "nodeType": "ParameterList", + "parameters": [], + "src": "9442:0:84" + }, + "scope": 9194, + "src": "9359:340:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 9181, + "nodeType": "Block", + "src": "10072:38:84", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 9179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9177, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8722, + "src": "10082:9:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 9178, + "name": "decimals_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9174, + "src": "10094:9:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "10082:21:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 9180, + "nodeType": "ExpressionStatement", + "src": "10082:21:84" + } + ] + }, + "documentation": { + "id": 9172, + "nodeType": "StructuredDocumentation", + "src": "9705:312:84", + "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." + }, + "id": 9182, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setupDecimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9174, + "mutability": "mutable", + "name": "decimals_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9182, + "src": "10046:15:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 9173, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10046:5:84", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10045:17:84" + }, + "returnParameters": { + "id": 9176, + "nodeType": "ParameterList", + "parameters": [], + "src": "10072:0:84" + }, + "scope": 9194, + "src": "10022:88:84", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9192, + "nodeType": "Block", + "src": "10786:3:84", + "statements": [] + }, + "documentation": { + "id": 9183, + "nodeType": "StructuredDocumentation", + "src": "10116:576:84", + "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 9193, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9185, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9193, + "src": "10727:12:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10727:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9187, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9193, + "src": "10741:10:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10741:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9189, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9193, + "src": "10753:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10753:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10726:42:84" + }, + "returnParameters": { + "id": 9191, + "nodeType": "ParameterList", + "parameters": [], + "src": "10786:0:84" + }, + "scope": 9194, + "src": "10697:92:84", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 9195, + "src": "1345:9446:84" + } + ], + "src": "33:10759:84" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620013bb380380620013bb833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508160039080519060200190620001cd9291906200020b565b508060049080519060200190620001e69291906200020b565b506012600560006101000a81548160ff021916908360ff1602179055505050620002ba565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b620002b791905b80821115620002b357600081600090555060010162000299565b5090565b90565b6110f180620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d704f3f640b0d56354f5e19e5f360fd86f93ba8289d8211f72caac7ff2d852b564736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d704f3f640b0d56354f5e19e5f360fd86f93ba8289d8211f72caac7ff2d852b564736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Burnable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Burnable.json new file mode 100644 index 0000000..00b4413 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Burnable.json @@ -0,0 +1,1070 @@ +{ + "fileName": "ERC20Burnable.sol", + "contractName": "ERC20Burnable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is Context, ERC20 {\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(_msgSender(), amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, \"ERC20: burn amount exceeds allowance\");\n\n _approve(account, _msgSender(), decreasedAllowance);\n _burn(account, amount);\n }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20Burnable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol", + "exportedSymbols": { + "ERC20Burnable": [ + 9250 + ] + }, + "id": 9251, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9196, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:85" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 9197, + "nodeType": "ImportDirective", + "scope": 9251, + "sourceUnit": 23, + "src": "58:31:85", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 9198, + "nodeType": "ImportDirective", + "scope": 9251, + "sourceUnit": 9195, + "src": "90:21:85", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9200, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "357:7:85", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 9201, + "nodeType": "InheritanceSpecifier", + "src": "357:7:85" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9202, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "366:5:85", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + "id": 9203, + "nodeType": "InheritanceSpecifier", + "src": "366:5:85" + } + ], + "contractDependencies": [ + 22, + 9194, + 9773 + ], + "contractKind": "contract", + "documentation": { + "id": 9199, + "nodeType": "StructuredDocumentation", + "src": "113:208:85", + "text": " @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)." + }, + "fullyImplemented": false, + "id": 9250, + "linearizedBaseContracts": [ + 9250, + 9194, + 9773, + 22 + ], + "name": "ERC20Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 9215, + "nodeType": "Block", + "src": "526:44:85", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9210, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "542:10:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 9211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "542:12:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 9212, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9206, + "src": "556:6:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9209, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9126, + "src": "536:5:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 9213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "536:27:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9214, + "nodeType": "ExpressionStatement", + "src": "536:27:85" + } + ] + }, + "documentation": { + "id": 9204, + "nodeType": "StructuredDocumentation", + "src": "378:98:85", + "text": " @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}." + }, + "functionSelector": "42966c68", + "id": 9216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9206, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9216, + "src": "495:14:85", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "495:7:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "494:16:85" + }, + "returnParameters": { + "id": 9208, + "nodeType": "ParameterList", + "parameters": [], + "src": "526:0:85" + }, + "scope": 9250, + "src": "481:89:85", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 9248, + "nodeType": "Block", + "src": "942:224:85", + "statements": [ + { + "assignments": [ + 9225 + ], + "declarations": [ + { + "constant": false, + "id": 9225, + "mutability": "mutable", + "name": "decreasedAllowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9248, + "src": "952:26:85", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "952:7:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9235, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9232, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9221, + "src": "1018:6:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 9233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1026:38:85", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + }, + "value": "ERC20: burn amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9227, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "991:7:85", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9228, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1000:10:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 9229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1000:12:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 9226, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8833, + "src": "981:9:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 9230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "981:32:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "981:36:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 9234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "981:84:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "952:113:85" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9237, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1085:7:85", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9238, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1094:10:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 9239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1094:12:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 9240, + "name": "decreasedAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9225, + "src": "1108:18:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9236, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9171, + "src": "1076:8:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1076:51:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9242, + "nodeType": "ExpressionStatement", + "src": "1076:51:85" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9244, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9219, + "src": "1143:7:85", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9245, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9221, + "src": "1152:6:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9243, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9126, + "src": "1137:5:85", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 9246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1137:22:85", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9247, + "nodeType": "ExpressionStatement", + "src": "1137:22:85" + } + ] + }, + "documentation": { + "id": 9217, + "nodeType": "StructuredDocumentation", + "src": "576:295:85", + "text": " @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`." + }, + "functionSelector": "79cc6790", + "id": 9249, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9219, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9249, + "src": "894:15:85", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "894:7:85", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9221, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9249, + "src": "911:14:85", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "911:7:85", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "893:33:85" + }, + "returnParameters": { + "id": 9223, + "nodeType": "ParameterList", + "parameters": [], + "src": "942:0:85" + }, + "scope": 9250, + "src": "876:290:85", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 9251, + "src": "322:846:85" + } + ], + "src": "33:1136:85" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20BurnableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20BurnableMock.json new file mode 100644 index 0000000..7e02a16 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20BurnableMock.json @@ -0,0 +1,697 @@ +{ + "fileName": "ERC20BurnableMock.sol", + "contractName": "ERC20BurnableMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC20/ERC20Burnable.sol\";\n\ncontract ERC20BurnableMock is ERC20Burnable {\n constructor (\n string memory name,\n string memory symbol,\n address initialAccount,\n uint256 initialBalance\n ) public ERC20(name, symbol) {\n _mint(initialAccount, initialBalance);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20BurnableMock.sol", + "sourceMap": "102:274:33:-:0;;;152:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;306:4;312:6;2087:4:71;2079:5;:12;;;;;;;;;;;;:::i;:::-;;2111:6;2101:7;:16;;;;;;;;;;;;:::i;:::-;;2139:2;2127:9;;:14;;;;;;;;;;;;;;;;;;2007:141;;330:37:33::1;336:14;352;330:5;;;:37;;:::i;:::-;152:222:::0;;;;102:274;;7829:370:71;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;;;:49;;:::i;:::-;8055:24;8072:6;8055:12;;:16;;;;;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;10691:92::-;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;102:274:33:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "102:274:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3256:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4875:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3115:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5587:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;481:89:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3412:117:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;876:290:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2407:85:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6289:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3732:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3962:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2213:81;2250:13;2282:5;2275:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81;:::o;4249:166::-;4332:4;4348:39;4357:12;:10;:12::i;:::-;4371:7;4380:6;4348:8;:39::i;:::-;4404:4;4397:11;;4249:166;;;;:::o;3256:98::-;3309:7;3335:12;;3328:19;;3256:98;:::o;4875:317::-;4981:4;4997:36;5007:6;5015:9;5026:6;4997:9;:36::i;:::-;5043:121;5052:6;5060:12;:10;:12::i;:::-;5074:89;5112:6;5074:89;;;;;;;;;;;;;;;;;:11;:19;5086:6;5074:19;;;;;;;;;;;;;;;:33;5094:12;:10;:12::i;:::-;5074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5043:8;:121::i;:::-;5181:4;5174:11;;4875:317;;;;;:::o;3115:81::-;3156:5;3180:9;;;;;;;;;;;3173:16;;3115:81;:::o;5587:215::-;5675:4;5691:83;5700:12;:10;:12::i;:::-;5714:7;5723:50;5762:10;5723:11;:25;5735:12;:10;:12::i;:::-;5723:25;;;;;;;;;;;;;;;:34;5749:7;5723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5691:8;:83::i;:::-;5791:4;5784:11;;5587:215;;;;:::o;481:89:72:-;536:27;542:12;:10;:12::i;:::-;556:6;536:5;:27::i;:::-;481:89;:::o;3412:117:71:-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;876:290:72:-;952:26;981:84;1018:6;981:84;;;;;;;;;;;;;;;;;:32;991:7;1000:12;:10;:12::i;:::-;981:9;:32::i;:::-;:36;;:84;;;;;:::i;:::-;952:113;;1076:51;1085:7;1094:12;:10;:12::i;:::-;1108:18;1076:8;:51::i;:::-;1137:22;1143:7;1152:6;1137:5;:22::i;:::-;876:290;;;:::o;2407:85:71:-;2446:13;2478:7;2471:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:85;:::o;6289:266::-;6382:4;6398:129;6407:12;:10;:12::i;:::-;6421:7;6430:96;6469:15;6430:96;;;;;;;;;;;;;;;;;:11;:25;6442:12;:10;:12::i;:::-;6430:25;;;;;;;;;;;;;;;:34;6456:7;6430:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6398:8;:129::i;:::-;6544:4;6537:11;;6289:266;;;;:::o;3732:172::-;3818:4;3834:42;3844:12;:10;:12::i;:::-;3858:9;3869:6;3834:9;:42::i;:::-;3893:4;3886:11;;3732:172;;;;:::o;3962:149::-;4051:7;4077:11;:18;4089:5;4077:18;;;;;;;;;;;;;;;:27;4096:7;4077:27;;;;;;;;;;;;;;;;4070:34;;3962:149;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;9353:340:71:-;9471:1;9454:19;;:5;:19;;;;9446:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:1;9532:21;;:7;:21;;;;9524:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9633:6;9603:11;:18;9615:5;9603:18;;;;;;;;;;;;;;;:27;9622:7;9603:27;;;;;;;;;;;;;;;:36;;;;9670:7;9654:32;;9663:5;9654:32;;;9679:6;9654:32;;;;;;;;;;;;;;;;;;9353:340;;;:::o;7029:530::-;7152:1;7134:20;;:6;:20;;;;7126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1;7214:23;;:9;:23;;;;7206:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7288:47;7309:6;7317:9;7328:6;7288:20;:47::i;:::-;7366:71;7388:6;7366:71;;;;;;;;;;;;;;;;;:9;:17;7376:6;7366:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7346:9;:17;7356:6;7346:17;;;;;;;;;;;;;;;:91;;;;7470:32;7495:6;7470:9;:20;7480:9;7470:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;:55;;;;7534:9;7517:35;;7526:6;7517:35;;;7545:6;7517:35;;;;;;;;;;;;;;;;;;7029:530;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;8518:410:71:-;8620:1;8601:21;;:7;:21;;;;8593:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:49;8692:7;8709:1;8713:6;8671:20;:49::i;:::-;8752:68;8775:6;8752:68;;;;;;;;;;;;;;;;;:9;:18;8762:7;8752:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8731:9;:18;8741:7;8731:18;;;;;;;;;;;;;;;:89;;;;8845:24;8862:6;8845:12;;:16;;:24;;;;:::i;:::-;8830:12;:39;;;;8910:1;8884:37;;8893:7;8884:37;;;8914:6;8884:37;;;;;;;;;;;;;;;;;;8518:410;;:::o;10691:92::-;;;;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "initialAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialBalance", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20BurnableMock.sol", + "exportedSymbols": { + "ERC20BurnableMock": [ + 3550 + ] + }, + "id": 3551, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3525, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:33" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol", + "file": "../token/ERC20/ERC20Burnable.sol", + "id": 3526, + "nodeType": "ImportDirective", + "scope": 3551, + "sourceUnit": 7447, + "src": "58:42:33", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3527, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7446, + "src": "132:13:33", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$7446", + "typeString": "contract ERC20Burnable" + } + }, + "id": 3528, + "nodeType": "InheritanceSpecifier", + "src": "132:13:33" + } + ], + "contractDependencies": [ + 26, + 7390, + 7446, + 7969 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3550, + "linearizedBaseContracts": [ + 3550, + 7446, + 7390, + 7969, + 26 + ], + "name": "ERC20BurnableMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3548, + "nodeType": "Block", + "src": "320:54:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3544, + "name": "initialAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3534, + "src": "336:14:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3545, + "name": "initialBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3536, + "src": "352:14:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3543, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "330:5:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "330:37:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3547, + "nodeType": "ExpressionStatement", + "src": "330:37:33" + } + ] + }, + "documentation": null, + "id": 3549, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3539, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3530, + "src": "306:4:33", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3540, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3532, + "src": "312:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3541, + "modifierName": { + "argumentTypes": null, + "id": 3538, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7390, + "src": "300:5:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7390_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "300:19:33" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3530, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "174:18:33", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3529, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "174:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3532, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "202:20:33", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3531, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "202:6:33", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3534, + "mutability": "mutable", + "name": "initialAccount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "232:22:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "232:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3536, + "mutability": "mutable", + "name": "initialBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "264:22:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "164:128:33" + }, + "returnParameters": { + "id": 3542, + "nodeType": "ParameterList", + "parameters": [], + "src": "320:0:33" + }, + "scope": 3550, + "src": "152:222:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3551, + "src": "102:274:33" + } + ], + "src": "33:344:33" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620019e3380380620019e3833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919050505083838160039080519060200190620001e6929190620004a6565b508060049080519060200190620001ff929190620004a6565b506012600560006101000a81548160ff021916908360ff16021790555050506200023082826200023a60201b60201c565b5050505062000555565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620002f2600083836200041860201b60201c565b6200030e816002546200041d60201b62000ac51790919060201c565b6002819055506200036c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200041d60201b62000ac51790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004e957805160ff19168380011785556200051a565b828001600101855582156200051a579182015b8281111562000519578251825591602001919060010190620004fc565b5b5090506200052991906200052d565b5090565b6200055291905b808211156200054e57600081600090555060010162000534565b5090565b90565b61147e80620005656000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146103bf578063a457c2d714610442578063a9059cbb146104a8578063dd62ed3e1461050e576100cf565b806342966c68146102eb57806370a082311461031957806379cc679014610371576100cf565b806306fdde03146100d4578063095ea7b31461015757806318160ddd146101bd57806323b872dd146101db578063313ce567146102615780633950935114610285575b600080fd5b6100dc610586565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011c578082015181840152602081019050610101565b50505050905090810190601f1680156101495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561016d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610628565b604051808215151515815260200191505060405180910390f35b6101c5610646565b6040518082815260200191505060405180910390f35b610247600480360360608110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610650565b604051808215151515815260200191505060405180910390f35b610269610729565b604051808260ff1660ff16815260200191505060405180910390f35b6102d16004803603604081101561029b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610740565b604051808215151515815260200191505060405180910390f35b6103176004803603602081101561030157600080fd5b81019080803590602001909291905050506107f3565b005b61035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610807565b6040518082815260200191505060405180910390f35b6103bd6004803603604081101561038757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061084f565b005b6103c76108b1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104075780820151818401526020810190506103ec565b50505050905090810190601f1680156104345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61048e6004803603604081101561045857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610953565b604051808215151515815260200191505060405180910390f35b6104f4600480360360408110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a20565b604051808215151515815260200191505060405180910390f35b6105706004803603604081101561052457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a3e565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561061e5780601f106105f35761010080835404028352916020019161061e565b820191906000526020600020905b81548152906001019060200180831161060157829003601f168201915b5050505050905090565b600061063c610635610b4d565b8484610b55565b6001905092915050565b6000600254905090565b600061065d848484610d4c565b61071e84610669610b4d565b6107198560405180606001604052806028815260200161136e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106cf610b4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b610b55565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107e961074d610b4d565b846107e4856001600061075e610b4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ac590919063ffffffff16565b610b55565b6001905092915050565b6108046107fe610b4d565b826110cd565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061088e826040518060600160405280602481526020016113966024913961087f8661087a610b4d565b610a3e565b61100d9092919063ffffffff16565b90506108a28361089c610b4d565b83610b55565b6108ac83836110cd565b505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000610a16610960610b4d565b84610a1185604051806060016040528060258152602001611424602591396001600061098a610b4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b610b55565b6001905092915050565b6000610a34610a2d610b4d565b8484610d4c565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bdb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806114006024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113266022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113db6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112e16023913960400191505060405180910390fd5b610e63838383611291565b610ece81604051806060016040528060268152602001611348602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f61816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ac590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561107f578082015181840152602081019050611064565b50505050905090810190601f1680156110ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113ba6021913960400191505060405180910390fd5b61115f82600083611291565b6111ca81604051806060016040528060228152602001611304602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112218160025461129690919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b60006112d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061100d565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220727cb5d3cc6e2d28c8d42a8e87fb189be783bf205b98b5546c457860fd5e8b9464736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146103bf578063a457c2d714610442578063a9059cbb146104a8578063dd62ed3e1461050e576100cf565b806342966c68146102eb57806370a082311461031957806379cc679014610371576100cf565b806306fdde03146100d4578063095ea7b31461015757806318160ddd146101bd57806323b872dd146101db578063313ce567146102615780633950935114610285575b600080fd5b6100dc610586565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011c578082015181840152602081019050610101565b50505050905090810190601f1680156101495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561016d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610628565b604051808215151515815260200191505060405180910390f35b6101c5610646565b6040518082815260200191505060405180910390f35b610247600480360360608110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610650565b604051808215151515815260200191505060405180910390f35b610269610729565b604051808260ff1660ff16815260200191505060405180910390f35b6102d16004803603604081101561029b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610740565b604051808215151515815260200191505060405180910390f35b6103176004803603602081101561030157600080fd5b81019080803590602001909291905050506107f3565b005b61035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610807565b6040518082815260200191505060405180910390f35b6103bd6004803603604081101561038757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061084f565b005b6103c76108b1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104075780820151818401526020810190506103ec565b50505050905090810190601f1680156104345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61048e6004803603604081101561045857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610953565b604051808215151515815260200191505060405180910390f35b6104f4600480360360408110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a20565b604051808215151515815260200191505060405180910390f35b6105706004803603604081101561052457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a3e565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561061e5780601f106105f35761010080835404028352916020019161061e565b820191906000526020600020905b81548152906001019060200180831161060157829003601f168201915b5050505050905090565b600061063c610635610b4d565b8484610b55565b6001905092915050565b6000600254905090565b600061065d848484610d4c565b61071e84610669610b4d565b6107198560405180606001604052806028815260200161136e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106cf610b4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b610b55565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107e961074d610b4d565b846107e4856001600061075e610b4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ac590919063ffffffff16565b610b55565b6001905092915050565b6108046107fe610b4d565b826110cd565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061088e826040518060600160405280602481526020016113966024913961087f8661087a610b4d565b610a3e565b61100d9092919063ffffffff16565b90506108a28361089c610b4d565b83610b55565b6108ac83836110cd565b505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000610a16610960610b4d565b84610a1185604051806060016040528060258152602001611424602591396001600061098a610b4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b610b55565b6001905092915050565b6000610a34610a2d610b4d565b8484610d4c565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bdb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806114006024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113266022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113db6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806112e16023913960400191505060405180910390fd5b610e63838383611291565b610ece81604051806060016040528060268152602001611348602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f61816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ac590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561107f578082015181840152602081019050611064565b50505050905090810190601f1680156110ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611153576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113ba6021913960400191505060405180910390fd5b61115f82600083611291565b6111ca81604051806060016040528060228152602001611304602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100d9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112218160025461129690919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b60006112d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061100d565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220727cb5d3cc6e2d28c8d42a8e87fb189be783bf205b98b5546c457860fd5e8b9464736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Capped.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Capped.json new file mode 100644 index 0000000..25aef56 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Capped.json @@ -0,0 +1,1280 @@ +{ + "fileName": "ERC20Capped.sol", + "contractName": "ERC20Capped", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that adds a cap to the supply of tokens.\n */\nabstract contract ERC20Capped is ERC20 {\n uint256 private _cap;\n\n /**\n * @dev Sets the value of the `cap`. This value is immutable, it can only be\n * set once during construction.\n */\n constructor (uint256 cap) public {\n require(cap > 0, \"ERC20Capped: cap is 0\");\n _cap = cap;\n }\n\n /**\n * @dev Returns the cap on the token's total supply.\n */\n function cap() public view returns (uint256) {\n return _cap;\n }\n\n /**\n * @dev See {ERC20-_beforeTokenTransfer}.\n *\n * Requirements:\n *\n * - minted tokens must not cause the total supply to go over the cap.\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {\n super._beforeTokenTransfer(from, to, amount);\n\n if (from == address(0)) { // When minting tokens\n require(totalSupply().add(amount) <= _cap, \"ERC20Capped: cap exceeded\");\n }\n }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20Capped.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20Capped.sol", + "exportedSymbols": { + "ERC20Capped": [ + 9325 + ] + }, + "id": 9326, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9252, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:86" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 9253, + "nodeType": "ImportDirective", + "scope": 9326, + "sourceUnit": 9195, + "src": "58:21:86", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9255, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "192:5:86", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + "id": 9256, + "nodeType": "InheritanceSpecifier", + "src": "192:5:86" + } + ], + "contractDependencies": [ + 22, + 9194, + 9773 + ], + "contractKind": "contract", + "documentation": { + "id": 9254, + "nodeType": "StructuredDocumentation", + "src": "81:77:86", + "text": " @dev Extension of {ERC20} that adds a cap to the supply of tokens." + }, + "fullyImplemented": false, + "id": 9325, + "linearizedBaseContracts": [ + 9325, + 9194, + 9773, + 22 + ], + "name": "ERC20Capped", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 9258, + "mutability": "mutable", + "name": "_cap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9325, + "src": "204:20:86", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "204:7:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 9275, + "nodeType": "Block", + "src": "398:78:86", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9265, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9261, + "src": "416:3:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "422:1:86", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "416:7:86", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304361707065643a206361702069732030", + "id": 9268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "425:23:86", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_073f3193e2b9c9099973df1adea790edf33994edcd3f57beae2487f3c5bd8828", + "typeString": "literal_string \"ERC20Capped: cap is 0\"" + }, + "value": "ERC20Capped: cap is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_073f3193e2b9c9099973df1adea790edf33994edcd3f57beae2487f3c5bd8828", + "typeString": "literal_string \"ERC20Capped: cap is 0\"" + } + ], + "id": 9264, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "408:7:86", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "408:41:86", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9270, + "nodeType": "ExpressionStatement", + "src": "408:41:86" + }, + { + "expression": { + "argumentTypes": null, + "id": 9273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9271, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9258, + "src": "459:4:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 9272, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9261, + "src": "466:3:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "459:10:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9274, + "nodeType": "ExpressionStatement", + "src": "459:10:86" + } + ] + }, + "documentation": { + "id": 9259, + "nodeType": "StructuredDocumentation", + "src": "231:129:86", + "text": " @dev Sets the value of the `cap`. This value is immutable, it can only be\n set once during construction." + }, + "id": 9276, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9261, + "mutability": "mutable", + "name": "cap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9276, + "src": "378:11:86", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9260, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "378:7:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "377:13:86" + }, + "returnParameters": { + "id": 9263, + "nodeType": "ParameterList", + "parameters": [], + "src": "398:0:86" + }, + "scope": 9325, + "src": "365:111:86", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9284, + "nodeType": "Block", + "src": "600:28:86", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 9282, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9258, + "src": "617:4:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9281, + "id": 9283, + "nodeType": "Return", + "src": "610:11:86" + } + ] + }, + "documentation": { + "id": 9277, + "nodeType": "StructuredDocumentation", + "src": "482:68:86", + "text": " @dev Returns the cap on the token's total supply." + }, + "functionSelector": "355274ea", + "id": 9285, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9278, + "nodeType": "ParameterList", + "parameters": [], + "src": "567:2:86" + }, + "returnParameters": { + "id": 9281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9280, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9285, + "src": "591:7:86", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "591:7:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "590:9:86" + }, + "scope": 9325, + "src": "555:73:86", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9193 + ], + "body": { + "id": 9323, + "nodeType": "Block", + "src": "904:214:86", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9299, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9288, + "src": "941:4:86", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9300, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9290, + "src": "947:2:86", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9301, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9292, + "src": "951:6:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9296, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "914:5:86", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Capped_$9325", + "typeString": "contract super ERC20Capped" + } + }, + "id": 9298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9193, + "src": "914:26:86", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "914:44:86", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9303, + "nodeType": "ExpressionStatement", + "src": "914:44:86" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 9309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9304, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9288, + "src": "973:4:86", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 9307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "989:1:86", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "981:7:86", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "981:7:86", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "981:10:86", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "973:18:86", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 9322, + "nodeType": "IfStatement", + "src": "969:143:86", + "trueBody": { + "id": 9321, + "nodeType": "Block", + "src": "993:119:86", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9314, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9292, + "src": "1056:6:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9311, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8780, + "src": "1038:11:86", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 9312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1038:13:86", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "1038:17:86", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1038:25:86", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 9316, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9258, + "src": "1067:4:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1038:33:86", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304361707065643a20636170206578636565646564", + "id": 9318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1073:27:86", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c0532a65ade852f12d67926b1625bbc98f7eb7c650703bf531fd4e07ded2c49f", + "typeString": "literal_string \"ERC20Capped: cap exceeded\"" + }, + "value": "ERC20Capped: cap exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c0532a65ade852f12d67926b1625bbc98f7eb7c650703bf531fd4e07ded2c49f", + "typeString": "literal_string \"ERC20Capped: cap exceeded\"" + } + ], + "id": 9310, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1030:7:86", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1030:71:86", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9320, + "nodeType": "ExpressionStatement", + "src": "1030:71:86" + } + ] + } + } + ] + }, + "documentation": { + "id": 9286, + "nodeType": "StructuredDocumentation", + "src": "634:167:86", + "text": " @dev See {ERC20-_beforeTokenTransfer}.\n Requirements:\n - minted tokens must not cause the total supply to go over the cap." + }, + "id": 9324, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9294, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "895:8:86" + }, + "parameters": { + "id": 9293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9288, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9324, + "src": "836:12:86", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "836:7:86", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9290, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9324, + "src": "850:10:86", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "850:7:86", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9292, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9324, + "src": "862:14:86", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "862:7:86", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "835:42:86" + }, + "returnParameters": { + "id": 9295, + "nodeType": "ParameterList", + "parameters": [], + "src": "904:0:86" + }, + "scope": 9325, + "src": "806:312:86", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 9326, + "src": "159:961:86" + } + ], + "src": "33:1088:86" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20CappedMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20CappedMock.json new file mode 100644 index 0000000..590c677 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20CappedMock.json @@ -0,0 +1,788 @@ +{ + "fileName": "ERC20CappedMock.sol", + "contractName": "ERC20CappedMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC20/ERC20Capped.sol\";\n\ncontract ERC20CappedMock is ERC20Capped {\n constructor (string memory name, string memory symbol, uint256 cap)\n public ERC20(name, symbol) ERC20Capped(cap)\n { }\n\n function mint(address to, uint256 tokenId) public {\n _mint(to, tokenId);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20CappedMock.sol", + "sourceMap": "100:266:34:-:0;;;146:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;261:3;235:4;241:6;2087:4:71;2079:5;:12;;;;;;;;;;;;:::i;:::-;;2111:6;2101:7;:16;;;;;;;;;;;;:::i;:::-;;2139:2;2127:9;;:14;;;;;;;;;;;;;;;;;;2007:141;;422:1:73;416:3;:7;408:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;466:3;459:4;:10;;;;365:111;146:127:34;;;100:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "100:266:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3256:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4875:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3115:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;555:73:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5587:215:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;279:85:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3412:117:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2407:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6289:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3732:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3962:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2213:81;2250:13;2282:5;2275:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81;:::o;4249:166::-;4332:4;4348:39;4357:12;:10;:12::i;:::-;4371:7;4380:6;4348:8;:39::i;:::-;4404:4;4397:11;;4249:166;;;;:::o;3256:98::-;3309:7;3335:12;;3328:19;;3256:98;:::o;4875:317::-;4981:4;4997:36;5007:6;5015:9;5026:6;4997:9;:36::i;:::-;5043:121;5052:6;5060:12;:10;:12::i;:::-;5074:89;5112:6;5074:89;;;;;;;;;;;;;;;;;:11;:19;5086:6;5074:19;;;;;;;;;;;;;;;:33;5094:12;:10;:12::i;:::-;5074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5043:8;:121::i;:::-;5181:4;5174:11;;4875:317;;;;;:::o;3115:81::-;3156:5;3180:9;;;;;;;;;;;3173:16;;3115:81;:::o;555:73:73:-;591:7;617:4;;610:11;;555:73;:::o;5587:215:71:-;5675:4;5691:83;5700:12;:10;:12::i;:::-;5714:7;5723:50;5762:10;5723:11;:25;5735:12;:10;:12::i;:::-;5723:25;;;;;;;;;;;;;;;:34;5749:7;5723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5691:8;:83::i;:::-;5791:4;5784:11;;5587:215;;;;:::o;279:85:34:-;339:18;345:2;349:7;339:5;:18::i;:::-;279:85;;:::o;3412:117:71:-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;2407:85::-;2446:13;2478:7;2471:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:85;:::o;6289:266::-;6382:4;6398:129;6407:12;:10;:12::i;:::-;6421:7;6430:96;6469:15;6430:96;;;;;;;;;;;;;;;;;:11;:25;6442:12;:10;:12::i;:::-;6430:25;;;;;;;;;;;;;;;:34;6456:7;6430:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6398:8;:129::i;:::-;6544:4;6537:11;;6289:266;;;;:::o;3732:172::-;3818:4;3834:42;3844:12;:10;:12::i;:::-;3858:9;3869:6;3834:9;:42::i;:::-;3893:4;3886:11;;3732:172;;;;:::o;3962:149::-;4051:7;4077:11;:18;4089:5;4077:18;;;;;;;;;;;;;;;:27;4096:7;4077:27;;;;;;;;;;;;;;;;4070:34;;3962:149;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;9353:340:71:-;9471:1;9454:19;;:5;:19;;;;9446:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:1;9532:21;;:7;:21;;;;9524:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9633:6;9603:11;:18;9615:5;9603:18;;;;;;;;;;;;;;;:27;9622:7;9603:27;;;;;;;;;;;;;;;:36;;;;9670:7;9654:32;;9663:5;9654:32;;;9679:6;9654:32;;;;;;;;;;;;;;;;;;9353:340;;;:::o;7029:530::-;7152:1;7134:20;;:6;:20;;;;7126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1;7214:23;;:9;:23;;;;7206:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7288:47;7309:6;7317:9;7328:6;7288:20;:47::i;:::-;7366:71;7388:6;7366:71;;;;;;;;;;;;;;;;;:9;:17;7376:6;7366:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7346:9;:17;7356:6;7346:17;;;;;;;;;;;;;;;:91;;;;7470:32;7495:6;7470:9;:20;7480:9;7470:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;:55;;;;7534:9;7517:35;;7526:6;7517:35;;;7545:6;7517:35;;;;;;;;;;;;;;;;;;7029:530;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;867:176::-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;7829:370:71:-;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;:49::i;:::-;8055:24;8072:6;8055:12;;:16;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;806:312:73:-;914:44;941:4;947:2;951:6;914:26;:44::i;:::-;989:1;973:18;;:4;:18;;;969:143;;;1067:4;;1038:25;1056:6;1038:13;:11;:13::i;:::-;:17;;:25;;;;:::i;:::-;:33;;1030:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;969:143;806:312;;;:::o;10691:92:71:-;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20CappedMock.sol", + "exportedSymbols": { + "ERC20CappedMock": [ + 3586 + ] + }, + "id": 3587, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3552, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:34" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Capped.sol", + "file": "../token/ERC20/ERC20Capped.sol", + "id": 3553, + "nodeType": "ImportDirective", + "scope": 3587, + "sourceUnit": 7522, + "src": "58:40:34", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3554, + "name": "ERC20Capped", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7521, + "src": "128:11:34", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Capped_$7521", + "typeString": "contract ERC20Capped" + } + }, + "id": 3555, + "nodeType": "InheritanceSpecifier", + "src": "128:11:34" + } + ], + "contractDependencies": [ + 26, + 7390, + 7521, + 7969 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3586, + "linearizedBaseContracts": [ + 3586, + 7521, + 7390, + 7969, + 26 + ], + "name": "ERC20CappedMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3571, + "nodeType": "Block", + "src": "270:3:34", + "statements": [] + }, + "documentation": null, + "id": 3572, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3564, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3557, + "src": "235:4:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3565, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3559, + "src": "241:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3566, + "modifierName": { + "argumentTypes": null, + "id": 3563, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7390, + "src": "229:5:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7390_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "229:19:34" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 3568, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3561, + "src": "261:3:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3569, + "modifierName": { + "argumentTypes": null, + "id": 3567, + "name": "ERC20Capped", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7521, + "src": "249:11:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Capped_$7521_$", + "typeString": "type(contract ERC20Capped)" + } + }, + "nodeType": "ModifierInvocation", + "src": "249:16:34" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3557, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3572, + "src": "159:18:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3556, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "159:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3559, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3572, + "src": "179:20:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3558, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "179:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3561, + "mutability": "mutable", + "name": "cap", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3572, + "src": "201:11:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "201:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "158:55:34" + }, + "returnParameters": { + "id": 3570, + "nodeType": "ParameterList", + "parameters": [], + "src": "270:0:34" + }, + "scope": 3586, + "src": "146:127:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3584, + "nodeType": "Block", + "src": "329:35:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3580, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3574, + "src": "345:2:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3581, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3576, + "src": "349:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3579, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "339:5:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "339:18:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3583, + "nodeType": "ExpressionStatement", + "src": "339:18:34" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 3585, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3574, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3585, + "src": "293:10:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3573, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "293:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3576, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3585, + "src": "305:15:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3575, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "305:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "292:29:34" + }, + "returnParameters": { + "id": 3578, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:0:34" + }, + "scope": 3586, + "src": "279:85:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3587, + "src": "100:266:34" + } + ], + "src": "33:334:34" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200179538038062001795833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291905050508083838160039080519060200190620001dd9291906200029d565b508060049080519060200190620001f69291906200029d565b506012600560006101000a81548160ff021916908360ff1602179055505050600081116200028c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f45524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b80600681905550505050506200034c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e057805160ff191683800117855562000311565b8280016001018555821562000311579182015b8281111562000310578251825591602001919060010190620002f3565b5b50905062000320919062000324565b5090565b6200034991905b80821115620003455760008160009055506001016200032b565b5090565b90565b611439806200035c6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063395093511161008c57806395d89b411161006657806395d89b41146103af578063a457c2d714610432578063a9059cbb14610498578063dd62ed3e146104fe576100cf565b806339509351146102a357806340c10f191461030957806370a0823114610357576100cf565b806306fdde03146100d4578063095ea7b31461015757806318160ddd146101bd57806323b872dd146101db578063313ce56714610261578063355274ea14610285575b600080fd5b6100dc610576565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011c578082015181840152602081019050610101565b50505050905090810190601f1680156101495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561016d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610618565b604051808215151515815260200191505060405180910390f35b6101c5610636565b6040518082815260200191505060405180910390f35b610247600480360360608110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610640565b604051808215151515815260200191505060405180910390f35b610269610719565b604051808260ff1660ff16815260200191505060405180910390f35b61028d610730565b6040518082815260200191505060405180910390f35b6102ef600480360360408110156102b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061073a565b604051808215151515815260200191505060405180910390f35b6103556004803603604081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107ed565b005b6103996004803603602081101561036d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fb565b6040518082815260200191505060405180910390f35b6103b7610843565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f75780820151818401526020810190506103dc565b50505050905090810190601f1680156104245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61047e6004803603604081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e5565b604051808215151515815260200191505060405180910390f35b6104e4600480360360408110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109b2565b604051808215151515815260200191505060405180910390f35b6105606004803603604081101561051457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d0565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b5050505050905090565b600061062c610625610a57565b8484610a5f565b6001905092915050565b6000600254905090565b600061064d848484610c56565b61070e84610659610a57565b6107098560405180606001604052806028815260200161136e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106bf610a57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f179092919063ffffffff16565b610a5f565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000600654905090565b60006107e3610747610a57565b846107de8560016000610758610a57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd790919063ffffffff16565b610a5f565b6001905092915050565b6107f7828261105f565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60006109a86108f2610a57565b846109a3856040518060600160405280602581526020016113df602591396001600061091c610a57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f179092919063ffffffff16565b610a5f565b6001905092915050565b60006109c66109bf610a57565b8484610c56565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113bb6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113266022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113966025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806113036023913960400191505060405180910390fd5b610d6d838383611226565b610dd881604051806060016040528060268152602001611348602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f179092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e6b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610fc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f89578082015181840152602081019050610f6e565b50505050905090810190601f168015610fb65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61110e60008383611226565b61112381600254610fd790919063ffffffff16565b60028190555061117a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6112318383836112fd565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112f85760065461128382611275610636565b610fd790919063ffffffff16565b11156112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b5b505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c4648d53045cf8c0014a950fc0597578ecafb3e2aa03640bacb024f28b706c7e64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063395093511161008c57806395d89b411161006657806395d89b41146103af578063a457c2d714610432578063a9059cbb14610498578063dd62ed3e146104fe576100cf565b806339509351146102a357806340c10f191461030957806370a0823114610357576100cf565b806306fdde03146100d4578063095ea7b31461015757806318160ddd146101bd57806323b872dd146101db578063313ce56714610261578063355274ea14610285575b600080fd5b6100dc610576565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011c578082015181840152602081019050610101565b50505050905090810190601f1680156101495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561016d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610618565b604051808215151515815260200191505060405180910390f35b6101c5610636565b6040518082815260200191505060405180910390f35b610247600480360360608110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610640565b604051808215151515815260200191505060405180910390f35b610269610719565b604051808260ff1660ff16815260200191505060405180910390f35b61028d610730565b6040518082815260200191505060405180910390f35b6102ef600480360360408110156102b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061073a565b604051808215151515815260200191505060405180910390f35b6103556004803603604081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107ed565b005b6103996004803603602081101561036d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fb565b6040518082815260200191505060405180910390f35b6103b7610843565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f75780820151818401526020810190506103dc565b50505050905090810190601f1680156104245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61047e6004803603604081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e5565b604051808215151515815260200191505060405180910390f35b6104e4600480360360408110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109b2565b604051808215151515815260200191505060405180910390f35b6105606004803603604081101561051457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d0565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b5050505050905090565b600061062c610625610a57565b8484610a5f565b6001905092915050565b6000600254905090565b600061064d848484610c56565b61070e84610659610a57565b6107098560405180606001604052806028815260200161136e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106bf610a57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f179092919063ffffffff16565b610a5f565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000600654905090565b60006107e3610747610a57565b846107de8560016000610758610a57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd790919063ffffffff16565b610a5f565b6001905092915050565b6107f7828261105f565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60006109a86108f2610a57565b846109a3856040518060600160405280602581526020016113df602591396001600061091c610a57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f179092919063ffffffff16565b610a5f565b6001905092915050565b60006109c66109bf610a57565b8484610c56565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113bb6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113266022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806113966025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806113036023913960400191505060405180910390fd5b610d6d838383611226565b610dd881604051806060016040528060268152602001611348602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f179092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e6b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610fc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f89578082015181840152602081019050610f6e565b50505050905090810190601f168015610fb65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61110e60008383611226565b61112381600254610fd790919063ffffffff16565b60028190555061117a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6112318383836112fd565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112f85760065461128382611275610636565b610fd790919063ffffffff16565b11156112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b5b505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c4648d53045cf8c0014a950fc0597578ecafb3e2aa03640bacb024f28b706c7e64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20DecimalsMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20DecimalsMock.json new file mode 100644 index 0000000..5248c8f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20DecimalsMock.json @@ -0,0 +1,613 @@ +{ + "fileName": "ERC20DecimalsMock.sol", + "contractName": "ERC20DecimalsMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC20/ERC20.sol\";\n\ncontract ERC20DecimalsMock is ERC20 {\n constructor (string memory name, string memory symbol, uint8 decimals) public ERC20(name, symbol) {\n _setupDecimals(decimals);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20DecimalsMock.sol", + "sourceMap": "94:183:35:-:0;;;136:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:4;226:6;2087:4:71;2079:5;:12;;;;;;;;;;;;:::i;:::-;;2111:6;2101:7;:16;;;;;;;;;;;;:::i;:::-;;2139:2;2127:9;;:14;;;;;;;;;;;;;;;;;;2007:141;;244:24:35::1;259:8;244:14;;;:24;;:::i;:::-;136:139:::0;;;94:183;;10016:88:71;10088:9;10076;;:21;;;;;;;;;;;;;;;;;;10016:88;:::o;94:183:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "94:183:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3256:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4875:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3115:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5587:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3412:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2407:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6289:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3732:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3962:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2213:81;2250:13;2282:5;2275:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81;:::o;4249:166::-;4332:4;4348:39;4357:12;:10;:12::i;:::-;4371:7;4380:6;4348:8;:39::i;:::-;4404:4;4397:11;;4249:166;;;;:::o;3256:98::-;3309:7;3335:12;;3328:19;;3256:98;:::o;4875:317::-;4981:4;4997:36;5007:6;5015:9;5026:6;4997:9;:36::i;:::-;5043:121;5052:6;5060:12;:10;:12::i;:::-;5074:89;5112:6;5074:89;;;;;;;;;;;;;;;;;:11;:19;5086:6;5074:19;;;;;;;;;;;;;;;:33;5094:12;:10;:12::i;:::-;5074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5043:8;:121::i;:::-;5181:4;5174:11;;4875:317;;;;;:::o;3115:81::-;3156:5;3180:9;;;;;;;;;;;3173:16;;3115:81;:::o;5587:215::-;5675:4;5691:83;5700:12;:10;:12::i;:::-;5714:7;5723:50;5762:10;5723:11;:25;5735:12;:10;:12::i;:::-;5723:25;;;;;;;;;;;;;;;:34;5749:7;5723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5691:8;:83::i;:::-;5791:4;5784:11;;5587:215;;;;:::o;3412:117::-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;2407:85::-;2446:13;2478:7;2471:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:85;:::o;6289:266::-;6382:4;6398:129;6407:12;:10;:12::i;:::-;6421:7;6430:96;6469:15;6430:96;;;;;;;;;;;;;;;;;:11;:25;6442:12;:10;:12::i;:::-;6430:25;;;;;;;;;;;;;;;:34;6456:7;6430:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6398:8;:129::i;:::-;6544:4;6537:11;;6289:266;;;;:::o;3732:172::-;3818:4;3834:42;3844:12;:10;:12::i;:::-;3858:9;3869:6;3834:9;:42::i;:::-;3893:4;3886:11;;3732:172;;;;:::o;3962:149::-;4051:7;4077:11;:18;4089:5;4077:18;;;;;;;;;;;;;;;:27;4096:7;4077:27;;;;;;;;;;;;;;;;4070:34;;3962:149;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;9353:340:71:-;9471:1;9454:19;;:5;:19;;;;9446:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:1;9532:21;;:7;:21;;;;9524:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9633:6;9603:11;:18;9615:5;9603:18;;;;;;;;;;;;;;;:27;9622:7;9603:27;;;;;;;;;;;;;;;:36;;;;9670:7;9654:32;;9663:5;9654:32;;;9679:6;9654:32;;;;;;;;;;;;;;;;;;9353:340;;;:::o;7029:530::-;7152:1;7134:20;;:6;:20;;;;7126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1;7214:23;;:9;:23;;;;7206:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7288:47;7309:6;7317:9;7328:6;7288:20;:47::i;:::-;7366:71;7388:6;7366:71;;;;;;;;;;;;;;;;;:9;:17;7376:6;7366:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7346:9;:17;7356:6;7346:17;;;;;;;;;;;;;;;:91;;;;7470:32;7495:6;7470:9;:20;7480:9;7470:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;:55;;;;7534:9;7517:35;;7526:6;7517:35;;;7545:6;7517:35;;;;;;;;;;;;;;;;;;7029:530;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;867:176::-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;10691:92:71:-;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20DecimalsMock.sol", + "exportedSymbols": { + "ERC20DecimalsMock": [ + 3610 + ] + }, + "id": 3611, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3588, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:35" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 3589, + "nodeType": "ImportDirective", + "scope": 3611, + "sourceUnit": 7391, + "src": "58:34:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3590, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7390, + "src": "124:5:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$7390", + "typeString": "contract ERC20" + } + }, + "id": 3591, + "nodeType": "InheritanceSpecifier", + "src": "124:5:35" + } + ], + "contractDependencies": [ + 26, + 7390, + 7969 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3610, + "linearizedBaseContracts": [ + 3610, + 7390, + 7969, + 26 + ], + "name": "ERC20DecimalsMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3608, + "nodeType": "Block", + "src": "234:41:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3605, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3597, + "src": "259:8:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 3604, + "name": "_setupDecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7378, + "src": "244:14:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 3606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "244:24:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3607, + "nodeType": "ExpressionStatement", + "src": "244:24:35" + } + ] + }, + "documentation": null, + "id": 3609, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3600, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3593, + "src": "220:4:35", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3601, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "226:6:35", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3602, + "modifierName": { + "argumentTypes": null, + "id": 3599, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7390, + "src": "214:5:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7390_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "214:19:35" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3593, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3609, + "src": "149:18:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3592, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "149:6:35", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3595, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3609, + "src": "169:20:35", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3594, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "169:6:35", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3597, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3609, + "src": "191:14:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 3596, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "191:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "148:58:35" + }, + "returnParameters": { + "id": 3603, + "nodeType": "ParameterList", + "parameters": [], + "src": "234:0:35" + }, + "scope": 3610, + "src": "136:139:35", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3611, + "src": "94:183:35" + } + ], + "src": "33:245:35" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620013fc380380620013fc833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505082828160039080519060200190620001dc9291906200024c565b508060049080519060200190620001f59291906200024c565b506012600560006101000a81548160ff021916908360ff160217905550505062000225816200022e60201b60201c565b505050620002fb565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028f57805160ff1916838001178555620002c0565b82800160010185558215620002c0579182015b82811115620002bf578251825591602001919060010190620002a2565b5b509050620002cf9190620002d3565b5090565b620002f891905b80821115620002f4576000816000905550600101620002da565b5090565b90565b6110f1806200030b6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039a4ad419185c120be3e6ec042dd83df38276b1f8a4b1ef83a776abad2ae28f764736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039a4ad419185c120be3e6ec042dd83df38276b1f8a4b1ef83a776abad2ae28f764736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Detailed.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Detailed.json new file mode 100644 index 0000000..179f41c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Detailed.json @@ -0,0 +1,922 @@ +{ + "fileName": "ERC20Detailed.sol", + "contractName": "ERC20Detailed", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC20.sol\";\n\n/**\n * @dev Optional functions from the ERC20 standard.\n */\ncontract ERC20Detailed is IERC20 {\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of\n * these values are immutable: they can only be set once during\n * construction.\n */\n constructor (string memory name, string memory symbol, uint8 decimals) public {\n _name = name;\n _symbol = symbol;\n _decimals = decimals;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20Detailed.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20Detailed.sol", + "exportedSymbols": { + "ERC20Detailed": [ + 10017 + ] + }, + "id": 10018, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9961, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:122" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 9962, + "nodeType": "ImportDirective", + "scope": 10018, + "sourceUnit": 10217, + "src": "25:22:122", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9963, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "135:6:122", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 9964, + "nodeType": "InheritanceSpecifier", + "src": "135:6:122" + } + ], + "contractDependencies": [ + 10216 + ], + "contractKind": "contract", + "documentation": "@dev Optional functions from the ERC20 standard.", + "fullyImplemented": false, + "id": 10017, + "linearizedBaseContracts": [ + 10017, + 10216 + ], + "name": "ERC20Detailed", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 9966, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 10017, + "src": "148:20:122", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 9965, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "148:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9968, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 10017, + "src": "174:22:122", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 9967, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "174:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9970, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 10017, + "src": "202:23:122", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 9969, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "202:5:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 9991, + "nodeType": "Block", + "src": "494:85:122", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 9981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9979, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9966, + "src": "504:5:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 9980, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9972, + "src": "512:4:122", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "504:12:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 9982, + "nodeType": "ExpressionStatement", + "src": "504:12:122" + }, + { + "expression": { + "argumentTypes": null, + "id": 9985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9983, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9968, + "src": "526:7:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 9984, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9974, + "src": "536:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "526:16:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 9986, + "nodeType": "ExpressionStatement", + "src": "526:16:122" + }, + { + "expression": { + "argumentTypes": null, + "id": 9989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 9987, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9970, + "src": "552:9:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 9988, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9976, + "src": "564:8:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "552:20:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 9990, + "nodeType": "ExpressionStatement", + "src": "552:20:122" + } + ] + }, + "documentation": "@dev Sets the values for `name`, `symbol`, and `decimals`. All three of\nthese values are immutable: they can only be set once during\nconstruction.", + "id": 9992, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9972, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 9992, + "src": "429:18:122", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 9971, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "429:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9974, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 9992, + "src": "449:20:122", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 9973, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "449:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9976, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 9992, + "src": "471:14:122", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 9975, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "471:5:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "428:58:122" + }, + "returnParameters": { + "id": 9978, + "nodeType": "ParameterList", + "parameters": [], + "src": "494:0:122" + }, + "scope": 10017, + "src": "416:163:122", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 9999, + "nodeType": "Block", + "src": "696:29:122", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 9997, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9966, + "src": "713:5:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 9996, + "id": 9998, + "nodeType": "Return", + "src": "706:12:122" + } + ] + }, + "documentation": "@dev Returns the name of the token.", + "id": 10000, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9993, + "nodeType": "ParameterList", + "parameters": [], + "src": "657:2:122" + }, + "returnParameters": { + "id": 9996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9995, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 10000, + "src": "681:13:122", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 9994, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "681:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "680:15:122" + }, + "scope": 10017, + "src": "644:81:122", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 10007, + "nodeType": "Block", + "src": "892:31:122", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10005, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9968, + "src": "909:7:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 10004, + "id": 10006, + "nodeType": "Return", + "src": "902:14:122" + } + ] + }, + "documentation": "@dev Returns the symbol of the token, usually a shorter version of the\nname.", + "id": 10008, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10001, + "nodeType": "ParameterList", + "parameters": [], + "src": "853:2:122" + }, + "returnParameters": { + "id": 10004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10003, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 10008, + "src": "877:13:122", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10002, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "877:6:122", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "876:15:122" + }, + "scope": 10017, + "src": "838:85:122", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 10015, + "nodeType": "Block", + "src": "1520:33:122", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10013, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9970, + "src": "1537:9:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 10012, + "id": 10014, + "nodeType": "Return", + "src": "1530:16:122" + } + ] + }, + "documentation": "@dev Returns the number of decimals used to get its user representation.\nFor example, if `decimals` equals `2`, a balance of `505` tokens should\nbe displayed to a user as `5,05` (`505 / 10 ** 2`).\n * Tokens usually opt for a value of 18, imitating the relationship between\nEther and Wei.\n * NOTE: This information is only used for _display_ purposes: it in\nno way affects any of the arithmetic of the contract, including\n{IERC20-balanceOf} and {IERC20-transfer}.", + "id": 10016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10009, + "nodeType": "ParameterList", + "parameters": [], + "src": "1489:2:122" + }, + "returnParameters": { + "id": 10012, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10011, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "1513:5:122", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10010, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1513:5:122", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1512:7:122" + }, + "scope": 10017, + "src": "1472:81:122", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 10018, + "src": "109:1446:122" + } + ], + "src": "0:1556:122" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20DetailedMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20DetailedMock.json new file mode 100644 index 0000000..60ed862 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20DetailedMock.json @@ -0,0 +1,615 @@ +{ + "fileName": "ERC20DetailedMock.sol", + "contractName": "ERC20DetailedMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../token/ERC20/ERC20Detailed.sol\";\n\ncontract ERC20DetailedMock is ERC20, ERC20Detailed {\n constructor (string memory name, string memory symbol, uint8 decimals)\n public\n ERC20Detailed(name, symbol, decimals)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20DetailedMock.sol", + "sourceMap": "104:259:63:-;;;161:200;8:9:-1;5:2;;;30:1;27;20:12;5:2;161:200:63;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;161:200:63;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;161:200:63;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;161:200:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;161:200:63;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;161:200:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:4;275:6;283:8;512:4:122;504:5;:12;;;;;;;;;;;;:::i;:::-;;536:6;526:7;:16;;;;;;;;;;;;:::i;:::-;;564:8;552:9;;:20;;;;;;;;;;;;;;;;;;416:163;;;161:200:63;;;104:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "104:259:63:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;104:259:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;644:81:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1472:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;838:85:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:85:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:258:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;644:81:122;681:13;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:119:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;1472:81:122:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;3802:207:119:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;1706:108::-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;838:85:122:-;877:13;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:85;:::o;4496:258:119:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;2230:132::-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:119:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20DetailedMock.sol", + "exportedSymbols": { + "ERC20DetailedMock": [ + 5953 + ] + }, + "id": 5954, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5931, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:63" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 5932, + "nodeType": "ImportDirective", + "scope": 5954, + "sourceUnit": 9867, + "src": "25:34:63", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Detailed.sol", + "file": "../token/ERC20/ERC20Detailed.sol", + "id": 5933, + "nodeType": "ImportDirective", + "scope": 5954, + "sourceUnit": 10018, + "src": "60:42:63", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5934, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9866, + "src": "134:5:63", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + }, + "id": 5935, + "nodeType": "InheritanceSpecifier", + "src": "134:5:63" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5936, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10017, + "src": "141:13:63", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$10017", + "typeString": "contract ERC20Detailed" + } + }, + "id": 5937, + "nodeType": "InheritanceSpecifier", + "src": "141:13:63" + } + ], + "contractDependencies": [ + 26, + 9866, + 10017, + 10216 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5953, + "linearizedBaseContracts": [ + 5953, + 10017, + 9866, + 10216, + 26 + ], + "name": "ERC20DetailedMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5951, + "nodeType": "Block", + "src": "297:64:63", + "statements": [] + }, + "documentation": null, + "id": 5952, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5946, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5939, + "src": "269:4:63", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5947, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5941, + "src": "275:6:63", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5948, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5943, + "src": "283:8:63", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 5949, + "modifierName": { + "argumentTypes": null, + "id": 5945, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10017, + "src": "255:13:63", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$10017_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "255:37:63" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5939, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5952, + "src": "174:18:63", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5938, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "174:6:63", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5941, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5952, + "src": "194:20:63", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5940, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "194:6:63", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5943, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 5952, + "src": "216:14:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5942, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "216:5:63", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "173:58:63" + }, + "returnParameters": { + "id": 5950, + "nodeType": "ParameterList", + "parameters": [], + "src": "297:0:63" + }, + "scope": 5953, + "src": "161:200:63", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5954, + "src": "104:259:63" + } + ], + "src": "0:364:63" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620013bd380380620013bd833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291905050508282828260039080519060200190620001dd9291906200021e565b508160049080519060200190620001f69291906200021e565b5080600560006101000a81548160ff021916908360ff160217905550505050505050620002cd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029157825182559160200191906001019062000274565b5b509050620002a19190620002a5565b5090565b620002ca91905b80821115620002c6576000816000905550600101620002ac565b5090565b90565b6110e080620002dd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161101660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161108760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110636024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fce6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fab6023913960400191505060405180910390fd5b610d2381604051806060016040528060268152602001610ff0602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed4578082015181840152602081019050610eb9565b50505050905090810190601f168015610f015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820bc5da5c947634494dc649f13e69f49ff7f80ef9e964c98ee7406d494739abe0c64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161101660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161108760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110636024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fce6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fab6023913960400191505060405180910390fd5b610d2381604051806060016040528060268152602001610ff0602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed4578082015181840152602081019050610eb9565b50505050905090810190601f168015610f015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820bc5da5c947634494dc649f13e69f49ff7f80ef9e964c98ee7406d494739abe0c64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Metadata.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Metadata.json new file mode 100644 index 0000000..fad69cf --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Metadata.json @@ -0,0 +1,425 @@ +{ + "fileName": "ERC20Metadata.sol", + "contractName": "ERC20Metadata", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../token/ERC20/IERC20.sol\";\n\n/**\n * @title ERC-1047 Token Metadata\n * @dev See https://eips.ethereum.org/EIPS/eip-1046\n * @dev {tokenURI} must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047\n */\ncontract ERC20Metadata {\n string private _tokenURI;\n\n constructor (string memory tokenURI_) public {\n _setTokenURI(tokenURI_);\n }\n\n function tokenURI() external view returns (string memory) {\n return _tokenURI;\n }\n\n function _setTokenURI(string memory tokenURI_) internal {\n _tokenURI = tokenURI_;\n }\n}\n", + "sourcePath": "contracts/drafts/ERC1046/ERC20Metadata.sol", + "sourceMap": "258:344:29:-;;;318:85;8:9:-1;5:2;;;30:1;27;20:12;5:2;318:85:29;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;318:85:29;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;318:85:29;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;318:85:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:23;386:9;373:12;;;:23;;:::i;:::-;318:85;258:344;;506:94;584:9;572;:21;;;;;;;;;;;;:::i;:::-;;506:94;:::o;258:344::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "258:344:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;258:344:29;;;;;;;;;;;;;;;;;;;409:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;409:91:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;452:13;484:9;477:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:91;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "tokenURI_", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/drafts/ERC1046/ERC20Metadata.sol", + "exportedSymbols": { + "ERC20Metadata": [ + 3351 + ] + }, + "id": 3352, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3319, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:29" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 3320, + "nodeType": "ImportDirective", + "scope": 3352, + "sourceUnit": 10217, + "src": "25:38:29", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title ERC-1047 Token Metadata\n@dev See https://eips.ethereum.org/EIPS/eip-1046\n@dev {tokenURI} must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047", + "fullyImplemented": true, + "id": 3351, + "linearizedBaseContracts": [ + 3351 + ], + "name": "ERC20Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3322, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 3351, + "src": "287:24:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 3321, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "287:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3331, + "nodeType": "Block", + "src": "363:40:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3328, + "name": "tokenURI_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3324, + "src": "386:9:29", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3327, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "373:12:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "373:23:29", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3330, + "nodeType": "ExpressionStatement", + "src": "373:23:29" + } + ] + }, + "documentation": null, + "id": 3332, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3324, + "name": "tokenURI_", + "nodeType": "VariableDeclaration", + "scope": 3332, + "src": "331:23:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3323, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "331:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "330:25:29" + }, + "returnParameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [], + "src": "363:0:29" + }, + "scope": 3351, + "src": "318:85:29", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3339, + "nodeType": "Block", + "src": "467:33:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3337, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3322, + "src": "484:9:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3336, + "id": 3338, + "nodeType": "Return", + "src": "477:16:29" + } + ] + }, + "documentation": null, + "id": 3340, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3333, + "nodeType": "ParameterList", + "parameters": [], + "src": "426:2:29" + }, + "returnParameters": { + "id": 3336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3335, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3340, + "src": "452:13:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3334, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "452:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:15:29" + }, + "scope": 3351, + "src": "409:91:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 3349, + "nodeType": "Block", + "src": "562:38:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3345, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3322, + "src": "572:9:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3346, + "name": "tokenURI_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3342, + "src": "584:9:29", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "572:21:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 3348, + "nodeType": "ExpressionStatement", + "src": "572:21:29" + } + ] + }, + "documentation": null, + "id": 3350, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3342, + "name": "tokenURI_", + "nodeType": "VariableDeclaration", + "scope": 3350, + "src": "528:23:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3341, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "528:6:29", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "527:25:29" + }, + "returnParameters": { + "id": 3344, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:29" + }, + "scope": 3351, + "src": "506:94:29", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3352, + "src": "258:344:29" + } + ], + "src": "0:603:29" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060405161035b38038061035b8339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b8382019150602082018581111561006957600080fd5b825186600182028301116401000000008211171561008657600080fd5b8083526020830192505050908051906020019080838360005b838110156100ba57808201518184015260208101905061009f565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b506040525050506100fd8161010360201b60201c565b506101c2565b806000908051906020019061011992919061011d565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015e57805160ff191683800117855561018c565b8280016001018555821561018c579182015b8281111561018b578251825591602001919060010190610170565b5b509050610199919061019d565b5090565b6101bf91905b808211156101bb5760008160009055506001016101a3565b5090565b90565b61018a806101d16000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633c130d9014610030575b600080fd5b6100386100b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561007857808201518184015260208101905061005d565b50505050905090810190601f1680156100a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561014b5780601f106101205761010080835404028352916020019161014b565b820191906000526020600020905b81548152906001019060200180831161012e57829003601f168201915b505050505090509056fea265627a7a723158200c4b1ce37702611ed963d98955565e3302e7b9f6302b5404fa238bfa5c91e3d364736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633c130d9014610030575b600080fd5b6100386100b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561007857808201518184015260208101905061005d565b50505050905090810190601f1680156100a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561014b5780601f106101205761010080835404028352916020019161014b565b820191906000526020600020905b81548152906001019060200180831161012e57829003601f168201915b505050505090509056fea265627a7a723158200c4b1ce37702611ed963d98955565e3302e7b9f6302b5404fa238bfa5c91e3d364736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20MetadataMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20MetadataMock.json new file mode 100644 index 0000000..17e098d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20MetadataMock.json @@ -0,0 +1,626 @@ +{ + "fileName": "ERC20MetadataMock.sol", + "contractName": "ERC20MetadataMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../drafts/ERC1046/ERC20Metadata.sol\";\n\ncontract ERC20MetadataMock is ERC20, ERC20Metadata {\n constructor (string memory tokenURI) public ERC20Metadata(tokenURI) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function setTokenURI(string memory tokenURI) public {\n _setTokenURI(tokenURI);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20MetadataMock.sol", + "sourceMap": "107:288:64:-;;;164:132;8:9:-1;5:2;;;30:1;27;20:12;5:2;164:132:64;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;164:132:64;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;164:132:64;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;164:132:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;222:8;373:23:29;386:9;373:12;;;:23;;:::i;:::-;318:85;164:132:64;107:288;;506:94:29;584:9;572;:21;;;;;;;;;;;;:::i;:::-;;506:94;:::o;107:288:64:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "107:288:64:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;107:288:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;409:91:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;409:91:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:108:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4496:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;302:91:64;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;302:91:64;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;302:91:64;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;302:91:64;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;302:91:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;302:91:64;;;;;;;;;;;;;;;:::i;:::-;;2500:149:119;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;409:91:29:-;452:13;484:9;477:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:91;:::o;1706:108:119:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;4496:258::-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;2230:132::-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;302:91:64:-;364:22;377:8;364:12;:22::i;:::-;302:91;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:119:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;506:94:29:-;584:9;572;:21;;;;;;;;;;;;:::i;:::-;;506:94;:::o;107:288:64:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "setTokenURI", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20MetadataMock.sol", + "exportedSymbols": { + "ERC20MetadataMock": [ + 5981 + ] + }, + "id": 5982, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5955, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:64" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 5956, + "nodeType": "ImportDirective", + "scope": 5982, + "sourceUnit": 9867, + "src": "25:34:64", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/drafts/ERC1046/ERC20Metadata.sol", + "file": "../drafts/ERC1046/ERC20Metadata.sol", + "id": 5957, + "nodeType": "ImportDirective", + "scope": 5982, + "sourceUnit": 3352, + "src": "60:45:64", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5958, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9866, + "src": "137:5:64", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + }, + "id": 5959, + "nodeType": "InheritanceSpecifier", + "src": "137:5:64" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5960, + "name": "ERC20Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3351, + "src": "144:13:64", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Metadata_$3351", + "typeString": "contract ERC20Metadata" + } + }, + "id": 5961, + "nodeType": "InheritanceSpecifier", + "src": "144:13:64" + } + ], + "contractDependencies": [ + 26, + 3351, + 9866, + 10216 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5981, + "linearizedBaseContracts": [ + 5981, + 3351, + 9866, + 10216, + 26 + ], + "name": "ERC20MetadataMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5969, + "nodeType": "Block", + "src": "232:64:64", + "statements": [] + }, + "documentation": null, + "id": 5970, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 5966, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5963, + "src": "222:8:64", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 5967, + "modifierName": { + "argumentTypes": null, + "id": 5965, + "name": "ERC20Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3351, + "src": "208:13:64", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Metadata_$3351_$", + "typeString": "type(contract ERC20Metadata)" + } + }, + "nodeType": "ModifierInvocation", + "src": "208:23:64" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5963, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 5970, + "src": "177:22:64", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5962, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "177:6:64", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "176:24:64" + }, + "returnParameters": { + "id": 5968, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:64" + }, + "scope": 5981, + "src": "164:132:64", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5979, + "nodeType": "Block", + "src": "354:39:64", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5976, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5972, + "src": "377:8:64", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5975, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "364:12:64", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 5977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:22:64", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5978, + "nodeType": "ExpressionStatement", + "src": "364:22:64" + } + ] + }, + "documentation": null, + "id": 5980, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5972, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 5980, + "src": "323:22:64", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5971, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "323:6:64", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "322:24:64" + }, + "returnParameters": { + "id": 5974, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:64" + }, + "scope": 5981, + "src": "302:91:64", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5982, + "src": "107:288:64" + } + ], + "src": "0:396:64" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620012e8380380620012e8833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052505050806200010a816200011260201b60201c565b5050620001dd565b80600390805190602001906200012a9291906200012e565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b620001da91905b80821115620001d6576000816000905550600101620001bc565b5090565b90565b6110fb80620001ed6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a0823114610296578063a457c2d7146102ee578063a9059cbb14610354578063dd62ed3e146103ba578063e0df5b6f146104325761009e565b8063095ea7b3146100a357806318160ddd1461010957806323b872dd1461012757806339509351146101ad5780633c130d9014610213575b600080fd5b6100ef600480360360408110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104ed565b604051808215151515815260200191505060405180910390f35b61011161050b565b6040518082815260200191505060405180910390f35b6101936004803603606081101561013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610515565b604051808215151515815260200191505060405180910390f35b6101f9600480360360408110156101c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ee565b604051808215151515815260200191505060405180910390f35b61021b6106a1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025b578082015181840152602081019050610240565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d8600480360360208110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610743565b6040518082815260200191505060405180910390f35b61033a6004803603604081101561030457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061078b565b604051808215151515815260200191505060405180910390f35b6103a06004803603604081101561036a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610858565b604051808215151515815260200191505060405180910390f35b61041c600480360360408110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610876565b6040518082815260200191505060405180910390f35b6104eb6004803603602081101561044857600080fd5b810190808035906020019064010000000081111561046557600080fd5b82018360208201111561047757600080fd5b8035906020019184600183028401116401000000008311171561049957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108fd565b005b60006105016104fa610909565b8484610911565b6001905092915050565b6000600254905090565b6000610522848484610b08565b6105e38461052e610909565b6105de8560405180606001604052806028815260200161103160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610594610909565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbe9092919063ffffffff16565b610911565b600190509392505050565b60006106976105fb610909565b84610692856001600061060c610909565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7e90919063ffffffff16565b610911565b6001905092915050565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107395780601f1061070e57610100808354040283529160200191610739565b820191906000526020600020905b81548152906001019060200180831161071c57829003601f168201915b5050505050905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061084e610798610909565b84610849856040518060600160405280602581526020016110a260259139600160006107c2610909565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbe9092919063ffffffff16565b610911565b6001905092915050565b600061086c610865610909565b8484610b08565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61090681610f06565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061107e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fe96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806110596025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fc66023913960400191505060405180910390fd5b610c7f8160405180606001604052806026815260200161100b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbe9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d12816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e30578082015181840152602081019050610e15565b50505050905090810190601f168015610e5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610efc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b8060039080519060200190610f1c929190610f20565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f6157805160ff1916838001178555610f8f565b82800160010185558215610f8f579182015b82811115610f8e578251825591602001919060010190610f73565b5b509050610f9c9190610fa0565b5090565b610fc291905b80821115610fbe576000816000905550600101610fa6565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158208ffa867f9ae5b2ea9a03698be191eba48f9fcbcb6e5265a26b0192958c87789f64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a0823114610296578063a457c2d7146102ee578063a9059cbb14610354578063dd62ed3e146103ba578063e0df5b6f146104325761009e565b8063095ea7b3146100a357806318160ddd1461010957806323b872dd1461012757806339509351146101ad5780633c130d9014610213575b600080fd5b6100ef600480360360408110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104ed565b604051808215151515815260200191505060405180910390f35b61011161050b565b6040518082815260200191505060405180910390f35b6101936004803603606081101561013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610515565b604051808215151515815260200191505060405180910390f35b6101f9600480360360408110156101c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ee565b604051808215151515815260200191505060405180910390f35b61021b6106a1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025b578082015181840152602081019050610240565b50505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d8600480360360208110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610743565b6040518082815260200191505060405180910390f35b61033a6004803603604081101561030457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061078b565b604051808215151515815260200191505060405180910390f35b6103a06004803603604081101561036a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610858565b604051808215151515815260200191505060405180910390f35b61041c600480360360408110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610876565b6040518082815260200191505060405180910390f35b6104eb6004803603602081101561044857600080fd5b810190808035906020019064010000000081111561046557600080fd5b82018360208201111561047757600080fd5b8035906020019184600183028401116401000000008311171561049957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108fd565b005b60006105016104fa610909565b8484610911565b6001905092915050565b6000600254905090565b6000610522848484610b08565b6105e38461052e610909565b6105de8560405180606001604052806028815260200161103160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610594610909565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbe9092919063ffffffff16565b610911565b600190509392505050565b60006106976105fb610909565b84610692856001600061060c610909565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7e90919063ffffffff16565b610911565b6001905092915050565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107395780601f1061070e57610100808354040283529160200191610739565b820191906000526020600020905b81548152906001019060200180831161071c57829003601f168201915b5050505050905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061084e610798610909565b84610849856040518060600160405280602581526020016110a260259139600160006107c2610909565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbe9092919063ffffffff16565b610911565b6001905092915050565b600061086c610865610909565b8484610b08565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61090681610f06565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061107e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fe96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806110596025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fc66023913960400191505060405180910390fd5b610c7f8160405180606001604052806026815260200161100b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbe9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d12816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610e6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e30578082015181840152602081019050610e15565b50505050905090810190601f168015610e5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610efc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b8060039080519060200190610f1c929190610f20565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f6157805160ff1916838001178555610f8f565b82800160010185558215610f8f579182015b82811115610f8e578251825591602001919060010190610f73565b5b509050610f9c9190610fa0565b5090565b610fc291905b80821115610fbe576000816000905550600101610fa6565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158208ffa867f9ae5b2ea9a03698be191eba48f9fcbcb6e5265a26b0192958c87789f64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Migrator.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Migrator.json new file mode 100644 index 0000000..4f419de --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Migrator.json @@ -0,0 +1,2421 @@ +{ + "fileName": "ERC20Migrator.sol", + "contractName": "ERC20Migrator", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../token/ERC20/ERC20Mintable.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../math/Math.sol\";\n\n/**\n * @title ERC20Migrator\n * @dev This contract can be used to migrate an ERC20 token from one\n * contract to another, where each token holder has to opt-in to the migration.\n * To opt-in, users must approve for this contract the number of tokens they\n * want to migrate. Once the allowance is set up, anyone can trigger the\n * migration to the new token contract. In this way, token holders \"turn in\"\n * their old balance and will be minted an equal amount in the new token.\n * The new token contract must be mintable. For the precise interface refer to\n * OpenZeppelin's {ERC20Mintable}, but the only functions that are needed are\n * {MinterRole-isMinter} and {ERC20Mintable-mint}. The migrator will check\n * that it is a minter for the token.\n * The balance from the legacy token will be transferred to the migrator, as it\n * is migrated, and remain there forever.\n * Although this contract can be used in many different scenarios, the main\n * motivation was to provide a way to migrate ERC20 tokens into an upgradeable\n * version of it using ZeppelinOS. To read more about how this can be done\n * using this implementation, please follow the official documentation site of\n * ZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html\n *\n * Example of usage:\n * ```\n * const migrator = await ERC20Migrator.new(legacyToken.address);\n * await newToken.addMinter(migrator.address);\n * await migrator.beginMigration(newToken.address);\n * ```\n */\ncontract ERC20Migrator {\n using SafeERC20 for IERC20;\n\n /// Address of the old token contract\n IERC20 private _legacyToken;\n\n /// Address of the new token contract\n ERC20Mintable private _newToken;\n\n /**\n * @param legacyToken address of the old token contract\n */\n constructor (IERC20 legacyToken) public {\n require(address(legacyToken) != address(0), \"ERC20Migrator: legacy token is the zero address\");\n _legacyToken = legacyToken;\n }\n\n /**\n * @dev Returns the legacy token that is being migrated.\n */\n function legacyToken() public view returns (IERC20) {\n return _legacyToken;\n }\n\n /**\n * @dev Returns the new token to which we are migrating.\n */\n function newToken() public view returns (IERC20) {\n return _newToken;\n }\n\n /**\n * @dev Begins the migration by setting which is the new token that will be\n * minted. This contract must be a minter for the new token.\n * @param newToken_ the token that will be minted\n */\n function beginMigration(ERC20Mintable newToken_) public {\n require(address(_newToken) == address(0), \"ERC20Migrator: migration already started\");\n require(address(newToken_) != address(0), \"ERC20Migrator: new token is the zero address\");\n //solhint-disable-next-line max-line-length\n require(newToken_.isMinter(address(this)), \"ERC20Migrator: not a minter for new token\");\n\n _newToken = newToken_;\n }\n\n /**\n * @dev Transfers part of an account's balance in the old token to this\n * contract, and mints the same amount of new tokens for that account.\n * @param account whose tokens will be migrated\n * @param amount amount of tokens to be migrated\n */\n function migrate(address account, uint256 amount) public {\n require(address(_newToken) != address(0), \"ERC20Migrator: migration not started\");\n _legacyToken.safeTransferFrom(account, address(this), amount);\n _newToken.mint(account, amount);\n }\n\n /**\n * @dev Transfers all of an account's allowed balance in the old token to\n * this contract, and mints the same amount of new tokens for that account.\n * @param account whose tokens will be migrated\n */\n function migrateAll(address account) public {\n uint256 balance = _legacyToken.balanceOf(account);\n uint256 allowance = _legacyToken.allowance(account, address(this));\n uint256 amount = Math.min(balance, allowance);\n migrate(account, amount);\n }\n}\n", + "sourcePath": "contracts/drafts/ERC20Migrator.sol", + "sourceMap": "1627:2530:30:-;;;1921:187;8:9:-1;5:2;;;30:1;27;20:12;5:2;1921:187:30;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1921:187:30;;;;;;;;;;;;;;;;2011:1;1979:34;;1987:11;1979:34;;;;1971:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:11;2075:12;;:26;;;;;;;;;;;;;;;;;;1921:187;1627:2530;;;;;;", + "deployedSourceMap": "1627:2530:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1627:2530:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2665:438;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2665:438:30;;;;;;;;;;;;;;;;;;;:::i;:::-;;2191:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3880:275;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3880:275:30;;;;;;;;;;;;;;;;;;;:::i;:::-;;3381:267;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3381:267:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2362:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2665:438;2769:1;2739:32;;2747:9;;;;;;;;;;;2739:32;;;2731:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2864:1;2834:32;;2842:9;2834:32;;;;2826:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2985:9;:18;;;3012:4;2985:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2985:33:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2985:33:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2985:33:30;;;;;;;;;;;;;;;;2977:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3087:9;3075;;:21;;;;;;;;;;;;;;;;;;2665:438;:::o;2191:88::-;2235:6;2260:12;;;;;;;;;;;2253:19;;2191:88;:::o;3880:275::-;3934:15;3952:12;;;;;;;;;;;:22;;;3975:7;3952:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3952:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3952:31:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3952:31:30;;;;;;;;;;;;;;;;3934:49;;3993:17;4013:12;;;;;;;;;;;:22;;;4036:7;4053:4;4013:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4013:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4013:46:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4013:46:30;;;;;;;;;;;;;;;;3993:66;;4069:14;4086:28;4095:7;4104:9;4086:8;:28::i;:::-;4069:45;;4124:24;4132:7;4141:6;4124:7;:24::i;:::-;3880:275;;;;:::o;3381:267::-;3486:1;3456:32;;3464:9;;;;;;;;;;;3456:32;;;;3448:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3539:61;3569:7;3586:4;3593:6;3539:12;;;;;;;;;;;:29;;;;:61;;;;;;:::i;:::-;3610:9;;;;;;;;;;;:14;;;3625:7;3634:6;3610:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3610:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3610:31:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3610:31:30;;;;;;;;;;;;;;;;;3381:267;;:::o;2362:82::-;2403:6;2428:9;;;;;;;;;;;2421:16;;2362:82;:::o;358:104:44:-;416:7;446:1;442;:5;:13;;454:1;442:13;;;450:1;442:13;435:20;;358:104;;;;:::o;842:202:126:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:126;942:18;:95::i;:::-;842:202;;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "legacyToken", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract ERC20Mintable", + "name": "newToken_", + "type": "address" + } + ], + "name": "beginMigration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "legacyToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "migrate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "migrateAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "newToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/drafts/ERC20Migrator.sol", + "exportedSymbols": { + "ERC20Migrator": [ + 3516 + ] + }, + "id": 3517, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3353, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:30" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 3354, + "nodeType": "ImportDirective", + "scope": 3517, + "sourceUnit": 10217, + "src": "25:35:30", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 3355, + "nodeType": "ImportDirective", + "scope": 3517, + "sourceUnit": 10046, + "src": "61:42:30", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 3356, + "nodeType": "ImportDirective", + "scope": 3517, + "sourceUnit": 10437, + "src": "104:38:30", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 3357, + "nodeType": "ImportDirective", + "scope": 3517, + "sourceUnit": 5113, + "src": "143:26:30", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title ERC20Migrator\n@dev This contract can be used to migrate an ERC20 token from one\ncontract to another, where each token holder has to opt-in to the migration.\nTo opt-in, users must approve for this contract the number of tokens they\nwant to migrate. Once the allowance is set up, anyone can trigger the\nmigration to the new token contract. In this way, token holders \"turn in\"\ntheir old balance and will be minted an equal amount in the new token.\nThe new token contract must be mintable. For the precise interface refer to\nOpenZeppelin's {ERC20Mintable}, but the only functions that are needed are\n{MinterRole-isMinter} and {ERC20Mintable-mint}. The migrator will check\nthat it is a minter for the token.\nThe balance from the legacy token will be transferred to the migrator, as it\nis migrated, and remain there forever.\nAlthough this contract can be used in many different scenarios, the main\nmotivation was to provide a way to migrate ERC20 tokens into an upgradeable\nversion of it using ZeppelinOS. To read more about how this can be done\nusing this implementation, please follow the official documentation site of\nZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html\n * Example of usage:\n```\nconst migrator = await ERC20Migrator.new(legacyToken.address);\nawait newToken.addMinter(migrator.address);\nawait migrator.beginMigration(newToken.address);\n```", + "fullyImplemented": true, + "id": 3516, + "linearizedBaseContracts": [ + 3516 + ], + "name": "ERC20Migrator", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3360, + "libraryName": { + "contractScope": null, + "id": 3358, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10436, + "src": "1662:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$10436", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "1656:27:30", + "typeName": { + "contractScope": null, + "id": 3359, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "1676:6:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 3362, + "name": "_legacyToken", + "nodeType": "VariableDeclaration", + "scope": 3516, + "src": "1731:27:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3361, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "1731:6:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3364, + "name": "_newToken", + "nodeType": "VariableDeclaration", + "scope": 3516, + "src": "1807:31:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 3363, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "1807:13:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3384, + "nodeType": "Block", + "src": "1961:147:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3371, + "name": "legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3366, + "src": "1987:11:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + ], + "id": 3370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1979:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1979:20:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2011:1:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2003:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2003:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1979:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d69677261746f723a206c656761637920746f6b656e20697320746865207a65726f2061646472657373", + "id": 3377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2015:49:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55906938489dde3415770fe1e3ebc10fdb1a19e109fd0a0a56a2bdb5d580cd94", + "typeString": "literal_string \"ERC20Migrator: legacy token is the zero address\"" + }, + "value": "ERC20Migrator: legacy token is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_55906938489dde3415770fe1e3ebc10fdb1a19e109fd0a0a56a2bdb5d580cd94", + "typeString": "literal_string \"ERC20Migrator: legacy token is the zero address\"" + } + ], + "id": 3369, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1971:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1971:94:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3379, + "nodeType": "ExpressionStatement", + "src": "1971:94:30" + }, + { + "expression": { + "argumentTypes": null, + "id": 3382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3380, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "2075:12:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3381, + "name": "legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3366, + "src": "2090:11:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "src": "2075:26:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 3383, + "nodeType": "ExpressionStatement", + "src": "2075:26:30" + } + ] + }, + "documentation": "@param legacyToken address of the old token contract", + "id": 3385, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3366, + "name": "legacyToken", + "nodeType": "VariableDeclaration", + "scope": 3385, + "src": "1934:18:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3365, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "1934:6:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1933:20:30" + }, + "returnParameters": { + "id": 3368, + "nodeType": "ParameterList", + "parameters": [], + "src": "1961:0:30" + }, + "scope": 3516, + "src": "1921:187:30", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3392, + "nodeType": "Block", + "src": "2243:36:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3390, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "2260:12:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 3389, + "id": 3391, + "nodeType": "Return", + "src": "2253:19:30" + } + ] + }, + "documentation": "@dev Returns the legacy token that is being migrated.", + "id": 3393, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "legacyToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3386, + "nodeType": "ParameterList", + "parameters": [], + "src": "2211:2:30" + }, + "returnParameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3388, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3393, + "src": "2235:6:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3387, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "2235:6:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2234:8:30" + }, + "scope": 3516, + "src": "2191:88:30", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3400, + "nodeType": "Block", + "src": "2411:33:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3398, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "2428:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "functionReturnParameters": 3397, + "id": 3399, + "nodeType": "Return", + "src": "2421:16:30" + } + ] + }, + "documentation": "@dev Returns the new token to which we are migrating.", + "id": 3401, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "newToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3394, + "nodeType": "ParameterList", + "parameters": [], + "src": "2379:2:30" + }, + "returnParameters": { + "id": 3397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3396, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3401, + "src": "2403:6:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 3395, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "2403:6:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2402:8:30" + }, + "scope": 3516, + "src": "2362:82:30", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3442, + "nodeType": "Block", + "src": "2721:382:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3408, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "2747:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + ], + "id": 3407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2739:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2739:18:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2769:1:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2761:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2761:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2739:32:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d69677261746f723a206d6967726174696f6e20616c72656164792073746172746564", + "id": 3414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2773:42:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_43d231e67995a913d31afd296b73bcffb37fdd3b493753af23e38cf2823bd1a8", + "typeString": "literal_string \"ERC20Migrator: migration already started\"" + }, + "value": "ERC20Migrator: migration already started" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_43d231e67995a913d31afd296b73bcffb37fdd3b493753af23e38cf2823bd1a8", + "typeString": "literal_string \"ERC20Migrator: migration already started\"" + } + ], + "id": 3406, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2731:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2731:85:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3416, + "nodeType": "ExpressionStatement", + "src": "2731:85:30" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3419, + "name": "newToken_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3403, + "src": "2842:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + ], + "id": 3418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2834:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2834:18:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2864:1:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2856:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2856:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2834:32:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d69677261746f723a206e657720746f6b656e20697320746865207a65726f2061646472657373", + "id": 3425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2868:46:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_de30d0191638eeba679b70a5b1eab5912fb8401afe6bc02e43b36a1706ceb8ff", + "typeString": "literal_string \"ERC20Migrator: new token is the zero address\"" + }, + "value": "ERC20Migrator: new token is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de30d0191638eeba679b70a5b1eab5912fb8401afe6bc02e43b36a1706ceb8ff", + "typeString": "literal_string \"ERC20Migrator: new token is the zero address\"" + } + ], + "id": 3417, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2826:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2826:89:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3427, + "nodeType": "ExpressionStatement", + "src": "2826:89:30" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3432, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14049, + "src": "3012:4:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$3516", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$3516", + "typeString": "contract ERC20Migrator" + } + ], + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3004:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3004:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3429, + "name": "newToken_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3403, + "src": "2985:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 3430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMinter", + "nodeType": "MemberAccess", + "referencedDeclaration": 1354, + "src": "2985:18:30", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 3434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2985:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d69677261746f723a206e6f742061206d696e74657220666f72206e657720746f6b656e", + "id": 3435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3020:43:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8f65b333fed43be187aa56053bf74964fd6f5bc81d97e37aee2757544efb3cff", + "typeString": "literal_string \"ERC20Migrator: not a minter for new token\"" + }, + "value": "ERC20Migrator: not a minter for new token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8f65b333fed43be187aa56053bf74964fd6f5bc81d97e37aee2757544efb3cff", + "typeString": "literal_string \"ERC20Migrator: not a minter for new token\"" + } + ], + "id": 3428, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2977:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2977:87:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3437, + "nodeType": "ExpressionStatement", + "src": "2977:87:30" + }, + { + "expression": { + "argumentTypes": null, + "id": 3440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3438, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "3075:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3439, + "name": "newToken_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3403, + "src": "3087:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "src": "3075:21:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 3441, + "nodeType": "ExpressionStatement", + "src": "3075:21:30" + } + ] + }, + "documentation": "@dev Begins the migration by setting which is the new token that will be\nminted. This contract must be a minter for the new token.\n@param newToken_ the token that will be minted", + "id": 3443, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beginMigration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3404, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3403, + "name": "newToken_", + "nodeType": "VariableDeclaration", + "scope": 3443, + "src": "2689:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 3402, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "2689:13:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2688:25:30" + }, + "returnParameters": { + "id": 3405, + "nodeType": "ParameterList", + "parameters": [], + "src": "2721:0:30" + }, + "scope": 3516, + "src": "2665:438:30", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3478, + "nodeType": "Block", + "src": "3438:210:30", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3452, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "3464:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + ], + "id": 3451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3456:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3456:18:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3486:1:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3478:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3478:10:30", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3456:32:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d69677261746f723a206d6967726174696f6e206e6f742073746172746564", + "id": 3458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3490:38:30", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c4c4b872080adf8f3a9e8d62dd2f802ef65b4dd2517036062744c5643cfffdc0", + "typeString": "literal_string \"ERC20Migrator: migration not started\"" + }, + "value": "ERC20Migrator: migration not started" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c4c4b872080adf8f3a9e8d62dd2f802ef65b4dd2517036062744c5643cfffdc0", + "typeString": "literal_string \"ERC20Migrator: migration not started\"" + } + ], + "id": 3450, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "3448:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3448:81:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3460, + "nodeType": "ExpressionStatement", + "src": "3448:81:30" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3464, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3445, + "src": "3569:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3466, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14049, + "src": "3586:4:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$3516", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$3516", + "typeString": "contract ERC20Migrator" + } + ], + "id": 3465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3578:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3578:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3468, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "3593:6:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3461, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "3539:12:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 3463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 10274, + "src": "3539:29:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10216_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 3469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3539:61:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3470, + "nodeType": "ExpressionStatement", + "src": "3539:61:30" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3474, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3445, + "src": "3625:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3475, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "3634:6:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3471, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "3610:9:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 10044, + "src": "3610:14:30", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 3476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3610:31:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3477, + "nodeType": "ExpressionStatement", + "src": "3610:31:30" + } + ] + }, + "documentation": "@dev Transfers part of an account's balance in the old token to this\ncontract, and mints the same amount of new tokens for that account.\n@param account whose tokens will be migrated\n@param amount amount of tokens to be migrated", + "id": 3479, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "migrate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3445, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3479, + "src": "3398:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3398:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3447, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3479, + "src": "3415:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3415:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3397:33:30" + }, + "returnParameters": { + "id": 3449, + "nodeType": "ParameterList", + "parameters": [], + "src": "3438:0:30" + }, + "scope": 3516, + "src": "3381:267:30", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3514, + "nodeType": "Block", + "src": "3924:231:30", + "statements": [ + { + "assignments": [ + 3485 + ], + "declarations": [ + { + "constant": false, + "id": 3485, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 3514, + "src": "3934:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3934:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3490, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3488, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "3975:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3486, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "3952:12:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 3487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 10161, + "src": "3952:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3952:31:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3934:49:30" + }, + { + "assignments": [ + 3492 + ], + "declarations": [ + { + "constant": false, + "id": 3492, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 3514, + "src": "3993:17:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3993:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3500, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3495, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "4036:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3497, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14049, + "src": "4053:4:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$3516", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$3516", + "typeString": "contract ERC20Migrator" + } + ], + "id": 3496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4045:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4045:13:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3493, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "4013:12:30", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 3494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 10179, + "src": "4013:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4013:46:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3993:66:30" + }, + { + "assignments": [ + 3502 + ], + "declarations": [ + { + "constant": false, + "id": 3502, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3514, + "src": "4069:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4069:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3508, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3505, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3485, + "src": "4095:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3506, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "4104:9:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3503, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5112, + "src": "4086:4:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$5112_$", + "typeString": "type(library Math)" + } + }, + "id": 3504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 5079, + "src": "4086:8:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4086:28:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4069:45:30" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3510, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "4132:7:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3511, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3502, + "src": "4141:6:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3509, + "name": "migrate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3479, + "src": "4124:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4124:24:30", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3513, + "nodeType": "ExpressionStatement", + "src": "4124:24:30" + } + ] + }, + "documentation": "@dev Transfers all of an account's allowed balance in the old token to\nthis contract, and mints the same amount of new tokens for that account.\n@param account whose tokens will be migrated", + "id": 3515, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "migrateAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3481, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3515, + "src": "3900:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3900:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3899:17:30" + }, + "returnParameters": { + "id": 3483, + "nodeType": "ParameterList", + "parameters": [], + "src": "3924:0:30" + }, + "scope": 3516, + "src": "3880:275:30", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3517, + "src": "1627:2530:30" + } + ], + "src": "0:4158:30" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051610e80380380610e808339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180610e51602f913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610d378061011a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063104d26141461005c57806313155455146100a05780635a8cadb1146100ea578063ad68ebf71461012e578063c42bd05a1461017c575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101c6565b005b6100a8610444565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012c6004803603602081101561010057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061046d565b005b61017a6004803603604081101561014457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610679565b005b610184610858565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461026d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610c386028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610cad602c913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663aa271e1a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561037057600080fd5b505afa158015610384573d6000803e3d6000fd5b505050506040513d602081101561039a57600080fd5b8101908080519060200190929190505050610400576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610c606029913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b8101908080519060200190929190505050905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b8101908080519060200190929190505050905060006106678383610882565b90506106738482610679565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610c896024913960400191505060405180910390fd5b61076f8230836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661089b909392919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561081857600080fd5b505af115801561082c573d6000803e3d6000fd5b505050506040513d602081101561084257600080fd5b8101908080519060200190929190505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008183106108915781610893565b825b905092915050565b61099b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506109a1565b50505050565b6109c08273ffffffffffffffffffffffffffffffffffffffff16610bec565b610a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610a815780518252602082019150602081019050602083039250610a5e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ae3576040519150601f19603f3d011682016040523d82523d6000602084013e610ae8565b606091505b509150915081610b60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610be657808060200190516020811015610b7f57600080fd5b8101908080519060200190929190505050610be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610cd9602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610c2e57506000801b8214155b9250505091905056fe45524332304d69677261746f723a206d6967726174696f6e20616c7265616479207374617274656445524332304d69677261746f723a206e6f742061206d696e74657220666f72206e657720746f6b656e45524332304d69677261746f723a206d6967726174696f6e206e6f74207374617274656445524332304d69677261746f723a206e657720746f6b656e20697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158205a064192404be6131cfc0b78bc909dfcd8e9efb27ac3c1942abf79d69361574564736f6c6343000511003245524332304d69677261746f723a206c656761637920746f6b656e20697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063104d26141461005c57806313155455146100a05780635a8cadb1146100ea578063ad68ebf71461012e578063c42bd05a1461017c575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101c6565b005b6100a8610444565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012c6004803603602081101561010057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061046d565b005b61017a6004803603604081101561014457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610679565b005b610184610858565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461026d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610c386028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610cad602c913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663aa271e1a306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561037057600080fd5b505afa158015610384573d6000803e3d6000fd5b505050506040513d602081101561039a57600080fd5b8101908080519060200190929190505050610400576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180610c606029913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b8101908080519060200190929190505050905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b8101908080519060200190929190505050905060006106678383610882565b90506106738482610679565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610c896024913960400191505060405180910390fd5b61076f8230836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661089b909392919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561081857600080fd5b505af115801561082c573d6000803e3d6000fd5b505050506040513d602081101561084257600080fd5b8101908080519060200190929190505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008183106108915781610893565b825b905092915050565b61099b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506109a1565b50505050565b6109c08273ffffffffffffffffffffffffffffffffffffffff16610bec565b610a32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610a815780518252602082019150602081019050602083039250610a5e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ae3576040519150601f19603f3d011682016040523d82523d6000602084013e610ae8565b606091505b509150915081610b60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610be657808060200190516020811015610b7f57600080fd5b8101908080519060200190929190505050610be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610cd9602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610c2e57506000801b8214155b9250505091905056fe45524332304d69677261746f723a206d6967726174696f6e20616c7265616479207374617274656445524332304d69677261746f723a206e6f742061206d696e74657220666f72206e657720746f6b656e45524332304d69677261746f723a206d6967726174696f6e206e6f74207374617274656445524332304d69677261746f723a206e657720746f6b656e20697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158205a064192404be6131cfc0b78bc909dfcd8e9efb27ac3c1942abf79d69361574564736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Mintable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Mintable.json new file mode 100644 index 0000000..bbc691e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Mintable.json @@ -0,0 +1,703 @@ +{ + "fileName": "ERC20Mintable.sol", + "contractName": "ERC20Mintable", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n/**\n * @dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},\n * which have permission to mint (create) new tokens as they see fit.\n *\n * At construction, the deployer of the contract is the only minter.\n */\ncontract ERC20Mintable is ERC20, MinterRole {\n /**\n * @dev See {ERC20-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the {MinterRole}.\n */\n function mint(address account, uint256 amount) public onlyMinter returns (bool) {\n _mint(account, amount);\n return true;\n }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20Mintable.sol", + "sourceMap": "322:322:123:-;;;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;322:322:123;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;322:322:123:-;;;;;;;", + "deployedSourceMap": "322:322:123:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:322:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;502:140:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;502:140:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;4496:258:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;494:107:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2500:149;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;502:140:123:-;576:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:123;598:7;607:6;592:5;:22::i;:::-;631:4;624:11;;502:140;;;;:::o;1706:108:119:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:119:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;494:107:8:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;2230:132:119:-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:119:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;5962:302:119:-;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "exportedSymbols": { + "ERC20Mintable": [ + 10045 + ] + }, + "id": 10046, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10019, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:123" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 10020, + "nodeType": "ImportDirective", + "scope": 10046, + "sourceUnit": 9867, + "src": "25:21:123", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 10021, + "nodeType": "ImportDirective", + "scope": 10046, + "sourceUnit": 1409, + "src": "47:43:123", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10022, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9866, + "src": "348:5:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + }, + "id": 10023, + "nodeType": "InheritanceSpecifier", + "src": "348:5:123" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10024, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1408, + "src": "355:10:123", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$1408", + "typeString": "contract MinterRole" + } + }, + "id": 10025, + "nodeType": "InheritanceSpecifier", + "src": "355:10:123" + } + ], + "contractDependencies": [ + 26, + 1408, + 9866, + 10216 + ], + "contractKind": "contract", + "documentation": "@dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},\nwhich have permission to mint (create) new tokens as they see fit.\n * At construction, the deployer of the contract is the only minter.", + "fullyImplemented": true, + "id": 10045, + "linearizedBaseContracts": [ + 10045, + 1408, + 9866, + 10216, + 26 + ], + "name": "ERC20Mintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 10043, + "nodeType": "Block", + "src": "582:60:123", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10037, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10027, + "src": "598:7:123", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10038, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10029, + "src": "607:6:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10036, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "592:5:123", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "592:22:123", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10040, + "nodeType": "ExpressionStatement", + "src": "592:22:123" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 10041, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "631:4:123", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 10035, + "id": 10042, + "nodeType": "Return", + "src": "624:11:123" + } + ] + }, + "documentation": "@dev See {ERC20-_mint}.\n * Requirements:\n * - the caller must have the {MinterRole}.", + "id": 10044, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 10032, + "modifierName": { + "argumentTypes": null, + "id": 10031, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "556:10:123", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "556:10:123" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10027, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 10044, + "src": "516:15:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "516:7:123", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10029, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 10044, + "src": "533:14:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10028, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "533:7:123", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "515:33:123" + }, + "returnParameters": { + "id": 10035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10034, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 10044, + "src": "576:4:123", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10033, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "576:4:123", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "575:6:123" + }, + "scope": 10045, + "src": "502:140:123", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 10046, + "src": "322:322:123" + } + ], + "src": "0:645:123" + }, + "bytecode": "0x608060405262000024620000186200002a60201b60201c565b6200003260201b60201c565b62000257565b600033905090565b6200004d8160036200009360201b620012a81790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620000a582826200017760201b60201c565b1562000119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000200576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620018506022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115e980620002676000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146102e7578063986502751461032b578063a457c2d714610335578063a9059cbb1461039b578063aa271e1a14610401578063dd62ed3e1461045d576100b4565b8063095ea7b3146100b957806318160ddd1461011f57806323b872dd1461013d57806339509351146101c357806340c10f191461022957806370a082311461028f575b600080fd5b610105600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104d5565b604051808215151515815260200191505060405180910390f35b6101276104f3565b6040518082815260200191505060405180910390f35b6101a96004803603606081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104fd565b604051808215151515815260200191505060405180910390f35b61020f600480360360408110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d6565b604051808215151515815260200191505060405180910390f35b6102756004803603604081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610689565b604051808215151515815260200191505060405180910390f35b6102d1600480360360208110156102a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610704565b6040518082815260200191505060405180910390f35b610329600480360360208110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061074c565b005b6103336107bd565b005b6103816004803603604081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107cf565b604051808215151515815260200191505060405180910390f35b6103e7600480360360408110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061089c565b604051808215151515815260200191505060405180910390f35b6104436004803603602081101561041757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ba565b604051808215151515815260200191505060405180910390f35b6104bf6004803603604081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108d7565b6040518082815260200191505060405180910390f35b60006104e96104e261095e565b8484610966565b6001905092915050565b6000600254905090565b600061050a848484610b5d565b6105cb8461051661095e565b6105c6856040518060600160405280602881526020016114fd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061057c61095e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e139092919063ffffffff16565b610966565b600190509392505050565b600061067f6105e361095e565b8461067a85600160006105f461095e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed390919063ffffffff16565b610966565b6001905092915050565b600061069b61069661095e565b6108ba565b6106f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ac6030913960400191505060405180910390fd5b6106fa8383610f5b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61075c61075761095e565b6108ba565b6107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ac6030913960400191505060405180910390fd5b6107ba81611116565b50565b6107cd6107c861095e565b611170565b565b60006108926107dc61095e565b8461088d85604051806060016040528060258152602001611590602591396001600061080661095e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e139092919063ffffffff16565b610966565b6001905092915050565b60006108b06108a961095e565b8484610b5d565b6001905092915050565b60006108d08260036111ca90919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061156c6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114646022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806115476025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806114416023913960400191505060405180910390fd5b610cd481604051806060016040528060268152602001611486602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e139092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d67816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610ec0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e85578082015181840152602081019050610e6a565b50505050905090810190601f168015610eb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610f51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61101381600254610ed390919063ffffffff16565b60028190555061106a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61112a8160036112a890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61118481600361138390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115256022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6112b282826111ca565b15611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61138d82826111ca565b6113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806114dc6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582056b457a9e99c067de7470a4315f2c66cf40386b2ff0ce025ab6bdb6e61eec68664736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146102e7578063986502751461032b578063a457c2d714610335578063a9059cbb1461039b578063aa271e1a14610401578063dd62ed3e1461045d576100b4565b8063095ea7b3146100b957806318160ddd1461011f57806323b872dd1461013d57806339509351146101c357806340c10f191461022957806370a082311461028f575b600080fd5b610105600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104d5565b604051808215151515815260200191505060405180910390f35b6101276104f3565b6040518082815260200191505060405180910390f35b6101a96004803603606081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104fd565b604051808215151515815260200191505060405180910390f35b61020f600480360360408110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d6565b604051808215151515815260200191505060405180910390f35b6102756004803603604081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610689565b604051808215151515815260200191505060405180910390f35b6102d1600480360360208110156102a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610704565b6040518082815260200191505060405180910390f35b610329600480360360208110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061074c565b005b6103336107bd565b005b6103816004803603604081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107cf565b604051808215151515815260200191505060405180910390f35b6103e7600480360360408110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061089c565b604051808215151515815260200191505060405180910390f35b6104436004803603602081101561041757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ba565b604051808215151515815260200191505060405180910390f35b6104bf6004803603604081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108d7565b6040518082815260200191505060405180910390f35b60006104e96104e261095e565b8484610966565b6001905092915050565b6000600254905090565b600061050a848484610b5d565b6105cb8461051661095e565b6105c6856040518060600160405280602881526020016114fd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061057c61095e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e139092919063ffffffff16565b610966565b600190509392505050565b600061067f6105e361095e565b8461067a85600160006105f461095e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed390919063ffffffff16565b610966565b6001905092915050565b600061069b61069661095e565b6108ba565b6106f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ac6030913960400191505060405180910390fd5b6106fa8383610f5b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61075c61075761095e565b6108ba565b6107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ac6030913960400191505060405180910390fd5b6107ba81611116565b50565b6107cd6107c861095e565b611170565b565b60006108926107dc61095e565b8461088d85604051806060016040528060258152602001611590602591396001600061080661095e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e139092919063ffffffff16565b610966565b6001905092915050565b60006108b06108a961095e565b8484610b5d565b6001905092915050565b60006108d08260036111ca90919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061156c6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114646022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806115476025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806114416023913960400191505060405180910390fd5b610cd481604051806060016040528060268152602001611486602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e139092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d67816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610ec0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e85578082015181840152602081019050610e6a565b50505050905090810190601f168015610eb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610f51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61101381600254610ed390919063ffffffff16565b60028190555061106a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61112a8160036112a890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61118481600361138390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115256022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6112b282826111ca565b15611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61138d82826111ca565b6113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806114dc6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582056b457a9e99c067de7470a4315f2c66cf40386b2ff0ce025ab6bdb6e61eec68664736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20MintableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20MintableMock.json new file mode 100644 index 0000000..af95c8c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20MintableMock.json @@ -0,0 +1,501 @@ +{ + "fileName": "ERC20MintableMock.sol", + "contractName": "ERC20MintableMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/ERC20Mintable.sol\";\nimport \"./MinterRoleMock.sol\";\n\ncontract ERC20MintableMock is ERC20Mintable, MinterRoleMock {\n // solhint-disable-previous-line no-empty-blocks\n}\n", + "sourcePath": "contracts/mocks/ERC20MintableMock.sol", + "sourceMap": "100:116:65:-;;;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;100:116:65;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;100:116:65:-;;;;;;;", + "deployedSourceMap": "100:116:65:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;100:116:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;111:85:88;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;111:85:88;;;;;;;;;;;;;;;;;;;:::i;:::-;;3802:207:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;502:140:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;502:140:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;4496:258:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;494:107:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;202:113:88;;;:::i;:::-;;2230:132:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2500:149;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;111:85:88:-;167:22;181:7;167:13;:22::i;:::-;111:85;:::o;3802:207:119:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;502:140:123:-;576:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:123;598:7;607:6;592:5;:22::i;:::-;631:4;624:11;;502:140;;;;:::o;1706:108:119:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:119:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;494:107:8:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;202:113:88:-;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113:88:o;2230:132:119:-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:119:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;394:94:88:-;453:28;473:7;453:19;:28::i;:::-;394:94;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;5962:302:119:-;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;911:127:8:-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyMinterMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20MintableMock.sol", + "exportedSymbols": { + "ERC20MintableMock": [ + 5990 + ] + }, + "id": 5991, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5983, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:65" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 5984, + "nodeType": "ImportDirective", + "scope": 5991, + "sourceUnit": 10046, + "src": "25:42:65", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/mocks/MinterRoleMock.sol", + "file": "./MinterRoleMock.sol", + "id": 5985, + "nodeType": "ImportDirective", + "scope": 5991, + "sourceUnit": 7383, + "src": "68:30:65", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5986, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "130:13:65", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 5987, + "nodeType": "InheritanceSpecifier", + "src": "130:13:65" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5988, + "name": "MinterRoleMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7382, + "src": "145:14:65", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRoleMock_$7382", + "typeString": "contract MinterRoleMock" + } + }, + "id": 5989, + "nodeType": "InheritanceSpecifier", + "src": "145:14:65" + } + ], + "contractDependencies": [ + 26, + 1408, + 7382, + 9866, + 10045, + 10216 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5990, + "linearizedBaseContracts": [ + 5990, + 7382, + 10045, + 1408, + 9866, + 10216, + 26 + ], + "name": "ERC20MintableMock", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 5991, + "src": "100:116:65" + } + ], + "src": "0:217:65" + }, + "bytecode": "0x608060405262000024620000186200002a60201b60201c565b6200003260201b60201c565b62000257565b600033905090565b6200004d8160036200009360201b620013ab1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620000a582826200017760201b60201c565b1562000119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000200576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620019536022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116ec80620002676000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063983b2d561161008c578063a9059cbb11610066578063a9059cbb14610415578063aa271e1a1461047b578063b5dba35b146104d7578063dd62ed3e146104e1576100ea565b8063983b2d561461036157806398650275146103a5578063a457c2d7146103af576100ea565b80633092afd5116100c85780633092afd5146101f9578063395093511461023d57806340c10f19146102a357806370a0823114610309576100ea565b8063095ea7b3146100ef57806318160ddd1461015557806323b872dd14610173575b600080fd5b61013b6004803603604081101561010557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610559565b604051808215151515815260200191505060405180910390f35b61015d610577565b6040518082815260200191505060405180910390f35b6101df6004803603606081101561018957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610581565b604051808215151515815260200191505060405180910390f35b61023b6004803603602081101561020f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061065a565b005b6102896004803603604081101561025357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610666565b604051808215151515815260200191505060405180910390f35b6102ef600480360360408110156102b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610719565b604051808215151515815260200191505060405180910390f35b61034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610794565b6040518082815260200191505060405180910390f35b6103a36004803603602081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dc565b005b6103ad61084d565b005b6103fb600480360360408110156103c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061085f565b604051808215151515815260200191505060405180910390f35b6104616004803603604081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092c565b604051808215151515815260200191505060405180910390f35b6104bd6004803603602081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061094a565b604051808215151515815260200191505060405180910390f35b6104df610967565b005b610543600480360360408110156104f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ce565b6040518082815260200191505060405180910390f35b600061056d610566610a55565b8484610a5d565b6001905092915050565b6000600254905090565b600061058e848484610c54565b61064f8461059a610a55565b61064a8560405180606001604052806028815260200161160060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610600610a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9092919063ffffffff16565b610a5d565b600190509392505050565b61066381610fca565b50565b600061070f610673610a55565b8461070a8560016000610684610a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd690919063ffffffff16565b610a5d565b6001905092915050565b600061072b610726610a55565b61094a565b610780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115af6030913960400191505060405180910390fd5b61078a838361105e565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107ec6107e7610a55565b61094a565b610841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115af6030913960400191505060405180910390fd5b61084a81611219565b50565b61085d610858610a55565b610fca565b565b600061092261086c610a55565b8461091d856040518060600160405280602581526020016116936025913960016000610896610a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9092919063ffffffff16565b610a5d565b6001905092915050565b6000610940610939610a55565b8484610c54565b6001905092915050565b600061096082600361127390919063ffffffff16565b9050919050565b610977610972610a55565b61094a565b6109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115af6030913960400191505060405180910390fd5b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061166f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115676022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061164a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806115446023913960400191505060405180910390fd5b610dcb81604051806060016040528060268152602001611589602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610fb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f7c578082015181840152602081019050610f61565b50505050905090810190601f168015610fa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b610fd381611351565b50565b600080828401905083811015611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61111681600254610fd690919063ffffffff16565b60028190555061116d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61122d8160036113ab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806116286022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61136581600361148690919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6113b58282611273565b15611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6114908282611273565b6114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806115df6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820c1c68242f4f3baca17f527fd9cbcea865b43538279c5bf6ee6836048e34cd70a64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063983b2d561161008c578063a9059cbb11610066578063a9059cbb14610415578063aa271e1a1461047b578063b5dba35b146104d7578063dd62ed3e146104e1576100ea565b8063983b2d561461036157806398650275146103a5578063a457c2d7146103af576100ea565b80633092afd5116100c85780633092afd5146101f9578063395093511461023d57806340c10f19146102a357806370a0823114610309576100ea565b8063095ea7b3146100ef57806318160ddd1461015557806323b872dd14610173575b600080fd5b61013b6004803603604081101561010557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610559565b604051808215151515815260200191505060405180910390f35b61015d610577565b6040518082815260200191505060405180910390f35b6101df6004803603606081101561018957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610581565b604051808215151515815260200191505060405180910390f35b61023b6004803603602081101561020f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061065a565b005b6102896004803603604081101561025357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610666565b604051808215151515815260200191505060405180910390f35b6102ef600480360360408110156102b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610719565b604051808215151515815260200191505060405180910390f35b61034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610794565b6040518082815260200191505060405180910390f35b6103a36004803603602081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dc565b005b6103ad61084d565b005b6103fb600480360360408110156103c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061085f565b604051808215151515815260200191505060405180910390f35b6104616004803603604081101561042b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092c565b604051808215151515815260200191505060405180910390f35b6104bd6004803603602081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061094a565b604051808215151515815260200191505060405180910390f35b6104df610967565b005b610543600480360360408110156104f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ce565b6040518082815260200191505060405180910390f35b600061056d610566610a55565b8484610a5d565b6001905092915050565b6000600254905090565b600061058e848484610c54565b61064f8461059a610a55565b61064a8560405180606001604052806028815260200161160060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610600610a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9092919063ffffffff16565b610a5d565b600190509392505050565b61066381610fca565b50565b600061070f610673610a55565b8461070a8560016000610684610a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd690919063ffffffff16565b610a5d565b6001905092915050565b600061072b610726610a55565b61094a565b610780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115af6030913960400191505060405180910390fd5b61078a838361105e565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107ec6107e7610a55565b61094a565b610841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115af6030913960400191505060405180910390fd5b61084a81611219565b50565b61085d610858610a55565b610fca565b565b600061092261086c610a55565b8461091d856040518060600160405280602581526020016116936025913960016000610896610a55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9092919063ffffffff16565b610a5d565b6001905092915050565b6000610940610939610a55565b8484610c54565b6001905092915050565b600061096082600361127390919063ffffffff16565b9050919050565b610977610972610a55565b61094a565b6109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115af6030913960400191505060405180910390fd5b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061166f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115676022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061164a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806115446023913960400191505060405180910390fd5b610dcb81604051806060016040528060268152602001611589602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610fb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f7c578082015181840152602081019050610f61565b50505050905090810190601f168015610fa95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b610fd381611351565b50565b600080828401905083811015611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61111681600254610fd690919063ffffffff16565b60028190555061116d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61122d8160036113ab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806116286022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61136581600361148690919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6113b58282611273565b15611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6114908282611273565b6114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806115df6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820c1c68242f4f3baca17f527fd9cbcea865b43538279c5bf6ee6836048e34cd70a64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20MinterPauser.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20MinterPauser.json new file mode 100644 index 0000000..ca6606d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20MinterPauser.json @@ -0,0 +1,2436 @@ +{ + "fileName": "ERC20MinterPauser.sol", + "contractName": "ERC20MinterPauser", + "source": "pragma solidity ^0.6.0;\n\nimport \"../access/AccessControl.sol\";\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../token/ERC20/ERC20Burnable.sol\";\nimport \"../token/ERC20/ERC20Pausable.sol\";\n\n/**\n * @dev {ERC20} token, including:\n *\n * - ability for holders to burn (destroy) their tokens\n * - a minter role that allows for token minting (creation)\n * - a pauser role that allows to stop all token transfers\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter role, the\n * pauser role, and the default admin role, meaning it will be able to grant\n * both the minter and pauser roles.\n */\ncontract ERC20MinterPauser is Context, AccessControl, ERC20Burnable, ERC20Pausable {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\n * account that deploys the contract.\n *\n * See {ERC20-constructor}.\n */\n constructor(string memory name, string memory symbol) public ERC20(name, symbol) {\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n _setupRole(MINTER_ROLE, _msgSender());\n _setupRole(PAUSER_ROLE, _msgSender());\n }\n\n /**\n * @dev Creates `amount` new tokens for `to`.\n *\n * See {ERC20-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(address to, uint256 amount) public {\n require(hasRole(MINTER_ROLE, _msgSender()), \"ERC20MinterPauser: must have minter role to mint\");\n _mint(to, amount);\n }\n\n /**\n * @dev Pauses all token transfers.\n *\n * See {ERC20Pausable} and {Pausable-_pause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function pause() public {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC20MinterPauser: must have pauser role to pause\");\n _pause();\n }\n\n /**\n * @dev Unpauses all token transfers.\n *\n * See {ERC20Pausable} and {Pausable-_unpause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function unpause() public {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC20MinterPauser: must have pauser role to unpause\");\n _unpause();\n }\n\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) {\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n", + "sourcePath": "contracts/deploy-ready/ERC20MinterPauser.sol", + "sourceMap": "774:1924:10:-:0;;;1177:237;5:9:-1;2:2;;;27:1;24;17:12;2:2;1177:237:10;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1177:237:10;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;1177:237:10;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1177:237:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;1177:237:10;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1177:237:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:4;1250:6;2050:4:71;2042:5;:12;;;;;;;;;;;;:::i;:::-;;2074:6;2064:7;:16;;;;;;;;;;;;:::i;:::-;;2102:2;2090:9;;:14;;;;;;;;;;;;;;;;;;1970:141;;970:5:97;960:7;;:15;;;;;;;;;;;;;;;;;;1268:44:10::1;1533:4:6;1279:18:10::0;::::1;1299:12;:10;;;:12;;:::i;:::-;1268:10;;;:44;;:::i;:::-;1323:37;901:24;;;;;;;::::0;::::1;;;;;;;;;;;1347:12;:10;;;:12;;:::i;:::-;1323:10;;;:37;;:::i;:::-;1370;969:24;;;;;;;::::0;::::1;;;;;;;;;;;1394:12;:10;;;:12;;:::i;:::-;1370:10;;;:37;;:::i;:::-;1177:237:::0;;774:1924;;735:104:0;788:15;822:10;815:17;;735:104;:::o;5728:215:6:-;5815:26;5823:4;5815:24;;;;;;;:26;;:::i;:::-;5814:27;5806:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5911:25;5922:4;5928:7;5911:10;;;:25;;:::i;:::-;5728:215;;:::o;685:610:91:-;745:4;1003:16;1029:19;1051:66;1029:88;;;;1218:7;1206:20;1194:32;;1257:11;1245:8;:23;;:42;;;;;1284:3;1272:15;;:8;:15;;1245:42;1237:51;;;;685:610;;;:::o;6148:184:6:-;6221:33;6246:7;6221:6;:12;6228:4;6221:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;6217:109;;;6302:12;:10;;;:12;;:::i;:::-;6275:40;;6293:7;6275:40;;6287:4;6275:40;;;;;;;;;;6217:109;6148:184;;:::o;4664:141:96:-;4734:4;4757:41;4762:3;:10;;4790:5;4782:14;;4774:23;;4757:4;;;:41;;:::i;:::-;4750:48;;4664:141;;;;:::o;1411:404::-;1474:4;1495:21;1505:3;1510:5;1495:9;;;:21;;:::i;:::-;1490:319;;1532:3;:11;;1549:5;1532:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1532:23:96;;;;;;;;;;;;;;;;;;;1712:3;:11;;:18;;;;1690:3;:12;;:19;1703:5;1690:19;;;;;;;;;;;:40;;;;1751:4;1744:11;;;;1490:319;1793:5;1786:12;;1411:404;;;;;:::o;3576:127::-;3649:4;3695:1;3672:3;:12;;:19;3685:5;3672:19;;;;;;;;;;;;:24;;3665:31;;3576:127;;;;:::o;774:1924:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "774:1924:10:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;774:1924:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;2176:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2176:81:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4212:166;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4212:166:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3219:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4836:317;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4836:317:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3630:112:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3630:112:6;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3990:223;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3990:223:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3078:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5162:205:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5162:205:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5548:215:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5548:215:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2356:161:10;;;:::i;:::-;;1603:188;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1603:188:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;448:89:72;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;448:89:72;;;;;;;;;;;;;;;;;:::i;:::-;;1077:76:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3375:117:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3375:117:71;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;841:290:72;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;841:290:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1994:155:10;;;:::i;:::-;;3313:136:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3313:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2298:137;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2298:137:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2370:85:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2370:85:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1488:49:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6250:266:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6250:266:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3695:172;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3695:172:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2603:125:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2603:125:6;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;863:62:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4445:226:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4445:226:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3925:149:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3925:149:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;931:62:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2176:81:71;2213:13;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2176:81;:::o;4212:166::-;4295:4;4311:39;4320:12;:10;:12::i;:::-;4334:7;4343:6;4311:8;:39::i;:::-;4367:4;4360:11;;4212:166;;;;:::o;3219:98::-;3272:7;3298:12;;3291:19;;3219:98;:::o;4836:317::-;4942:4;4958:36;4968:6;4976:9;4987:6;4958:9;:36::i;:::-;5004:121;5013:6;5021:12;:10;:12::i;:::-;5035:89;5073:6;5035:89;;;;;;;;;;;;;;;;;:11;:19;5047:6;5035:19;;;;;;;;;;;;;;;:33;5055:12;:10;:12::i;:::-;5035:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5004:8;:121::i;:::-;5142:4;5135:11;;4836:317;;;;;:::o;3630:112:6:-;3687:7;3713:6;:12;3720:4;3713:12;;;;;;;;;;;:22;;;3706:29;;3630:112;;;:::o;3990:223::-;4073:45;4081:6;:12;4088:4;4081:12;;;;;;;;;;;:22;;;4105:12;:10;:12::i;:::-;4073:7;:45::i;:::-;4065:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4181:25;4192:4;4198:7;4181:10;:25::i;:::-;3990:223;;:::o;3078:81:71:-;3119:5;3143:9;;;;;;;;;;;3136:16;;3078:81;:::o;5162:205:6:-;5259:12;:10;:12::i;:::-;5248:23;;:7;:23;;;5240:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5334:26;5346:4;5352:7;5334:11;:26::i;:::-;5162:205;;:::o;5548:215:71:-;5636:4;5652:83;5661:12;:10;:12::i;:::-;5675:7;5684:50;5723:10;5684:11;:25;5696:12;:10;:12::i;:::-;5684:25;;;;;;;;;;;;;;;:34;5710:7;5684:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5652:8;:83::i;:::-;5752:4;5745:11;;5548:215;;;;:::o;2356:161:10:-;2400:34;969:24;;;;;;;;;;;;;;;;;;;2421:12;:10;:12::i;:::-;2400:7;:34::i;:::-;2392:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:10;:8;:10::i;:::-;2356:161::o;1603:188::-;1670:34;901:24;;;;;;;;;;;;;;;;;;;1691:12;:10;:12::i;:::-;1670:7;:34::i;:::-;1662:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:17;1773:2;1777:6;1767:5;:17::i;:::-;1603:188;;:::o;448:89:72:-;503:27;509:12;:10;:12::i;:::-;523:6;503:5;:27::i;:::-;448:89;:::o;1077:76:97:-;1116:4;1139:7;;;;;;;;;;;1132:14;;1077:76;:::o;3375:117:71:-;3441:7;3467:9;:18;3477:7;3467:18;;;;;;;;;;;;;;;;3460:25;;3375:117;;;:::o;841:290:72:-;917:26;946:84;983:6;946:84;;;;;;;;;;;;;;;;;:32;956:7;965:12;:10;:12::i;:::-;946:9;:32::i;:::-;:36;;:84;;;;;:::i;:::-;917:113;;1041:51;1050:7;1059:12;:10;:12::i;:::-;1073:18;1041:8;:51::i;:::-;1102:22;1108:7;1117:6;1102:5;:22::i;:::-;841:290;;;:::o;1994:155:10:-;2036:34;969:24;;;;;;;;;;;;;;;;;;;2057:12;:10;:12::i;:::-;2036:7;:34::i;:::-;2028:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2134:8;:6;:8::i;:::-;1994:155::o;3313:136:6:-;3386:7;3412:30;3436:5;3412:6;:12;3419:4;3412:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;3405:37;;3313:136;;;;:::o;2298:137::-;2367:4;2390:38;2420:7;2390:6;:12;2397:4;2390:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;2383:45;;2298:137;;;;:::o;2370:85:71:-;2409:13;2441:7;2434:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2370:85;:::o;1488:49:6:-;1533:4;1488:49;;;:::o;6250:266:71:-;6343:4;6359:129;6368:12;:10;:12::i;:::-;6382:7;6391:96;6430:15;6391:96;;;;;;;;;;;;;;;;;:11;:25;6403:12;:10;:12::i;:::-;6391:25;;;;;;;;;;;;;;;:34;6417:7;6391:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6359:8;:129::i;:::-;6505:4;6498:11;;6250:266;;;;:::o;3695:172::-;3781:4;3797:42;3807:12;:10;:12::i;:::-;3821:9;3832:6;3797:9;:42::i;:::-;3856:4;3849:11;;3695:172;;;;:::o;2603:125:6:-;2666:7;2692:29;:6;:12;2699:4;2692:12;;;;;;;;;;;:20;;:27;:29::i;:::-;2685:36;;2603:125;;;:::o;863:62:10:-;901:24;;;;;;;;;;;;;;;;;;;863:62;:::o;4445:226:6:-;4529:45;4537:6;:12;4544:4;4537:12;;;;;;;;;;;:22;;;4561:12;:10;:12::i;:::-;4529:7;:45::i;:::-;4521:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4638:26;4650:4;4656:7;4638:11;:26::i;:::-;4445:226;;:::o;3925:149:71:-;4014:7;4040:11;:18;4052:5;4040:18;;;;;;;;;;;;;;;:27;4059:7;4040:27;;;;;;;;;;;;;;;;4033:34;;3925:149;;;;:::o;931:62:10:-;969:24;;;;;;;;;;;;;;;;;;;931:62;:::o;735:104:0:-;788:15;822:10;815:17;;735:104;:::o;9314:340:71:-;9432:1;9415:19;;:5;:19;;;;9407:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9512:1;9493:21;;:7;:21;;;;9485:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9594:6;9564:11;:18;9576:5;9564:18;;;;;;;;;;;;;;;:27;9583:7;9564:27;;;;;;;;;;;;;;;:36;;;;9631:7;9615:32;;9624:5;9615:32;;;9640:6;9615:32;;;;;;;;;;;;;;;;;;9314:340;;;:::o;6990:530::-;7113:1;7095:20;;:6;:20;;;;7087:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7196:1;7175:23;;:9;:23;;;;7167:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7249:47;7270:6;7278:9;7289:6;7249:20;:47::i;:::-;7327:71;7349:6;7327:71;;;;;;;;;;;;;;;;;:9;:17;7337:6;7327:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7307:9;:17;7317:6;7307:17;;;;;;;;;;;;;;;:91;;;;7431:32;7456:6;7431:9;:20;7441:9;7431:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7408:9;:20;7418:9;7408:20;;;;;;;;;;;;;;;:55;;;;7495:9;7478:35;;7487:6;7478:35;;;7506:6;7478:35;;;;;;;;;;;;;;;;;;6990:530;;;:::o;1692:187:20:-;1778:7;1810:1;1805;:6;;1813:12;1797:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1797:29:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1836:9;1852:1;1848;:5;1836:17;;1871:1;1864:8;;;1692:187;;;;;:::o;6148:184:6:-;6221:33;6246:7;6221:6;:12;6228:4;6221:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;6217:109;;;6302:12;:10;:12::i;:::-;6275:40;;6293:7;6275:40;;6287:4;6275:40;;;;;;;;;;6217:109;6148:184;;:::o;6338:188::-;6412:36;6440:7;6412:6;:12;6419:4;6412:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;6408:112;;;6496:12;:10;:12::i;:::-;6469:40;;6487:7;6469:40;;6481:4;6469:40;;;;;;;;;;6408:112;6338:188;;:::o;834:176:20:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;1839:117:97:-;1497:7;;;;;;;;;;;1489:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1907:5:::1;1897:7;;:15;;;;;;;;;;;;;;;;;;1927:22;1936:12;:10;:12::i;:::-;1927:22;;;;;;;;;;;;;;;;;;;;;;1839:117::o:0;7790:370:71:-;7892:1;7873:21;;:7;:21;;;;7865:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:49;7970:1;7974:7;7983:6;7941:20;:49::i;:::-;8016:24;8033:6;8016:12;;:16;;:24;;;;:::i;:::-;8001:12;:39;;;;8071:30;8094:6;8071:9;:18;8081:7;8071:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8050:9;:18;8060:7;8050:18;;;;;;;;;;;;;;;:51;;;;8137:7;8116:37;;8133:1;8116:37;;;8146:6;8116:37;;;;;;;;;;;;;;;;;;7790:370;;:::o;8479:410::-;8581:1;8562:21;;:7;:21;;;;8554:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8632:49;8653:7;8670:1;8674:6;8632:20;:49::i;:::-;8713:68;8736:6;8713:68;;;;;;;;;;;;;;;;;:9;:18;8723:7;8713:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8692:9;:18;8702:7;8692:18;;;;;;;;;;;;;;;:89;;;;8806:24;8823:6;8806:12;;:16;;:24;;;;:::i;:::-;8791:12;:39;;;;8871:1;8845:37;;8854:7;8845:37;;;8875:6;8845:37;;;;;;;;;;;;;;;;;;8479:410;;:::o;1634:115:97:-;1306:7;;;;;;;;;;;1305:8;1297:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:4:::1;1693:7;;:14;;;;;;;;;;;;;;;;;;1722:20;1729:12;:10;:12::i;:::-;1722:20;;;;;;;;;;;;;;;;;;;;;;1634:115::o:0;5885:147:96:-;5959:7;6001:22;6005:3;:10;;6017:5;6001:3;:22::i;:::-;5993:31;;5978:47;;5885:147;;;;:::o;5201:156::-;5281:4;5304:46;5314:3;:10;;5342:5;5334:14;;5326:23;;5304:9;:46::i;:::-;5297:53;;5201:156;;;;:::o;5438:115::-;5501:7;5527:19;5535:3;:10;;5527:7;:19::i;:::-;5520:26;;5438:115;;;:::o;2523:173:10:-;2645:44;2672:4;2678:2;2682:6;2645:26;:44::i;:::-;2523:173;;;:::o;4664:141:96:-;4734:4;4757:41;4762:3;:10;;4790:5;4782:14;;4774:23;;4757:4;:41::i;:::-;4750:48;;4664:141;;;;:::o;4973:147::-;5046:4;5069:44;5077:3;:10;;5105:5;5097:14;;5089:23;;5069:7;:44::i;:::-;5062:51;;4973:147;;;;:::o;1274:134:20:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;4223:201:96:-;4290:7;4338:5;4317:3;:11;;:18;;;;:26;4309:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4399:3;:11;;4411:5;4399:18;;;;;;;;;;;;;;;;4392:25;;4223:201;;;;:::o;3576:127::-;3649:4;3695:1;3672:3;:12;;:19;3685:5;3672:19;;;;;;;;;;;;:24;;3665:31;;3576:127;;;;:::o;3784:107::-;3840:7;3866:3;:11;;:18;;;;3859:25;;3784:107;;;:::o;556:234:74:-;664:44;691:4;697:2;701:6;664:26;:44::i;:::-;728:8;:6;:8::i;:::-;727:9;719:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;556:234;;;:::o;1411:404:96:-;1474:4;1495:21;1505:3;1510:5;1495:9;:21::i;:::-;1490:319;;1532:3;:11;;1549:5;1532:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1532:23:96;;;;;;;;;;;;;;;;;;;1712:3;:11;;:18;;;;1690:3;:12;;:19;1703:5;1690:19;;;;;;;;;;;:40;;;;1751:4;1744:11;;;;1490:319;1793:5;1786:12;;1411:404;;;;;:::o;1983:1512::-;2049:4;2165:18;2186:3;:12;;:19;2199:5;2186:19;;;;;;;;;;;;2165:40;;2234:1;2220:10;:15;2216:1273;;2577:21;2614:1;2601:10;:14;2577:38;;2629:17;2670:1;2649:3;:11;;:18;;;;:22;2629:42;;2911:17;2931:3;:11;;2943:9;2931:22;;;;;;;;;;;;;;;;2911:42;;3074:9;3045:3;:11;;3057:13;3045:26;;;;;;;;;;;;;;;:38;;;;3191:1;3175:13;:17;3149:3;:12;;:23;3162:9;3149:23;;;;;;;;;;;:43;;;;3298:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3390:3;:12;;:19;3403:5;3390:19;;;;;;;;;;;3383:26;;;3431:4;3424:11;;;;;;;;2216:1273;3473:5;3466:12;;;1983:1512;;;;;:::o;10599:92:71:-;;;;:::o;685:610:91:-;745:4;1003:16;1029:19;1051:66;1029:88;;;;1218:7;1206:20;1194:32;;1257:11;1245:8;:23;;:42;;;;;1284:3;1272:15;;:8;:15;;1245:42;1237:51;;;;685:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/deploy-ready/ERC20MinterPauser.sol", + "exportedSymbols": { + "ERC20MinterPauser": [ + 1878 + ] + }, + "id": 1879, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1744, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "contracts/access/AccessControl.sol", + "file": "../access/AccessControl.sol", + "id": 1745, + "nodeType": "ImportDirective", + "scope": 1879, + "sourceUnit": 1465, + "src": "25:37:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 1746, + "nodeType": "ImportDirective", + "scope": 1879, + "sourceUnit": 27, + "src": "63:28:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 1747, + "nodeType": "ImportDirective", + "scope": 1879, + "sourceUnit": 7378, + "src": "92:34:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol", + "file": "../token/ERC20/ERC20Burnable.sol", + "id": 1748, + "nodeType": "ImportDirective", + "scope": 1879, + "sourceUnit": 7434, + "src": "127:42:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Pausable.sol", + "file": "../token/ERC20/ERC20Pausable.sol", + "id": 1749, + "nodeType": "ImportDirective", + "scope": 1879, + "sourceUnit": 7546, + "src": "170:42:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1751, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "804:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1752, + "nodeType": "InheritanceSpecifier", + "src": "804:7:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1753, + "name": "AccessControl", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1464, + "src": "813:13:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AccessControl_$1464", + "typeString": "contract AccessControl" + } + }, + "id": 1754, + "nodeType": "InheritanceSpecifier", + "src": "813:13:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1755, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7433, + "src": "828:13:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$7433", + "typeString": "contract ERC20Burnable" + } + }, + "id": 1756, + "nodeType": "InheritanceSpecifier", + "src": "828:13:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1757, + "name": "ERC20Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7545, + "src": "843:13:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Pausable_$7545", + "typeString": "contract ERC20Pausable" + } + }, + "id": 1758, + "nodeType": "InheritanceSpecifier", + "src": "843:13:10" + } + ], + "contractDependencies": [ + 26, + 1464, + 7377, + 7433, + 7545, + 7953, + 12000 + ], + "contractKind": "contract", + "documentation": { + "id": 1750, + "nodeType": "StructuredDocumentation", + "src": "214:559:10", + "text": "@dev {ERC20} token, including:\n * - ability for holders to burn (destroy) their tokens\n - a minter role that allows for token minting (creation)\n - a pauser role that allows to stop all token transfers\n * This contract uses {AccessControl} to lock permissioned functions using the\ndifferent roles - head to its documentation for details.\n * The account that deploys the contract will be granted the minter role, the\npauser role, and the default admin role, meaning it will be able to grant\nboth the minter and pauser roles." + }, + "fullyImplemented": true, + "id": 1878, + "linearizedBaseContracts": [ + 1878, + 7545, + 12000, + 7433, + 7377, + 7953, + 1464, + 26 + ], + "name": "ERC20MinterPauser", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "d5391393", + "id": 1763, + "name": "MINTER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1878, + "src": "863:62:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1759, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "863:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4d494e5445525f524f4c45", + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "911:13:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + }, + "value": "MINTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + } + ], + "id": 1760, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "901:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "901:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "e63ab1e9", + "id": 1768, + "name": "PAUSER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1878, + "src": "931:62:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1764, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "931:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "5041555345525f524f4c45", + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "979:13:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 1765, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "969:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "969:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 1798, + "nodeType": "Block", + "src": "1258:156:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1781, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1214, + "src": "1279:18:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1782, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1299:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1299:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1780, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "1268:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1268:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1785, + "nodeType": "ExpressionStatement", + "src": "1268:44:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1787, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "1334:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1788, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1347:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1347:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1786, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "1323:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1323:37:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1791, + "nodeType": "ExpressionStatement", + "src": "1323:37:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1793, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1768, + "src": "1381:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1794, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1394:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1394:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1792, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "1370:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1370:37:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1797, + "nodeType": "ExpressionStatement", + "src": "1370:37:10" + } + ] + }, + "documentation": { + "id": 1769, + "nodeType": "StructuredDocumentation", + "src": "1000:172:10", + "text": "@dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\naccount that deploys the contract.\n * See {ERC20-constructor}." + }, + "id": 1799, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1776, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1771, + "src": "1244:4:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 1777, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "1250:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 1778, + "modifierName": { + "argumentTypes": null, + "id": 1775, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7377, + "src": "1238:5:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7377_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1238:19:10" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1771, + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1799, + "src": "1189:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1770, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1189:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1773, + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1799, + "src": "1209:20:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1772, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1209:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1188:42:10" + }, + "returnParameters": { + "id": 1779, + "nodeType": "ParameterList", + "parameters": [], + "src": "1258:0:10" + }, + "scope": 1878, + "src": "1177:237:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1821, + "nodeType": "Block", + "src": "1652:139:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1809, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "1678:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1810, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1691:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1808, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "1670:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1670:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74", + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1706:50:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8f57f415eba4a96300d6c66b18b600f3c48e094b5a452d11b76ceb51722b0c5e", + "typeString": "literal_string \"ERC20MinterPauser: must have minter role to mint\"" + }, + "value": "ERC20MinterPauser: must have minter role to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8f57f415eba4a96300d6c66b18b600f3c48e094b5a452d11b76ceb51722b0c5e", + "typeString": "literal_string \"ERC20MinterPauser: must have minter role to mint\"" + } + ], + "id": 1807, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1662:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1662:95:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1815, + "nodeType": "ExpressionStatement", + "src": "1662:95:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1817, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1802, + "src": "1773:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1818, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "1777:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1816, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7242, + "src": "1767:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1767:17:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1820, + "nodeType": "ExpressionStatement", + "src": "1767:17:10" + } + ] + }, + "documentation": { + "id": 1800, + "nodeType": "StructuredDocumentation", + "src": "1420:178:10", + "text": "@dev Creates `amount` new tokens for `to`.\n * See {ERC20-_mint}.\n * Requirements:\n * - the caller must have the `MINTER_ROLE`." + }, + "functionSelector": "40c10f19", + "id": 1822, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1802, + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1822, + "src": "1617:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1801, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1617:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1804, + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1822, + "src": "1629:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1629:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1616:28:10" + }, + "returnParameters": { + "id": 1806, + "nodeType": "ParameterList", + "parameters": [], + "src": "1652:0:10" + }, + "scope": 1878, + "src": "1603:188:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1838, + "nodeType": "Block", + "src": "2018:131:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1828, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1768, + "src": "2044:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1829, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2057:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2057:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1827, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "2036:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2036:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365", + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2072:51:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f5057828466cebeb084e51c83cb63d6b814ffd428f927d0aadeb0bc3049e3a9", + "typeString": "literal_string \"ERC20MinterPauser: must have pauser role to pause\"" + }, + "value": "ERC20MinterPauser: must have pauser role to pause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9f5057828466cebeb084e51c83cb63d6b814ffd428f927d0aadeb0bc3049e3a9", + "typeString": "literal_string \"ERC20MinterPauser: must have pauser role to pause\"" + } + ], + "id": 1826, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2028:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2028:96:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1834, + "nodeType": "ExpressionStatement", + "src": "2028:96:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1835, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11983, + "src": "2134:6:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2134:8:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1837, + "nodeType": "ExpressionStatement", + "src": "2134:8:10" + } + ] + }, + "documentation": { + "id": 1823, + "nodeType": "StructuredDocumentation", + "src": "1797:192:10", + "text": "@dev Pauses all token transfers.\n * See {ERC20Pausable} and {Pausable-_pause}.\n * Requirements:\n * - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "8456cb59", + "id": 1839, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1824, + "nodeType": "ParameterList", + "parameters": [], + "src": "2008:2:10" + }, + "returnParameters": { + "id": 1825, + "nodeType": "ParameterList", + "parameters": [], + "src": "2018:0:10" + }, + "scope": 1878, + "src": "1994:155:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1855, + "nodeType": "Block", + "src": "2382:135:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1845, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1768, + "src": "2408:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1846, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2421:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2421:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1844, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "2400:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2400:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332304d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365", + "id": 1849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2436:53:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7e94484b100e14fb36e02efff0b61895bc2c7db35a579205780c5df7eca616a1", + "typeString": "literal_string \"ERC20MinterPauser: must have pauser role to unpause\"" + }, + "value": "ERC20MinterPauser: must have pauser role to unpause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7e94484b100e14fb36e02efff0b61895bc2c7db35a579205780c5df7eca616a1", + "typeString": "literal_string \"ERC20MinterPauser: must have pauser role to unpause\"" + } + ], + "id": 1843, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2392:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:98:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1851, + "nodeType": "ExpressionStatement", + "src": "2392:98:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1852, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11999, + "src": "2500:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2500:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1854, + "nodeType": "ExpressionStatement", + "src": "2500:10:10" + } + ] + }, + "documentation": { + "id": 1840, + "nodeType": "StructuredDocumentation", + "src": "2155:196:10", + "text": "@dev Unpauses all token transfers.\n * See {ERC20Pausable} and {Pausable-_unpause}.\n * Requirements:\n * - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "3f4ba83a", + "id": 1856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1841, + "nodeType": "ParameterList", + "parameters": [], + "src": "2372:2:10" + }, + "returnParameters": { + "id": 1842, + "nodeType": "ParameterList", + "parameters": [], + "src": "2382:0:10" + }, + "scope": 1878, + "src": "2356:161:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 7376, + 7544 + ], + "body": { + "id": 1876, + "nodeType": "Block", + "src": "2635:61:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1871, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1858, + "src": "2672:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1872, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1860, + "src": "2678:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1873, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1862, + "src": "2682:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1868, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2645:5:10", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20MinterPauser_$1878", + "typeString": "contract super ERC20MinterPauser" + } + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 7544, + "src": "2645:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2645:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1875, + "nodeType": "ExpressionStatement", + "src": "2645:44:10" + } + ] + }, + "documentation": null, + "id": 1877, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1866, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 1864, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7377, + "src": "2613:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$7377", + "typeString": "contract ERC20" + } + }, + { + "contractScope": null, + "id": 1865, + "name": "ERC20Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7545, + "src": "2620:13:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Pausable_$7545", + "typeString": "contract ERC20Pausable" + } + } + ], + "src": "2604:30:10" + }, + "parameters": { + "id": 1863, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1858, + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1877, + "src": "2553:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2553:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1860, + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1877, + "src": "2567:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2567:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1862, + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1877, + "src": "2579:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1861, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2579:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2552:42:10" + }, + "returnParameters": { + "id": 1867, + "nodeType": "ParameterList", + "parameters": [], + "src": "2635:0:10" + }, + "scope": 1878, + "src": "2523:173:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1879, + "src": "774:1924:10" + } + ], + "src": "0:2699:10" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002dbb38038062002dbb833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818160049080519060200190620001cf92919062000560565b508060059080519060200190620001e892919062000560565b506012600660006101000a81548160ff021916908360ff16021790555050506000600660016101000a81548160ff021916908315150217905550620002466000801b6200023a620002fa60201b60201c565b6200030260201b60201c565b6200029c60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902062000290620002fa60201b60201c565b6200030260201b60201c565b620002f260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620002e6620002fa60201b60201c565b6200030260201b60201c565b50506200060f565b600033905090565b6200032e3073ffffffffffffffffffffffffffffffffffffffff166200039c60201b6200240e1760201c565b1562000386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018062002d846037913960400191505060405180910390fd5b620003988282620003e860201b60201c565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015620003df57506000801b8214155b92505050919050565b62000416816000808581526020019081526020016000206000016200048b60201b620020e21790919060201c565b1562000487576200042c620002fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620004bb836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620004c360201b60201c565b905092915050565b6000620004d783836200053d60201b60201c565b6200053257826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000537565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005a357805160ff1916838001178555620005d4565b82800160010185558215620005d4579182015b82811115620005d3578251825591602001919060010190620005b6565b5b509050620005e39190620005e7565b5090565b6200060c91905b8082111562000608576000816000905550600101620005ee565b5090565b90565b612765806200061f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d539139314610888578063d547741f146108a6578063dd62ed3e146108f4578063e63ab1e91461096c576101a9565b8063a457c2d71461077a578063a9059cbb146107e0578063ca15c87314610846576101a9565b80639010d07c116100d35780639010d07c146105fb57806391d148541461067357806395d89b41146106d9578063a217fddf1461075c576101a9565b806370a082311461054b57806379cc6790146105a35780638456cb59146105f1576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146104a357806340c10f19146104ad57806342966c68146104fb5780635c975abb14610529576101a9565b8063313ce567146103cb57806336568abe146103ef578063395093511461043d576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029757806323b872dd146102b5578063248a9ca31461033b5780632f2ff15d1461037d575b600080fd5b6101b661098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2c565b604051808215151515815260200191505060405180910390f35b61029f610a4a565b6040518082815260200191505060405180910390f35b610321600480360360608110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a54565b604051808215151515815260200191505060405180910390f35b6103676004803603602081101561035157600080fd5b8101908080359060200190929190505050610b2d565b6040518082815260200191505060405180910390f35b6103c96004803603604081101561039357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4c565b005b6103d3610bd5565b604051808260ff1660ff16815260200191505060405180910390f35b61043b6004803603604081101561040557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6104896004803603604081101561045357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c85565b604051808215151515815260200191505060405180910390f35b6104ab610d38565b005b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddd565b005b6105276004803603602081101561051157600080fd5b8101908080359060200190929190505050610e86565b005b610531610e9a565b604051808215151515815260200191505060405180910390f35b61058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb1565b6040518082815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610efa565b005b6105f9610f5c565b005b6106316004803603604081101561061157600080fd5b810190808035906020019092919080359060200190929190505050611001565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106bf6004803603604081101561068957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611032565b604051808215151515815260200191505060405180910390f35b6106e1611063565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610764611105565b6040518082815260200191505060405180910390f35b6107c66004803603604081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061110c565b604051808215151515815260200191505060405180910390f35b61082c600480360360408110156107f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d9565b604051808215151515815260200191505060405180910390f35b6108726004803603602081101561085c57600080fd5b81019080803590602001909291905050506111f7565b6040518082815260200191505060405180910390f35b61089061121d565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611256565b005b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112df565b6040518082815260200191505060405180910390f35b610974611366565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a3961139f565b84846113a7565b6001905092915050565b6000600354905090565b6000610a6184848461159e565b610b2284610a6d61139f565b610b1d856040518060600160405280602881526020016125cb60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b6113a7565b600190509392505050565b6000806000838152602001908152602001600020600201549050919050565b610b7260008084815260200190815260200160002060020154610b6d61139f565b611032565b610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061249f602f913960400191505060405180910390fd5b610bd18282611923565b5050565b6000600660009054906101000a900460ff16905090565b610bf461139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806126d7602f913960400191505060405180910390fd5b610c8182826119b6565b5050565b6000610d2e610c9261139f565b84610d298560026000610ca361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b6113a7565b6001905092915050565b610d7e60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610d7961139f565b611032565b610dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806125686033913960400191505060405180910390fd5b610ddb611ad1565b565b610e2360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610e1e61139f565b611032565b610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061259b6030913960400191505060405180910390fd5b610e828282611bda565b5050565b610e97610e9161139f565b82611da3565b50565b6000600660019054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610f398260405180606001604052806024815260200161262460249139610f2a86610f2561139f565b6112df565b6118639092919063ffffffff16565b9050610f4d83610f4761139f565b836113a7565b610f578383611da3565b505050565b610fa260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610f9d61139f565b611032565b610ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806125f36031913960400191505060405180910390fd5b610fff611f69565b565b600061102a8260008086815260200190815260200160002060000161207390919063ffffffff16565b905092915050565b600061105b8260008086815260200190815260200160002060000161208d90919063ffffffff16565b905092915050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b5050505050905090565b6000801b81565b60006111cf61111961139f565b846111ca856040518060600160405280602581526020016126b2602591396002600061114361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b6113a7565b6001905092915050565b60006111ed6111e661139f565b848461159e565b6001905092915050565b60006112166000808481526020019081526020016000206000016120bd565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b61127c6000808481526020019081526020016000206002015461127761139f565b611032565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125386030913960400191505060405180910390fd5b6112db82826119b6565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061268e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124f06022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611624576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806126696025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061247c6023913960400191505060405180910390fd5b6116b58383836120d2565b6117218160405180606001604052806026815260200161251260269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117b681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118d55780820151818401526020810190506118ba565b50505050905090810190601f1680156119025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61194a816000808581526020019081526020016000206000016120e290919063ffffffff16565b156119b25761195761139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119dd8160008085815260200190815260200160002060000161211290919063ffffffff16565b15611a45576119ea61139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600660019054906101000a900460ff16611b53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b9761139f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611c89600083836120d2565b611c9e81600354611a4990919063ffffffff16565b600381905550611cf681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126486021913960400191505060405180910390fd5b611e35826000836120d2565b611ea1816040518060600160405280602281526020016124ce60229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ef98160035461214290919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600660019054906101000a900460ff1615611fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861203061139f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000612082836000018361218c565b60001c905092915050565b60006120b5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61220f565b905092915050565b60006120cb82600001612232565b9050919050565b6120dd838383612243565b505050565b600061210a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122b1565b905092915050565b600061213a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612321565b905092915050565b600061218483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611863565b905092915050565b6000818360000180549050116121ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061245a6022913960400191505060405180910390fd5b8260000182815481106121fc57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b61224e838383612409565b612256610e9a565b156122ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612706602a913960400191505060405180910390fd5b505050565b60006122bd838361220f565b61231657826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061231b565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146123fd576000600182039050600060018660000180549050039050600086600001828154811061236c57fe5b906000526020600020015490508087600001848154811061238957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806123c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612403565b60009150505b92915050565b505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561245057506000801b8214155b9250505091905056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332304d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e706175736545524332304d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e7445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332304d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20706175736545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6645524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a26469706673582212206c5ac2b0f1fc0c4bcf5dc82dc858b6fdbba2136f1358f77d4a8d3329ea1f616964736f6c63430006040033416363657373436f6e74726f6c3a20726f6c65732063616e6e6f7420626520736574757020616674657220636f6e737472756374696f6e", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d539139314610888578063d547741f146108a6578063dd62ed3e146108f4578063e63ab1e91461096c576101a9565b8063a457c2d71461077a578063a9059cbb146107e0578063ca15c87314610846576101a9565b80639010d07c116100d35780639010d07c146105fb57806391d148541461067357806395d89b41146106d9578063a217fddf1461075c576101a9565b806370a082311461054b57806379cc6790146105a35780638456cb59146105f1576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146104a357806340c10f19146104ad57806342966c68146104fb5780635c975abb14610529576101a9565b8063313ce567146103cb57806336568abe146103ef578063395093511461043d576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029757806323b872dd146102b5578063248a9ca31461033b5780632f2ff15d1461037d575b600080fd5b6101b661098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2c565b604051808215151515815260200191505060405180910390f35b61029f610a4a565b6040518082815260200191505060405180910390f35b610321600480360360608110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a54565b604051808215151515815260200191505060405180910390f35b6103676004803603602081101561035157600080fd5b8101908080359060200190929190505050610b2d565b6040518082815260200191505060405180910390f35b6103c96004803603604081101561039357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4c565b005b6103d3610bd5565b604051808260ff1660ff16815260200191505060405180910390f35b61043b6004803603604081101561040557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6104896004803603604081101561045357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c85565b604051808215151515815260200191505060405180910390f35b6104ab610d38565b005b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddd565b005b6105276004803603602081101561051157600080fd5b8101908080359060200190929190505050610e86565b005b610531610e9a565b604051808215151515815260200191505060405180910390f35b61058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb1565b6040518082815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610efa565b005b6105f9610f5c565b005b6106316004803603604081101561061157600080fd5b810190808035906020019092919080359060200190929190505050611001565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106bf6004803603604081101561068957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611032565b604051808215151515815260200191505060405180910390f35b6106e1611063565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610764611105565b6040518082815260200191505060405180910390f35b6107c66004803603604081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061110c565b604051808215151515815260200191505060405180910390f35b61082c600480360360408110156107f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d9565b604051808215151515815260200191505060405180910390f35b6108726004803603602081101561085c57600080fd5b81019080803590602001909291905050506111f7565b6040518082815260200191505060405180910390f35b61089061121d565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611256565b005b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112df565b6040518082815260200191505060405180910390f35b610974611366565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a3961139f565b84846113a7565b6001905092915050565b6000600354905090565b6000610a6184848461159e565b610b2284610a6d61139f565b610b1d856040518060600160405280602881526020016125cb60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b6113a7565b600190509392505050565b6000806000838152602001908152602001600020600201549050919050565b610b7260008084815260200190815260200160002060020154610b6d61139f565b611032565b610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061249f602f913960400191505060405180910390fd5b610bd18282611923565b5050565b6000600660009054906101000a900460ff16905090565b610bf461139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806126d7602f913960400191505060405180910390fd5b610c8182826119b6565b5050565b6000610d2e610c9261139f565b84610d298560026000610ca361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b6113a7565b6001905092915050565b610d7e60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610d7961139f565b611032565b610dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806125686033913960400191505060405180910390fd5b610ddb611ad1565b565b610e2360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610e1e61139f565b611032565b610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061259b6030913960400191505060405180910390fd5b610e828282611bda565b5050565b610e97610e9161139f565b82611da3565b50565b6000600660019054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610f398260405180606001604052806024815260200161262460249139610f2a86610f2561139f565b6112df565b6118639092919063ffffffff16565b9050610f4d83610f4761139f565b836113a7565b610f578383611da3565b505050565b610fa260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610f9d61139f565b611032565b610ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806125f36031913960400191505060405180910390fd5b610fff611f69565b565b600061102a8260008086815260200190815260200160002060000161207390919063ffffffff16565b905092915050565b600061105b8260008086815260200190815260200160002060000161208d90919063ffffffff16565b905092915050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b5050505050905090565b6000801b81565b60006111cf61111961139f565b846111ca856040518060600160405280602581526020016126b2602591396002600061114361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b6113a7565b6001905092915050565b60006111ed6111e661139f565b848461159e565b6001905092915050565b60006112166000808481526020019081526020016000206000016120bd565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b61127c6000808481526020019081526020016000206002015461127761139f565b611032565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125386030913960400191505060405180910390fd5b6112db82826119b6565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061268e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124f06022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611624576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806126696025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061247c6023913960400191505060405180910390fd5b6116b58383836120d2565b6117218160405180606001604052806026815260200161251260269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117b681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118d55780820151818401526020810190506118ba565b50505050905090810190601f1680156119025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61194a816000808581526020019081526020016000206000016120e290919063ffffffff16565b156119b25761195761139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119dd8160008085815260200190815260200160002060000161211290919063ffffffff16565b15611a45576119ea61139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600660019054906101000a900460ff16611b53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b9761139f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611c89600083836120d2565b611c9e81600354611a4990919063ffffffff16565b600381905550611cf681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126486021913960400191505060405180910390fd5b611e35826000836120d2565b611ea1816040518060600160405280602281526020016124ce60229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ef98160035461214290919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600660019054906101000a900460ff1615611fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861203061139f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000612082836000018361218c565b60001c905092915050565b60006120b5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61220f565b905092915050565b60006120cb82600001612232565b9050919050565b6120dd838383612243565b505050565b600061210a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122b1565b905092915050565b600061213a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612321565b905092915050565b600061218483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611863565b905092915050565b6000818360000180549050116121ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061245a6022913960400191505060405180910390fd5b8260000182815481106121fc57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b61224e838383612409565b612256610e9a565b156122ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612706602a913960400191505060405180910390fd5b505050565b60006122bd838361220f565b61231657826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061231b565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146123fd576000600182039050600060018660000180549050039050600086600001828154811061236c57fe5b906000526020600020015490508087600001848154811061238957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806123c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612403565b60009150505b92915050565b505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561245057506000801b8214155b9250505091905056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332304d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e706175736545524332304d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e7445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332304d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20706175736545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6645524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a26469706673582212206c5ac2b0f1fc0c4bcf5dc82dc858b6fdbba2136f1358f77d4a8d3329ea1f616964736f6c63430006040033", + "compiler": { + "name": "solc", + "version": "0.6.4+commit.1dca32f3.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Mock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Mock.json new file mode 100644 index 0000000..3c0272b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Mock.json @@ -0,0 +1,1498 @@ +{ + "fileName": "ERC20Mock.sol", + "contractName": "ERC20Mock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC20/ERC20.sol\";\n\n// mock class using ERC20\ncontract ERC20Mock is ERC20 {\n constructor (\n string memory name,\n string memory symbol,\n address initialAccount,\n uint256 initialBalance\n ) public payable ERC20(name, symbol) {\n _mint(initialAccount, initialBalance);\n }\n\n function mint(address account, uint256 amount) public {\n _mint(account, amount);\n }\n\n function burn(address account, uint256 amount) public {\n _burn(account, amount);\n }\n\n function transferInternal(address from, address to, uint256 value) public {\n _transfer(from, to, value);\n }\n\n function approveInternal(address owner, address spender, uint256 value) public {\n _approve(owner, spender, value);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20Mock.sol", + "sourceMap": "120:720:36:-:0;;;154:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;316:4;322:6;2087:4:71;2079:5;:12;;;;;;;;;;;;:::i;:::-;;2111:6;2101:7;:16;;;;;;;;;;;;:::i;:::-;;2139:2;2127:9;;:14;;;;;;;;;;;;;;;;;;2007:141;;340:37:36::1;346:14;362;340:5;;;:37;;:::i;:::-;154:230:::0;;;;120:720;;7829:370:71;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;;;:49;;:::i;:::-;8055:24;8072:6;8055:12;;:16;;;;;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;10691:92::-;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;120:720:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "120:720:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3256:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;588:117:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4875:317:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3115:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5587:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;390:93:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;711:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3412:117:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2407:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;489:93:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6289:266:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3732:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3962:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2213:81;2250:13;2282:5;2275:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81;:::o;4249:166::-;4332:4;4348:39;4357:12;:10;:12::i;:::-;4371:7;4380:6;4348:8;:39::i;:::-;4404:4;4397:11;;4249:166;;;;:::o;3256:98::-;3309:7;3335:12;;3328:19;;3256:98;:::o;588:117:36:-;672:26;682:4;688:2;692:5;672:9;:26::i;:::-;588:117;;;:::o;4875:317:71:-;4981:4;4997:36;5007:6;5015:9;5026:6;4997:9;:36::i;:::-;5043:121;5052:6;5060:12;:10;:12::i;:::-;5074:89;5112:6;5074:89;;;;;;;;;;;;;;;;;:11;:19;5086:6;5074:19;;;;;;;;;;;;;;;:33;5094:12;:10;:12::i;:::-;5074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5043:8;:121::i;:::-;5181:4;5174:11;;4875:317;;;;;:::o;3115:81::-;3156:5;3180:9;;;;;;;;;;;3173:16;;3115:81;:::o;5587:215::-;5675:4;5691:83;5700:12;:10;:12::i;:::-;5714:7;5723:50;5762:10;5723:11;:25;5735:12;:10;:12::i;:::-;5723:25;;;;;;;;;;;;;;;:34;5749:7;5723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5691:8;:83::i;:::-;5791:4;5784:11;;5587:215;;;;:::o;390:93:36:-;454:22;460:7;469:6;454:5;:22::i;:::-;390:93;;:::o;711:127::-;800:31;809:5;816:7;825:5;800:8;:31::i;:::-;711:127;;;:::o;3412:117:71:-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;2407:85::-;2446:13;2478:7;2471:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:85;:::o;489:93:36:-;553:22;559:7;568:6;553:5;:22::i;:::-;489:93;;:::o;6289:266:71:-;6382:4;6398:129;6407:12;:10;:12::i;:::-;6421:7;6430:96;6469:15;6430:96;;;;;;;;;;;;;;;;;:11;:25;6442:12;:10;:12::i;:::-;6430:25;;;;;;;;;;;;;;;:34;6456:7;6430:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6398:8;:129::i;:::-;6544:4;6537:11;;6289:266;;;;:::o;3732:172::-;3818:4;3834:42;3844:12;:10;:12::i;:::-;3858:9;3869:6;3834:9;:42::i;:::-;3893:4;3886:11;;3732:172;;;;:::o;3962:149::-;4051:7;4077:11;:18;4089:5;4077:18;;;;;;;;;;;;;;;:27;4096:7;4077:27;;;;;;;;;;;;;;;;4070:34;;3962:149;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;9353:340:71:-;9471:1;9454:19;;:5;:19;;;;9446:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:1;9532:21;;:7;:21;;;;9524:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9633:6;9603:11;:18;9615:5;9603:18;;;;;;;;;;;;;;;:27;9622:7;9603:27;;;;;;;;;;;;;;;:36;;;;9670:7;9654:32;;9663:5;9654:32;;;9679:6;9654:32;;;;;;;;;;;;;;;;;;9353:340;;;:::o;7029:530::-;7152:1;7134:20;;:6;:20;;;;7126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1;7214:23;;:9;:23;;;;7206:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7288:47;7309:6;7317:9;7328:6;7288:20;:47::i;:::-;7366:71;7388:6;7366:71;;;;;;;;;;;;;;;;;:9;:17;7376:6;7366:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7346:9;:17;7356:6;7346:17;;;;;;;;;;;;;;;:91;;;;7470:32;7495:6;7470:9;:20;7480:9;7470:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;:55;;;;7534:9;7517:35;;7526:6;7517:35;;;7545:6;7517:35;;;;;;;;;;;;;;;;;;7029:530;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;7829:370:71:-;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;:49::i;:::-;8055:24;8072:6;8055:12;;:16;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;8518:410::-;8620:1;8601:21;;:7;:21;;;;8593:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:49;8692:7;8709:1;8713:6;8671:20;:49::i;:::-;8752:68;8775:6;8752:68;;;;;;;;;;;;;;;;;:9;:18;8762:7;8752:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8731:9;:18;8741:7;8731:18;;;;;;;;;;;;;;;:89;;;;8845:24;8862:6;8845:12;;:16;;:24;;;;:::i;:::-;8830:12;:39;;;;8910:1;8884:37;;8893:7;8884:37;;;8914:6;8884:37;;;;;;;;;;;;;;;;;;8518:410;;:::o;10691:92::-;;;;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "initialAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialBalance", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approveInternal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferInternal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20Mock.sol", + "exportedSymbols": { + "ERC20Mock": [ + 3695 + ] + }, + "id": 3696, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3612, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:36" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 3613, + "nodeType": "ImportDirective", + "scope": 3696, + "sourceUnit": 7391, + "src": "58:34:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3614, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7390, + "src": "142:5:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$7390", + "typeString": "contract ERC20" + } + }, + "id": 3615, + "nodeType": "InheritanceSpecifier", + "src": "142:5:36" + } + ], + "contractDependencies": [ + 26, + 7390, + 7969 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3695, + "linearizedBaseContracts": [ + 3695, + 7390, + 7969, + 26 + ], + "name": "ERC20Mock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3635, + "nodeType": "Block", + "src": "330:54:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3631, + "name": "initialAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "346:14:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3632, + "name": "initialBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "362:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3630, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "340:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "340:37:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3634, + "nodeType": "ExpressionStatement", + "src": "340:37:36" + } + ] + }, + "documentation": null, + "id": 3636, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3626, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3617, + "src": "316:4:36", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3627, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3619, + "src": "322:6:36", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3628, + "modifierName": { + "argumentTypes": null, + "id": 3625, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7390, + "src": "310:5:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7390_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "310:19:36" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3617, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3636, + "src": "176:18:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3616, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "176:6:36", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3619, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3636, + "src": "204:20:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3618, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "204:6:36", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3621, + "mutability": "mutable", + "name": "initialAccount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3636, + "src": "234:22:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3620, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "234:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3623, + "mutability": "mutable", + "name": "initialBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3636, + "src": "266:22:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "266:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "166:128:36" + }, + "returnParameters": { + "id": 3629, + "nodeType": "ParameterList", + "parameters": [], + "src": "330:0:36" + }, + "scope": 3695, + "src": "154:230:36", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3648, + "nodeType": "Block", + "src": "444:39:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3644, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3638, + "src": "460:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3645, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3640, + "src": "469:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3643, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "454:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "454:22:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3647, + "nodeType": "ExpressionStatement", + "src": "454:22:36" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 3649, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3638, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3649, + "src": "404:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "404:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3640, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3649, + "src": "421:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "421:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "403:33:36" + }, + "returnParameters": { + "id": 3642, + "nodeType": "ParameterList", + "parameters": [], + "src": "444:0:36" + }, + "scope": 3695, + "src": "390:93:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3661, + "nodeType": "Block", + "src": "543:39:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3657, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3651, + "src": "559:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3658, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3653, + "src": "568:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3656, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "553:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "553:22:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3660, + "nodeType": "ExpressionStatement", + "src": "553:22:36" + } + ] + }, + "documentation": null, + "functionSelector": "9dc29fac", + "id": 3662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3651, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3662, + "src": "503:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "503:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3653, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3662, + "src": "520:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "502:33:36" + }, + "returnParameters": { + "id": 3655, + "nodeType": "ParameterList", + "parameters": [], + "src": "543:0:36" + }, + "scope": 3695, + "src": "489:93:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3677, + "nodeType": "Block", + "src": "662:43:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3672, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3664, + "src": "682:4:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3673, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3666, + "src": "688:2:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3674, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "692:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3671, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7211, + "src": "672:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:26:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3676, + "nodeType": "ExpressionStatement", + "src": "672:26:36" + } + ] + }, + "documentation": null, + "functionSelector": "222f5be0", + "id": 3678, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferInternal", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3664, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3678, + "src": "614:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "614:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3666, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3678, + "src": "628:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3665, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "628:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3668, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3678, + "src": "640:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "640:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "613:41:36" + }, + "returnParameters": { + "id": 3670, + "nodeType": "ParameterList", + "parameters": [], + "src": "662:0:36" + }, + "scope": 3695, + "src": "588:117:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3693, + "nodeType": "Block", + "src": "790:48:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3688, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3680, + "src": "809:5:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3689, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "816:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3690, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "825:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3687, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7367, + "src": "800:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "800:31:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3692, + "nodeType": "ExpressionStatement", + "src": "800:31:36" + } + ] + }, + "documentation": null, + "functionSelector": "56189cb4", + "id": 3694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveInternal", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3680, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3694, + "src": "736:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "736:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3682, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3694, + "src": "751:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "751:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3684, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3694, + "src": "768:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "768:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "735:47:36" + }, + "returnParameters": { + "id": 3686, + "nodeType": "ParameterList", + "parameters": [], + "src": "790:0:36" + }, + "scope": 3695, + "src": "711:127:36", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3696, + "src": "120:720:36" + } + ], + "src": "33:808:36" + }, + "bytecode": "0x608060405260405162001c6038038062001c60833981810160405260808110156200002957600080fd5b81019080805160405193929190846401000000008211156200004a57600080fd5b838201915060208201858111156200006157600080fd5b82518660018202830111640100000000821117156200007f57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000b557808201518184015260208101905062000098565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010757600080fd5b838201915060208201858111156200011e57600080fd5b82518660018202830111640100000000821117156200013c57600080fd5b8083526020830192505050908051906020019080838360005b838110156200017257808201518184015260208101905062000155565b50505050905090810190601f168015620001a05780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919050505083838160039080519060200190620001d892919062000498565b508060049080519060200190620001f192919062000498565b506012600560006101000a81548160ff021916908360ff16021790555050506200022282826200022c60201b60201c565b5050505062000547565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620002e4600083836200040a60201b60201c565b62000300816002546200040f60201b62000bad1790919060201c565b6002819055506200035e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200040f60201b62000bad1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004db57805160ff19168380011785556200050c565b828001600101855582156200050c579182015b828111156200050b578251825591602001919060010190620004ee565b5b5090506200051b91906200051f565b5090565b6200054491905b808211156200054057600081600090555060010162000526565b5090565b90565b61170980620005576000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac14610516578063a457c2d714610564578063a9059cbb146105ca578063dd62ed3e14610630576100f5565b806340c10f191461037f57806356189cb4146103cd57806370a082311461043b57806395d89b4114610493576100f5565b8063222f5be0116100d3578063222f5be01461020157806323b872dd1461026f578063313ce567146102f55780633950935114610319576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b6101026106a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061074a565b604051808215151515815260200191505060405180910390f35b6101eb610768565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610772565b005b6102db6004803603606081101561028557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610782565b604051808215151515815260200191505060405180910390f35b6102fd61085b565b604051808260ff1660ff16815260200191505060405180910390f35b6103656004803603604081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610872565b604051808215151515815260200191505060405180910390f35b6103cb6004803603604081101561039557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610925565b005b610439600480360360608110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610933565b005b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610943565b6040518082815260200191505060405180910390f35b61049b61098b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104db5780820151818401526020810190506104c0565b50505050905090810190601f1680156105085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105626004803603604081101561052c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2d565b005b6105b06004803603604081101561057a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a3b565b604051808215151515815260200191505060405180910390f35b610616600480360360408110156105e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b08565b604051808215151515815260200191505060405180910390f35b6106926004803603604081101561064657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b26565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b5050505050905090565b600061075e610757610c35565b8484610c3d565b6001905092915050565b6000600254905090565b61077d838383610e34565b505050565b600061078f848484610e34565b6108508461079b610c35565b61084b8560405180606001604052806028815260200161161d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610801610c35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b610c3d565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061091b61087f610c35565b846109168560016000610890610c35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bad90919063ffffffff16565b610c3d565b6001905092915050565b61092f82826111b5565b5050565b61093e838383610c3d565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050905090565b610a37828261137c565b5050565b6000610afe610a48610c35565b84610af9856040518060600160405280602581526020016116af6025913960016000610a72610c35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b610c3d565b6001905092915050565b6000610b1c610b15610c35565b8484610e34565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610c2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061168b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d49576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115d56022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806116666025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806115906023913960400191505060405180910390fd5b610f4b838383611540565b610fb6816040518060600160405280602681526020016115f7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611049816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bad90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906111a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561116757808201518184015260208101905061114c565b50505050905090810190601f1680156111945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61126460008383611540565b61127981600254610bad90919063ffffffff16565b6002819055506112d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bad90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116456021913960400191505060405180910390fd5b61140e82600083611540565b611479816040518060600160405280602281526020016115b3602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114d08160025461154590919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b600061158783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f5565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a83b7a7b05592896eb3bfc9b29f78753fc595919cf154bdaad4be46c7ea7218464736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac14610516578063a457c2d714610564578063a9059cbb146105ca578063dd62ed3e14610630576100f5565b806340c10f191461037f57806356189cb4146103cd57806370a082311461043b57806395d89b4114610493576100f5565b8063222f5be0116100d3578063222f5be01461020157806323b872dd1461026f578063313ce567146102f55780633950935114610319576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b6101026106a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061074a565b604051808215151515815260200191505060405180910390f35b6101eb610768565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610772565b005b6102db6004803603606081101561028557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610782565b604051808215151515815260200191505060405180910390f35b6102fd61085b565b604051808260ff1660ff16815260200191505060405180910390f35b6103656004803603604081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610872565b604051808215151515815260200191505060405180910390f35b6103cb6004803603604081101561039557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610925565b005b610439600480360360608110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610933565b005b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610943565b6040518082815260200191505060405180910390f35b61049b61098b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104db5780820151818401526020810190506104c0565b50505050905090810190601f1680156105085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105626004803603604081101561052c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2d565b005b6105b06004803603604081101561057a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a3b565b604051808215151515815260200191505060405180910390f35b610616600480360360408110156105e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b08565b604051808215151515815260200191505060405180910390f35b6106926004803603604081101561064657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b26565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b5050505050905090565b600061075e610757610c35565b8484610c3d565b6001905092915050565b6000600254905090565b61077d838383610e34565b505050565b600061078f848484610e34565b6108508461079b610c35565b61084b8560405180606001604052806028815260200161161d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610801610c35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b610c3d565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061091b61087f610c35565b846109168560016000610890610c35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bad90919063ffffffff16565b610c3d565b6001905092915050565b61092f82826111b5565b5050565b61093e838383610c3d565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b5050505050905090565b610a37828261137c565b5050565b6000610afe610a48610c35565b84610af9856040518060600160405280602581526020016116af6025913960016000610a72610c35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b610c3d565b6001905092915050565b6000610b1c610b15610c35565b8484610e34565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610c2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061168b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d49576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115d56022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806116666025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806115906023913960400191505060405180910390fd5b610f4b838383611540565b610fb6816040518060600160405280602681526020016115f7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611049816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bad90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906111a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561116757808201518184015260208101905061114c565b50505050905090810190601f1680156111945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61126460008383611540565b61127981600254610bad90919063ffffffff16565b6002819055506112d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bad90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116456021913960400191505060405180910390fd5b61140e82600083611540565b611479816040518060600160405280602281526020016115b3602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f59092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114d08160025461154590919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b600061158783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f5565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a83b7a7b05592896eb3bfc9b29f78753fc595919cf154bdaad4be46c7ea7218464736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20NoReturnMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20NoReturnMock.json new file mode 100644 index 0000000..7e82425 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20NoReturnMock.json @@ -0,0 +1,4837 @@ +{ + "fileName": "SafeERC20Helper.sol", + "contractName": "ERC20NoReturnMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\n\ncontract ERC20ReturnFalseMock is Context {\n uint256 private _allowance;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function allowance(address, address) public view returns (uint256) {\n require(_dummy == 0); // Duummy read from a state variable so that the function is view\n return 0;\n }\n}\n\ncontract ERC20ReturnTrueMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract ERC20NoReturnMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public {\n _dummy = 0;\n }\n\n function transferFrom(address, address, uint256) public {\n _dummy = 0;\n }\n\n function approve(address, uint256) public {\n _dummy = 0;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract SafeERC20Wrapper is Context {\n using SafeERC20 for IERC20;\n\n IERC20 private _token;\n\n constructor (IERC20 token) public {\n _token = token;\n }\n\n function transfer() public {\n _token.safeTransfer(address(0), 0);\n }\n\n function transferFrom() public {\n _token.safeTransferFrom(address(0), address(0), 0);\n }\n\n function approve(uint256 amount) public {\n _token.safeApprove(address(0), amount);\n }\n\n function increaseAllowance(uint256 amount) public {\n _token.safeIncreaseAllowance(address(0), amount);\n }\n\n function decreaseAllowance(uint256 amount) public {\n _token.safeDecreaseAllowance(address(0), amount);\n }\n\n function setAllowance(uint256 allowance_) public {\n ERC20ReturnTrueMock(address(_token)).setAllowance(allowance_);\n }\n\n function allowance() public view returns (uint256) {\n return _token.allowance(address(0), address(0));\n }\n}\n", + "sourcePath": "contracts/mocks/SafeERC20Helper.sol", + "sourceMap": "1846:757:60:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "1846:757:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2212:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2376:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2136:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2486:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2301:69;2362:1;2353:6;:10;;;;2301:69;;:::o;2212:83::-;2287:1;2278:6;:10;;;;2212:83;;;:::o;2376:104::-;2463:10;2435:11;:25;2447:12;:10;:12::i;:::-;2435:25;;;;;;;;;;;;;;;:38;;;;2376:104;:::o;2136:70::-;2198:1;2189:6;:10;;;;2136:70;;:::o;2486:115::-;2550:7;2576:11;:18;2588:5;2576:18;;;;;;;;;;;;;;;;2569:25;;2486:115;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "allowance_", + "type": "uint256" + } + ], + "name": "setAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SafeERC20Helper.sol", + "exportedSymbols": { + "ERC20NoReturnMock": [ + 5621 + ], + "ERC20ReturnFalseMock": [ + 5461 + ], + "ERC20ReturnTrueMock": [ + 5547 + ], + "SafeERC20Wrapper": [ + 5753 + ] + }, + "id": 5754, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5383, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:60" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 5384, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 27, + "src": "58:28:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 5385, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 7970, + "src": "87:35:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 5386, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 8198, + "src": "123:38:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5387, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "196:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5388, + "nodeType": "InheritanceSpecifier", + "src": "196:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5461, + "linearizedBaseContracts": [ + 5461, + 26 + ], + "name": "ERC20ReturnFalseMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5390, + "mutability": "mutable", + "name": "_allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "210:26:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "210:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5392, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "405:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5407, + "nodeType": "Block", + "src": "492:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5401, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "502:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "511:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "502:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5404, + "nodeType": "ExpressionStatement", + "src": "502:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "529:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5400, + "id": 5406, + "nodeType": "Return", + "src": "522:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5394, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "452:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5396, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "461:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:18:60" + }, + "returnParameters": { + "id": 5400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5399, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "486:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5398, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "486:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "485:6:60" + }, + "scope": 5461, + "src": "434:107:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5425, + "nodeType": "Block", + "src": "618:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5419, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "628:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "628:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5422, + "nodeType": "ExpressionStatement", + "src": "628:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5418, + "id": 5424, + "nodeType": "Return", + "src": "648:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5426, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5410, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "569:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "569:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "578:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "587:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "568:27:60" + }, + "returnParameters": { + "id": 5418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5417, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "612:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "612:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:6:60" + }, + "scope": 5461, + "src": "547:120:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5441, + "nodeType": "Block", + "src": "730:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5435, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "740:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "749:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "740:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "740:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "767:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5434, + "id": 5440, + "nodeType": "Return", + "src": "760:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5428, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "690:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "690:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "699:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "689:18:60" + }, + "returnParameters": { + "id": 5434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5433, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "724:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5432, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "724:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "723:6:60" + }, + "scope": 5461, + "src": "673:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5459, + "nodeType": "Block", + "src": "852:121:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5452, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "870:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "870:11:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5451, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "862:7:60", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "862:20:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5456, + "nodeType": "ExpressionStatement", + "src": "862:20:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "965:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5450, + "id": 5458, + "nodeType": "Return", + "src": "958:8:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "804:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "804:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "813:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "803:18:60" + }, + "returnParameters": { + "id": 5450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5449, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "843:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "843:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "842:9:60" + }, + "scope": 5461, + "src": "785:188:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "163:812:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5462, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1009:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5463, + "nodeType": "InheritanceSpecifier", + "src": "1009:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5547, + "linearizedBaseContracts": [ + 5547, + 26 + ], + "name": "ERC20ReturnTrueMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5467, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1023:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5466, + "keyType": { + "id": 5464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1032:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1023:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5469, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1240:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1240:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5484, + "nodeType": "Block", + "src": "1327:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5478, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1337:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1346:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1337:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5481, + "nodeType": "ExpressionStatement", + "src": "1337:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1364:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5477, + "id": 5483, + "nodeType": "Return", + "src": "1357:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5471, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1287:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1287:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5473, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1296:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1286:18:60" + }, + "returnParameters": { + "id": 5477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5476, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1321:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5475, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1321:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1320:6:60" + }, + "scope": 5547, + "src": "1269:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5502, + "nodeType": "Block", + "src": "1452:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5496, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1462:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1471:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1462:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5499, + "nodeType": "ExpressionStatement", + "src": "1462:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1489:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5495, + "id": 5501, + "nodeType": "Return", + "src": "1482:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1403:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1403:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5489, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1412:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1412:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5491, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1421:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1421:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1402:27:60" + }, + "returnParameters": { + "id": 5495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5494, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1446:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1446:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1445:6:60" + }, + "scope": 5547, + "src": "1381:119:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5518, + "nodeType": "Block", + "src": "1563:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5512, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1573:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1573:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5515, + "nodeType": "ExpressionStatement", + "src": "1573:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1600:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5511, + "id": 5517, + "nodeType": "Return", + "src": "1593:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5505, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1523:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1523:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5507, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1532:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1532:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1522:18:60" + }, + "returnParameters": { + "id": 5511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5510, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1557:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5509, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1557:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1556:6:60" + }, + "scope": 5547, + "src": "1506:105:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5531, + "nodeType": "Block", + "src": "1666:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5524, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1676:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5527, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5525, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1688:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1688:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1676:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5528, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5521, + "src": "1704:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1676:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5530, + "nodeType": "ExpressionStatement", + "src": "1676:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5521, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5532, + "src": "1639:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1638:20:60" + }, + "returnParameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [], + "src": "1666:0:60" + }, + "scope": 5547, + "src": "1617:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5545, + "nodeType": "Block", + "src": "1800:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5541, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1817:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5543, + "indexExpression": { + "argumentTypes": null, + "id": 5542, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5534, + "src": "1829:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1817:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5540, + "id": 5544, + "nodeType": "Return", + "src": "1810:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5534, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1746:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1746:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5536, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1761:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1761:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1745:24:60" + }, + "returnParameters": { + "id": 5540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5539, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1791:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1791:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1790:9:60" + }, + "scope": 5547, + "src": "1727:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "977:867:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5548, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1876:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5549, + "nodeType": "InheritanceSpecifier", + "src": "1876:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5621, + "linearizedBaseContracts": [ + 5621, + 26 + ], + "name": "ERC20NoReturnMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5553, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "1890:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5552, + "keyType": { + "id": 5550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1899:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1890:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1910:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5555, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "2107:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5566, + "nodeType": "Block", + "src": "2179:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5562, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2189:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2198:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2189:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5565, + "nodeType": "ExpressionStatement", + "src": "2189:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2154:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2154:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5559, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2163:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2153:18:60" + }, + "returnParameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [], + "src": "2179:0:60" + }, + "scope": 5621, + "src": "2136:70:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5580, + "nodeType": "Block", + "src": "2268:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5576, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2278:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2278:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5579, + "nodeType": "ExpressionStatement", + "src": "2278:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5581, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5569, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2234:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2234:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2243:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2243:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5573, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2252:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2252:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2233:27:60" + }, + "returnParameters": { + "id": 5575, + "nodeType": "ParameterList", + "parameters": [], + "src": "2268:0:60" + }, + "scope": 5621, + "src": "2212:83:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5592, + "nodeType": "Block", + "src": "2343:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5588, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2353:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2353:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5591, + "nodeType": "ExpressionStatement", + "src": "2353:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5583, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2318:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2318:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5585, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2327:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2327:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2317:18:60" + }, + "returnParameters": { + "id": 5587, + "nodeType": "ParameterList", + "parameters": [], + "src": "2343:0:60" + }, + "scope": 5621, + "src": "2301:69:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5605, + "nodeType": "Block", + "src": "2425:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5598, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2435:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5601, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5599, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2447:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2447:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2435:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5602, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5595, + "src": "2463:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2435:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5604, + "nodeType": "ExpressionStatement", + "src": "2435:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5595, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5606, + "src": "2398:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2398:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2397:20:60" + }, + "returnParameters": { + "id": 5597, + "nodeType": "ParameterList", + "parameters": [], + "src": "2425:0:60" + }, + "scope": 5621, + "src": "2376:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5619, + "nodeType": "Block", + "src": "2559:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5615, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2576:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5617, + "indexExpression": { + "argumentTypes": null, + "id": 5616, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5608, + "src": "2588:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2576:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5614, + "id": 5618, + "nodeType": "Return", + "src": "2569:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5608, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2505:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2505:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5610, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2520:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2520:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2504:24:60" + }, + "returnParameters": { + "id": 5614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5613, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2550:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2549:9:60" + }, + "scope": 5621, + "src": "2486:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "1846:757:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5622, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "2634:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5623, + "nodeType": "InheritanceSpecifier", + "src": "2634:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5753, + "linearizedBaseContracts": [ + 5753, + 26 + ], + "name": "SafeERC20Wrapper", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5626, + "libraryName": { + "contractScope": null, + "id": 5624, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8197, + "src": "2654:9:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$8197", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "2648:27:60", + "typeName": { + "contractScope": null, + "id": 5625, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2668:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 5628, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5753, + "src": "2681:21:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5627, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2681:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5637, + "nodeType": "Block", + "src": "2743:31:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5633, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2753:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5634, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "2762:5:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "src": "2753:14:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5636, + "nodeType": "ExpressionStatement", + "src": "2753:14:60" + } + ] + }, + "documentation": null, + "id": 5638, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5638, + "src": "2722:12:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5629, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2722:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2721:14:60" + }, + "returnParameters": { + "id": 5632, + "nodeType": "ParameterList", + "parameters": [], + "src": "2743:0:60" + }, + "scope": 5753, + "src": "2709:65:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5651, + "nodeType": "Block", + "src": "2807:51:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2845:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2837:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2849:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5641, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2817:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8003, + "src": "2817:19:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2817:34:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5650, + "nodeType": "ExpressionStatement", + "src": "2817:34:60" + } + ] + }, + "documentation": null, + "functionSelector": "8a4068dd", + "id": 5652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [], + "src": "2797:2:60" + }, + "returnParameters": { + "id": 5640, + "nodeType": "ParameterList", + "parameters": [], + "src": "2807:0:60" + }, + "scope": 5753, + "src": "2780:78:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5669, + "nodeType": "Block", + "src": "2895:67:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2937:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2929:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2949:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2941:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5655, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2905:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8028, + "src": "2905:23:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 5667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2905:50:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5668, + "nodeType": "ExpressionStatement", + "src": "2905:50:60" + } + ] + }, + "documentation": null, + "functionSelector": "811c34d3", + "id": 5670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5653, + "nodeType": "ParameterList", + "parameters": [], + "src": "2885:2:60" + }, + "returnParameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [], + "src": "2895:0:60" + }, + "scope": 5753, + "src": "2864:98:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5685, + "nodeType": "Block", + "src": "3008:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3045:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3037:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5682, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5672, + "src": "3049:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5675, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3018:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 8070, + "src": "3018:18:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3018:38:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5684, + "nodeType": "ExpressionStatement", + "src": "3018:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "b759f954", + "id": 5686, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "2985:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2985:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2984:16:60" + }, + "returnParameters": { + "id": 5674, + "nodeType": "ParameterList", + "parameters": [], + "src": "3008:0:60" + }, + "scope": 5753, + "src": "2968:95:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5701, + "nodeType": "Block", + "src": "3119:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3166:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3158:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5698, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "3170:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5691, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3129:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeIncreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8106, + "src": "3129:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3129:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5700, + "nodeType": "ExpressionStatement", + "src": "3129:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "11e330b2", + "id": 5702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5688, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5702, + "src": "3096:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3096:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:16:60" + }, + "returnParameters": { + "id": 5690, + "nodeType": "ParameterList", + "parameters": [], + "src": "3119:0:60" + }, + "scope": 5753, + "src": "3069:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5717, + "nodeType": "Block", + "src": "3240:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3279:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5704, + "src": "3291:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5707, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3250:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeDecreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8143, + "src": "3250:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3250:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5716, + "nodeType": "ExpressionStatement", + "src": "3250:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "10bad4cf", + "id": 5718, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5704, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5718, + "src": "3217:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3217:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3216:16:60" + }, + "returnParameters": { + "id": 5706, + "nodeType": "ParameterList", + "parameters": [], + "src": "3240:0:60" + }, + "scope": 5753, + "src": "3190:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5733, + "nodeType": "Block", + "src": "3360:78:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5730, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5720, + "src": "3420:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5726, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3398:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 5725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3390:15:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5723, + "name": "ERC20ReturnTrueMock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5547, + "src": "3370:19:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20ReturnTrueMock_$5547_$", + "typeString": "type(contract ERC20ReturnTrueMock)" + } + }, + "id": 5728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:36:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20ReturnTrueMock_$5547", + "typeString": "contract ERC20ReturnTrueMock" + } + }, + "id": 5729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5532, + "src": "3370:49:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:61:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5732, + "nodeType": "ExpressionStatement", + "src": "3370:61:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5720, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5734, + "src": "3333:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3333:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3332:20:60" + }, + "returnParameters": { + "id": 5722, + "nodeType": "ParameterList", + "parameters": [], + "src": "3360:0:60" + }, + "scope": 5753, + "src": "3311:127:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5751, + "nodeType": "Block", + "src": "3495:64:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3537:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3529:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3549:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3541:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 5739, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3512:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 7928, + "src": "3512:16:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3512:40:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5738, + "id": 5750, + "nodeType": "Return", + "src": "3505:47:60" + } + ] + }, + "documentation": null, + "functionSelector": "de242ff4", + "id": 5752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5735, + "nodeType": "ParameterList", + "parameters": [], + "src": "3462:2:60" + }, + "returnParameters": { + "id": 5738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5737, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5752, + "src": "3486:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3486:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3485:9:60" + }, + "scope": 5753, + "src": "3444:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "2605:956:60" + } + ], + "src": "33:3529:60" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610305806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063095ea7b31461005c57806323b872dd146100aa5780633ba93f2614610118578063a9059cbb14610146578063dd62ed3e14610194575b600080fd5b6100a86004803603604081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061020c565b005b610116600480360360608110156100c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610218565b005b6101446004803603602081101561012e57600080fd5b8101908080359060200190929190505050610225565b005b6101926004803603604081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610272565b005b6101f6600480360360408110156101aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061027e565b6040518082815260200191505060405180910390f35b60006001819055505050565b6000600181905550505050565b806000806102316102c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60006001819055505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003390509056fea264697066735822122049c5c299a7df1038febe8056465ac8d7b56f806e7195685d66dd84e07e4e766f64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063095ea7b31461005c57806323b872dd146100aa5780633ba93f2614610118578063a9059cbb14610146578063dd62ed3e14610194575b600080fd5b6100a86004803603604081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061020c565b005b610116600480360360608110156100c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610218565b005b6101446004803603602081101561012e57600080fd5b8101908080359060200190929190505050610225565b005b6101926004803603604081101561015c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610272565b005b6101f6600480360360408110156101aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061027e565b6040518082815260200191505060405180910390f35b60006001819055505050565b6000600181905550505050565b806000806102316102c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60006001819055505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003390509056fea264697066735822122049c5c299a7df1038febe8056465ac8d7b56f806e7195685d66dd84e07e4e766f64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Pausable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Pausable.json new file mode 100644 index 0000000..2d89d24 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Pausable.json @@ -0,0 +1,799 @@ +{ + "fileName": "ERC20Pausable.sol", + "contractName": "ERC20Pausable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ERC20.sol\";\nimport \"../../utils/Pausable.sol\";\n\n/**\n * @dev ERC20 token with pausable token transfers, minting and burning.\n *\n * Useful for scenarios such as preventing trades until the end of an evaluation\n * period, or having an emergency switch for freezing all token transfers in the\n * event of a large bug.\n */\nabstract contract ERC20Pausable is ERC20, Pausable {\n /**\n * @dev See {ERC20-_beforeTokenTransfer}.\n *\n * Requirements:\n *\n * - the contract must not be paused.\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {\n super._beforeTokenTransfer(from, to, amount);\n\n require(!paused(), \"ERC20Pausable: token transfer while paused\");\n }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20Pausable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20Pausable.sol", + "exportedSymbols": { + "ERC20Pausable": [ + 9362 + ] + }, + "id": 9363, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9327, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:87" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 9328, + "nodeType": "ImportDirective", + "scope": 9363, + "sourceUnit": 9195, + "src": "58:21:87", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Pausable.sol", + "file": "../../utils/Pausable.sol", + "id": 9329, + "nodeType": "ImportDirective", + "scope": 9363, + "sourceUnit": 13998, + "src": "80:34:87", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9331, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "421:5:87", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + "id": 9332, + "nodeType": "InheritanceSpecifier", + "src": "421:5:87" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9333, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13997, + "src": "428:8:87", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$13997", + "typeString": "contract Pausable" + } + }, + "id": 9334, + "nodeType": "InheritanceSpecifier", + "src": "428:8:87" + } + ], + "contractDependencies": [ + 22, + 9194, + 9773, + 13997 + ], + "contractKind": "contract", + "documentation": { + "id": 9330, + "nodeType": "StructuredDocumentation", + "src": "116:269:87", + "text": " @dev ERC20 token with pausable token transfers, minting and burning.\n Useful for scenarios such as preventing trades until the end of an evaluation\n period, or having an emergency switch for freezing all token transfers in the\n event of a large bug." + }, + "fullyImplemented": false, + "id": 9362, + "linearizedBaseContracts": [ + 9362, + 13997, + 9194, + 9773, + 22 + ], + "name": "ERC20Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 9193 + ], + "body": { + "id": 9360, + "nodeType": "Block", + "src": "680:136:87", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9348, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9337, + "src": "717:4:87", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9349, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9339, + "src": "723:2:87", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9350, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9341, + "src": "727:6:87", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9345, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "690:5:87", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$9362", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 9347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9193, + "src": "690:26:87", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "690:44:87", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9352, + "nodeType": "ExpressionStatement", + "src": "690:44:87" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "753:9:87", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9354, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13943, + "src": "754:6:87", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 9355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "754:8:87", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564", + "id": 9357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "764:44:87", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fcb1fc9f3615fd38ab90d28b50a608758c295eeacbd5840421a4ee3b0df2f1f4", + "typeString": "literal_string \"ERC20Pausable: token transfer while paused\"" + }, + "value": "ERC20Pausable: token transfer while paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fcb1fc9f3615fd38ab90d28b50a608758c295eeacbd5840421a4ee3b0df2f1f4", + "typeString": "literal_string \"ERC20Pausable: token transfer while paused\"" + } + ], + "id": 9353, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "745:7:87", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "745:64:87", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9359, + "nodeType": "ExpressionStatement", + "src": "745:64:87" + } + ] + }, + "documentation": { + "id": 9335, + "nodeType": "StructuredDocumentation", + "src": "443:134:87", + "text": " @dev See {ERC20-_beforeTokenTransfer}.\n Requirements:\n - the contract must not be paused." + }, + "id": 9361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9343, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "671:8:87" + }, + "parameters": { + "id": 9342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9337, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9361, + "src": "612:12:87", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "612:7:87", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9339, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9361, + "src": "626:10:87", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:87", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9341, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9361, + "src": "638:14:87", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "638:7:87", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:42:87" + }, + "returnParameters": { + "id": 9344, + "nodeType": "ParameterList", + "parameters": [], + "src": "680:0:87" + }, + "scope": 9362, + "src": "582:234:87", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 9363, + "src": "386:432:87" + } + ], + "src": "33:786:87" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20PausableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20PausableMock.json new file mode 100644 index 0000000..0055256 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20PausableMock.json @@ -0,0 +1,1229 @@ +{ + "fileName": "ERC20PausableMock.sol", + "contractName": "ERC20PausableMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC20/ERC20Pausable.sol\";\n\n// mock class using ERC20Pausable\ncontract ERC20PausableMock is ERC20Pausable {\n constructor (\n string memory name,\n string memory symbol,\n address initialAccount,\n uint256 initialBalance\n ) public ERC20(name, symbol) {\n _mint(initialAccount, initialBalance);\n }\n\n function pause() external {\n _pause();\n }\n\n function unpause() external {\n _unpause();\n }\n\n function mint(address to, uint256 amount) public {\n _mint(to, amount);\n }\n\n function burn(address from, uint256 amount) public {\n _burn(from, amount);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20PausableMock.sol", + "sourceMap": "136:574:37:-:0;;;186:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;340:4;346:6;2087:4:71;2079:5;:12;;;;;;;;;;;;:::i;:::-;;2111:6;2101:7;:16;;;;;;;;;;;;:::i;:::-;;2139:2;2127:9;;:14;;;;;;;;;;;;;;;;;;2007:141;;933:5:97;923:7;;:15;;;;;;;;;;;;;;;;;;364:37:37::1;370:14;386;364:5;;;:37;;:::i;:::-;186:222:::0;;;;136:574;;7829:370:71;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;;;:49;;:::i;:::-;8055:24;8072:6;8055:12;;:16;;;;;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;582:234:74:-;690:44;717:4;723:2;727:6;690:26;;;;;:44;;:::i;:::-;754:8;:6;;;:8;;:::i;:::-;753:9;745:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;582:234;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;10691:92:71:-;;;;:::o;1040:76:97:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;136:574:37:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "136:574:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3256:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4875:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3115:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5587:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;471:55:37;;;:::i;:::-;;532:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1040:76:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3412:117:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;414:51:37;;;:::i;:::-;;2407:85:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;621:87:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6289:266:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3732:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3962:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2213:81;2250:13;2282:5;2275:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81;:::o;4249:166::-;4332:4;4348:39;4357:12;:10;:12::i;:::-;4371:7;4380:6;4348:8;:39::i;:::-;4404:4;4397:11;;4249:166;;;;:::o;3256:98::-;3309:7;3335:12;;3328:19;;3256:98;:::o;4875:317::-;4981:4;4997:36;5007:6;5015:9;5026:6;4997:9;:36::i;:::-;5043:121;5052:6;5060:12;:10;:12::i;:::-;5074:89;5112:6;5074:89;;;;;;;;;;;;;;;;;:11;:19;5086:6;5074:19;;;;;;;;;;;;;;;:33;5094:12;:10;:12::i;:::-;5074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5043:8;:121::i;:::-;5181:4;5174:11;;4875:317;;;;;:::o;3115:81::-;3156:5;3180:9;;;;;;;;;;;3173:16;;3115:81;:::o;5587:215::-;5675:4;5691:83;5700:12;:10;:12::i;:::-;5714:7;5723:50;5762:10;5723:11;:25;5735:12;:10;:12::i;:::-;5723:25;;;;;;;;;;;;;;;:34;5749:7;5723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5691:8;:83::i;:::-;5791:4;5784:11;;5587:215;;;;:::o;471:55:37:-;509:10;:8;:10::i;:::-;471:55::o;532:83::-;591:17;597:2;601:6;591:5;:17::i;:::-;532:83;;:::o;1040:76:97:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;3412:117:71:-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;414:51:37:-;450:8;:6;:8::i;:::-;414:51::o;2407:85:71:-;2446:13;2478:7;2471:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:85;:::o;621:87:37:-;682:19;688:4;694:6;682:5;:19::i;:::-;621:87;;:::o;6289:266:71:-;6382:4;6398:129;6407:12;:10;:12::i;:::-;6421:7;6430:96;6469:15;6430:96;;;;;;;;;;;;;;;;;:11;:25;6442:12;:10;:12::i;:::-;6430:25;;;;;;;;;;;;;;;:34;6456:7;6430:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6398:8;:129::i;:::-;6544:4;6537:11;;6289:266;;;;:::o;3732:172::-;3818:4;3834:42;3844:12;:10;:12::i;:::-;3858:9;3869:6;3834:9;:42::i;:::-;3893:4;3886:11;;3732:172;;;;:::o;3962:149::-;4051:7;4077:11;:18;4089:5;4077:18;;;;;;;;;;;;;;;:27;4096:7;4077:27;;;;;;;;;;;;;;;;4070:34;;3962:149;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;10691:92:71:-;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;9353:340:71:-;9471:1;9454:19;;:5;:19;;;;9446:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:1;9532:21;;:7;:21;;;;9524:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9633:6;9603:11;:18;9615:5;9603:18;;;;;;;;;;;;;;;:27;9622:7;9603:27;;;;;;;;;;;;;;;:36;;;;9670:7;9654:32;;9663:5;9654:32;;;9679:6;9654:32;;;;;;;;;;;;;;;;;;9353:340;;;:::o;7029:530::-;7152:1;7134:20;;:6;:20;;;;7126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1;7214:23;;:9;:23;;;;7206:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7288:47;7309:6;7317:9;7328:6;7288:20;:47::i;:::-;7366:71;7388:6;7366:71;;;;;;;;;;;;;;;;;:9;:17;7376:6;7366:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7346:9;:17;7356:6;7346:17;;;;;;;;;;;;;;;:91;;;;7470:32;7495:6;7470:9;:20;7480:9;7470:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;:55;;;;7534:9;7517:35;;7526:6;7517:35;;;7545:6;7517:35;;;;;;;;;;;;;;;;;;7029:530;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;1742:117:97:-;1460:7;;;;;;;;;;;1452:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:5:::1;1800:7;;:15;;;;;;;;;;;;;;;;;;1830:22;1839:12;:10;:12::i;:::-;1830:22;;;;;;;;;;;;;;;;;;;;;;1742:117::o:0;7829:370:71:-;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;:49::i;:::-;8055:24;8072:6;8055:12;;:16;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;1568:115:97:-;1269:7;;;;;;;;;;;1268:8;1260:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:4:::1;1627:7;;:14;;;;;;;;;;;;;;;;;;1656:20;1663:12;:10;:12::i;:::-;1656:20;;;;;;;;;;;;;;;;;;;;;;1568:115::o:0;8518:410:71:-;8620:1;8601:21;;:7;:21;;;;8593:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:49;8692:7;8709:1;8713:6;8671:20;:49::i;:::-;8752:68;8775:6;8752:68;;;;;;;;;;;;;;;;;:9;:18;8762:7;8752:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8731:9;:18;8741:7;8731:18;;;;;;;;;;;;;;;:89;;;;8845:24;8862:6;8845:12;;:16;;:24;;;;:::i;:::-;8830:12;:39;;;;8910:1;8884:37;;8893:7;8884:37;;;8914:6;8884:37;;;;;;;;;;;;;;;;;;8518:410;;:::o;582:234:74:-;690:44;717:4;723:2;727:6;690:26;:44::i;:::-;754:8;:6;:8::i;:::-;753:9;745:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;582:234;;;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "initialAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialBalance", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20PausableMock.sol", + "exportedSymbols": { + "ERC20PausableMock": [ + 3762 + ] + }, + "id": 3763, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3697, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:37" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Pausable.sol", + "file": "../token/ERC20/ERC20Pausable.sol", + "id": 3698, + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 7559, + "src": "58:42:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3699, + "name": "ERC20Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7558, + "src": "166:13:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Pausable_$7558", + "typeString": "contract ERC20Pausable" + } + }, + "id": 3700, + "nodeType": "InheritanceSpecifier", + "src": "166:13:37" + } + ], + "contractDependencies": [ + 26, + 7390, + 7558, + 7969, + 12085 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3762, + "linearizedBaseContracts": [ + 3762, + 7558, + 12085, + 7390, + 7969, + 26 + ], + "name": "ERC20PausableMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3720, + "nodeType": "Block", + "src": "354:54:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3716, + "name": "initialAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3706, + "src": "370:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3717, + "name": "initialBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3708, + "src": "386:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3715, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "364:5:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "364:37:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3719, + "nodeType": "ExpressionStatement", + "src": "364:37:37" + } + ] + }, + "documentation": null, + "id": 3721, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3711, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3702, + "src": "340:4:37", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3712, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3704, + "src": "346:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3713, + "modifierName": { + "argumentTypes": null, + "id": 3710, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7390, + "src": "334:5:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7390_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "334:19:37" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3702, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3721, + "src": "208:18:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3701, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "208:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3704, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3721, + "src": "236:20:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3703, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "236:6:37", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3706, + "mutability": "mutable", + "name": "initialAccount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3721, + "src": "266:22:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "266:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3708, + "mutability": "mutable", + "name": "initialBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3721, + "src": "298:22:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3707, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "298:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "198:128:37" + }, + "returnParameters": { + "id": 3714, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:37" + }, + "scope": 3762, + "src": "186:222:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3727, + "nodeType": "Block", + "src": "440:25:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3724, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12068, + "src": "450:6:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "450:8:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3726, + "nodeType": "ExpressionStatement", + "src": "450:8:37" + } + ] + }, + "documentation": null, + "functionSelector": "8456cb59", + "id": 3728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3722, + "nodeType": "ParameterList", + "parameters": [], + "src": "428:2:37" + }, + "returnParameters": { + "id": 3723, + "nodeType": "ParameterList", + "parameters": [], + "src": "440:0:37" + }, + "scope": 3762, + "src": "414:51:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3734, + "nodeType": "Block", + "src": "499:27:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3731, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12084, + "src": "509:8:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "509:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3733, + "nodeType": "ExpressionStatement", + "src": "509:10:37" + } + ] + }, + "documentation": null, + "functionSelector": "3f4ba83a", + "id": 3735, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3729, + "nodeType": "ParameterList", + "parameters": [], + "src": "487:2:37" + }, + "returnParameters": { + "id": 3730, + "nodeType": "ParameterList", + "parameters": [], + "src": "499:0:37" + }, + "scope": 3762, + "src": "471:55:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3747, + "nodeType": "Block", + "src": "581:34:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3743, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3737, + "src": "597:2:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3744, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3739, + "src": "601:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3742, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7266, + "src": "591:5:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "591:17:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3746, + "nodeType": "ExpressionStatement", + "src": "591:17:37" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 3748, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3737, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3748, + "src": "546:10:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3739, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3748, + "src": "558:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "558:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "545:28:37" + }, + "returnParameters": { + "id": 3741, + "nodeType": "ParameterList", + "parameters": [], + "src": "581:0:37" + }, + "scope": 3762, + "src": "532:83:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3760, + "nodeType": "Block", + "src": "672:36:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3756, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3750, + "src": "688:4:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3757, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3752, + "src": "694:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3755, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7322, + "src": "682:5:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "682:19:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3759, + "nodeType": "ExpressionStatement", + "src": "682:19:37" + } + ] + }, + "documentation": null, + "functionSelector": "9dc29fac", + "id": 3761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3750, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3761, + "src": "635:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "635:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3752, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3761, + "src": "649:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3751, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "649:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "634:30:37" + }, + "returnParameters": { + "id": 3754, + "nodeType": "ParameterList", + "parameters": [], + "src": "672:0:37" + }, + "scope": 3762, + "src": "621:87:37", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3763, + "src": "136:574:37" + } + ], + "src": "33:678:37" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001f6a38038062001f6a833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919050505083838160039080519060200190620001e69291906200055d565b508060049080519060200190620001ff9291906200055d565b506012600560006101000a81548160ff021916908360ff16021790555050506000600560016101000a81548160ff0219169083151502179055506200024b82826200025560201b60201c565b505050506200060c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200030d600083836200043360201b60201c565b6200032981600254620004b860201b62000b1d1790919060201c565b60028190555062000387816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620004b860201b62000b1d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6200044b8383836200054160201b62000ba51760201c565b6200045b6200054660201b60201c565b15620004b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018062001f40602a913960400191505060405180910390fd5b505050565b60008082840190508381101562000537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b505050565b6000600560019054906101000a900460ff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005a057805160ff1916838001178555620005d1565b82800160010185558215620005d1579182015b82811115620005d0578251825591602001919060010190620005b3565b5b509050620005e09190620005e4565b5090565b6200060991905b8082111562000605576000816000905550600101620005eb565b5090565b90565b611924806200061c6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80635c975abb116100975780639dc29fac116100665780639dc29fac1461047b578063a457c2d7146104c9578063a9059cbb1461052f578063dd62ed3e1461059557610100565b80635c975abb1461037457806370a08231146103965780638456cb59146103ee57806395d89b41146103f857610100565b8063313ce567116100d3578063313ce5671461029257806339509351146102b65780633f4ba83a1461031c57806340c10f191461032657610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ee57806323b872dd1461020c575b600080fd5b61010d61060d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106af565b604051808215151515815260200191505060405180910390f35b6101f66106cd565b6040518082815260200191505060405180910390f35b6102786004803603606081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106d7565b604051808215151515815260200191505060405180910390f35b61029a6107b0565b604051808260ff1660ff16815260200191505060405180910390f35b610302600480360360408110156102cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107c7565b604051808215151515815260200191505060405180910390f35b61032461087a565b005b6103726004803603604081101561033c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610884565b005b61037c610892565b604051808215151515815260200191505060405180910390f35b6103d8600480360360208110156103ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a9565b6040518082815260200191505060405180910390f35b6103f66108f1565b005b6104006108fb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610440578082015181840152602081019050610425565b50505050905090810190601f16801561046d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104c76004803603604081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061099d565b005b610515600480360360408110156104df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109ab565b604051808215151515815260200191505060405180910390f35b61057b6004803603604081101561054557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a78565b604051808215151515815260200191505060405180910390f35b6105f7600480360360408110156105ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a96565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106a55780601f1061067a576101008083540402835291602001916106a5565b820191906000526020600020905b81548152906001019060200180831161068857829003601f168201915b5050505050905090565b60006106c36106bc610baa565b8484610bb2565b6001905092915050565b6000600254905090565b60006106e4848484610da9565b6107a5846106f0610baa565b6107a08560405180606001604052806028815260200161180e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610756610baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b610bb2565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108706107d4610baa565b8461086b85600160006107e5610baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b610bb2565b6001905092915050565b61088261112a565b565b61088e8282611233565b5050565b6000600560019054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108f96113fa565b565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109935780601f1061096857610100808354040283529160200191610993565b820191906000526020600020905b81548152906001019060200180831161097657829003601f168201915b5050505050905090565b6109a78282611504565b5050565b6000610a6e6109b8610baa565b84610a69856040518060600160405280602581526020016118a060259139600160006109e2610baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b610bb2565b6001905092915050565b6000610a8c610a85610baa565b8484610da9565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610b9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061187c6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117c66022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806118576025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117816023913960400191505060405180910390fd5b610ec08383836116c8565b610f2b816040518060600160405280602681526020016117e8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fbe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611117576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110dc5780820151818401526020810190506110c1565b50505050905090810190601f1680156111095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600560019054906101000a900460ff166111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111f0610baa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6112e2600083836116c8565b6112f781600254610b1d90919063ffffffff16565b60028190555061134e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600560019054906101000a900460ff161561147d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114c1610baa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118366021913960400191505060405180910390fd5b611596826000836116c8565b611601816040518060600160405280602281526020016117a4602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116588160025461173690919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116d3838383610ba5565b6116db610892565b15611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806118c5602a913960400191505060405180910390fd5b505050565b600061177883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061106a565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f45524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a2646970667358221220929b518a0bfb16570205e56ede7eef357f4d61fa1ef5ef11da5cd623b35d0ec064736f6c6343000609003345524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80635c975abb116100975780639dc29fac116100665780639dc29fac1461047b578063a457c2d7146104c9578063a9059cbb1461052f578063dd62ed3e1461059557610100565b80635c975abb1461037457806370a08231146103965780638456cb59146103ee57806395d89b41146103f857610100565b8063313ce567116100d3578063313ce5671461029257806339509351146102b65780633f4ba83a1461031c57806340c10f191461032657610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ee57806323b872dd1461020c575b600080fd5b61010d61060d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106af565b604051808215151515815260200191505060405180910390f35b6101f66106cd565b6040518082815260200191505060405180910390f35b6102786004803603606081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106d7565b604051808215151515815260200191505060405180910390f35b61029a6107b0565b604051808260ff1660ff16815260200191505060405180910390f35b610302600480360360408110156102cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107c7565b604051808215151515815260200191505060405180910390f35b61032461087a565b005b6103726004803603604081101561033c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610884565b005b61037c610892565b604051808215151515815260200191505060405180910390f35b6103d8600480360360208110156103ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a9565b6040518082815260200191505060405180910390f35b6103f66108f1565b005b6104006108fb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610440578082015181840152602081019050610425565b50505050905090810190601f16801561046d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104c76004803603604081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061099d565b005b610515600480360360408110156104df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109ab565b604051808215151515815260200191505060405180910390f35b61057b6004803603604081101561054557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a78565b604051808215151515815260200191505060405180910390f35b6105f7600480360360408110156105ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a96565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106a55780601f1061067a576101008083540402835291602001916106a5565b820191906000526020600020905b81548152906001019060200180831161068857829003601f168201915b5050505050905090565b60006106c36106bc610baa565b8484610bb2565b6001905092915050565b6000600254905090565b60006106e4848484610da9565b6107a5846106f0610baa565b6107a08560405180606001604052806028815260200161180e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610756610baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b610bb2565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108706107d4610baa565b8461086b85600160006107e5610baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b610bb2565b6001905092915050565b61088261112a565b565b61088e8282611233565b5050565b6000600560019054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108f96113fa565b565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109935780601f1061096857610100808354040283529160200191610993565b820191906000526020600020905b81548152906001019060200180831161097657829003601f168201915b5050505050905090565b6109a78282611504565b5050565b6000610a6e6109b8610baa565b84610a69856040518060600160405280602581526020016118a060259139600160006109e2610baa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b610bb2565b6001905092915050565b6000610a8c610a85610baa565b8484610da9565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828401905083811015610b9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061187c6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117c66022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806118576025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117816023913960400191505060405180910390fd5b610ec08383836116c8565b610f2b816040518060600160405280602681526020016117e8602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fbe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611117576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110dc5780820151818401526020810190506110c1565b50505050905090810190601f1680156111095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600560019054906101000a900460ff166111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111f0610baa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6112e2600083836116c8565b6112f781600254610b1d90919063ffffffff16565b60028190555061134e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600560019054906101000a900460ff161561147d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114c1610baa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118366021913960400191505060405180910390fd5b611596826000836116c8565b611601816040518060600160405280602281526020016117a4602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116588160025461173690919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116d3838383610ba5565b6116db610892565b15611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806118c5602a913960400191505060405180910390fd5b505050565b600061177883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061106a565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f45524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a2646970667358221220929b518a0bfb16570205e56ede7eef357f4d61fa1ef5ef11da5cd623b35d0ec064736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20PresetMinterPauser.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20PresetMinterPauser.json new file mode 100644 index 0000000..c42d7fc --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20PresetMinterPauser.json @@ -0,0 +1,2471 @@ +{ + "fileName": "ERC20PresetMinterPauser.sol", + "contractName": "ERC20PresetMinterPauser", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../access/AccessControl.sol\";\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../token/ERC20/ERC20Burnable.sol\";\nimport \"../token/ERC20/ERC20Pausable.sol\";\n\n/**\n * @dev {ERC20} token, including:\n *\n * - ability for holders to burn (destroy) their tokens\n * - a minter role that allows for token minting (creation)\n * - a pauser role that allows to stop all token transfers\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter and pauser\n * roles, as well as the default admin role, which will let it grant both minter\n * and pauser roles to other accounts.\n */\ncontract ERC20PresetMinterPauser is Context, AccessControl, ERC20Burnable, ERC20Pausable {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\n * account that deploys the contract.\n *\n * See {ERC20-constructor}.\n */\n constructor(string memory name, string memory symbol) public ERC20(name, symbol) {\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n _setupRole(MINTER_ROLE, _msgSender());\n _setupRole(PAUSER_ROLE, _msgSender());\n }\n\n /**\n * @dev Creates `amount` new tokens for `to`.\n *\n * See {ERC20-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(address to, uint256 amount) public virtual {\n require(hasRole(MINTER_ROLE, _msgSender()), \"ERC20PresetMinterPauser: must have minter role to mint\");\n _mint(to, amount);\n }\n\n /**\n * @dev Pauses all token transfers.\n *\n * See {ERC20Pausable} and {Pausable-_pause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function pause() public virtual {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC20PresetMinterPauser: must have pauser role to pause\");\n _pause();\n }\n\n /**\n * @dev Unpauses all token transfers.\n *\n * See {ERC20Pausable} and {Pausable-_unpause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function unpause() public virtual {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC20PresetMinterPauser: must have pauser role to unpause\");\n _unpause();\n }\n\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override(ERC20, ERC20Pausable) {\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n", + "sourcePath": "contracts/presets/ERC20PresetMinterPauser.sol", + "sourceMap": "814:1980:74:-:0;;;1223:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1290:4;1296:6;2093:4:84;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;933:5:110;923:7;;:15;;;;;;;;;;;;;;;;;;1314:44:74::1;1762:4:6;1325:18:74::0;::::1;1345:12;:10;;;:12;;:::i;:::-;1314:10;;;:44;;:::i;:::-;1369:37;947:24;;;;;;;::::0;::::1;;;;;;;;;;;1393:12;:10;;;:12;;:::i;:::-;1369:10;;;:37;;:::i;:::-;1416;1015:24;;;;;;;::::0;::::1;;;;;;;;;;;1440:12;:10;;;:12;;:::i;:::-;1416:10;;;:37;;:::i;:::-;1223:237:::0;;814:1980;;590:104:0;643:15;677:10;670:17;;590:104;:::o;6578:110:6:-;6656:25;6667:4;6673:7;6656:10;;;:25;;:::i;:::-;6578:110;;:::o;7015:184::-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;;;:12;;:::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;;;:41;;:::i;:::-;4950:48;;4864:141;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;;;:21;;:::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;814:1980:74:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "814:1980:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3262:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4881:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4272:112:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4634:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3121:81:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5808:205:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5593:215:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2430:175:74;;;:::i;:::-;;1649:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;481:89:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1040:76:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3418:117:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;876:290:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2054:169:74;;;:::i;:::-;;3955:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2940:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2413:85:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:49:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6295:266:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3738:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3245:125:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;909:62:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5091:226:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3968:149:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;977:62:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2219:81:84;2256:13;2288:5;2281:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81;:::o;4255:166::-;4338:4;4354:39;4363:12;:10;:12::i;:::-;4377:7;4386:6;4354:8;:39::i;:::-;4410:4;4403:11;;4255:166;;;;:::o;3262:98::-;3315:7;3341:12;;3334:19;;3262:98;:::o;4881:317::-;4987:4;5003:36;5013:6;5021:9;5032:6;5003:9;:36::i;:::-;5049:121;5058:6;5066:12;:10;:12::i;:::-;5080:89;5118:6;5080:89;;;;;;;;;;;;;;;;;:11;:19;5092:6;5080:19;;;;;;;;;;;;;;;:33;5100:12;:10;:12::i;:::-;5080:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5049:8;:121::i;:::-;5187:4;5180:11;;4881:317;;;;;:::o;4272:112:6:-;4329:7;4355:6;:12;4362:4;4355:12;;;;;;;;;;;:22;;;4348:29;;4272:112;;;:::o;4634:223::-;4717:45;4725:6;:12;4732:4;4725:12;;;;;;;;;;;:22;;;4749:12;:10;:12::i;:::-;4717:7;:45::i;:::-;4709:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4825:25;4836:4;4842:7;4825:10;:25::i;:::-;4634:223;;:::o;3121:81:84:-;3162:5;3186:9;;;;;;;;;;;3179:16;;3121:81;:::o;5808:205:6:-;5905:12;:10;:12::i;:::-;5894:23;;:7;:23;;;5886:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5980:26;5992:4;5998:7;5980:11;:26::i;:::-;5808:205;;:::o;5593:215:84:-;5681:4;5697:83;5706:12;:10;:12::i;:::-;5720:7;5729:50;5768:10;5729:11;:25;5741:12;:10;:12::i;:::-;5729:25;;;;;;;;;;;;;;;:34;5755:7;5729:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5697:8;:83::i;:::-;5797:4;5790:11;;5593:215;;;;:::o;2430:175:74:-;2482:34;1015:24;;;;;;;;;;;;;;;;;;;2503:12;:10;:12::i;:::-;2482:7;:34::i;:::-;2474:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2588:10;:8;:10::i;:::-;2430:175::o;1649:202::-;1724:34;947:24;;;;;;;;;;;;;;;;;;;1745:12;:10;:12::i;:::-;1724:7;:34::i;:::-;1716:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1827:17;1833:2;1837:6;1827:5;:17::i;:::-;1649:202;;:::o;481:89:85:-;536:27;542:12;:10;:12::i;:::-;556:6;536:5;:27::i;:::-;481:89;:::o;1040:76:110:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;3418:117:84:-;3484:7;3510:9;:18;3520:7;3510:18;;;;;;;;;;;;;;;;3503:25;;3418:117;;;:::o;876:290:85:-;952:26;981:84;1018:6;981:84;;;;;;;;;;;;;;;;;:32;991:7;1000:12;:10;:12::i;:::-;981:9;:32::i;:::-;:36;;:84;;;;;:::i;:::-;952:113;;1076:51;1085:7;1094:12;:10;:12::i;:::-;1108:18;1076:8;:51::i;:::-;1137:22;1143:7;1152:6;1137:5;:22::i;:::-;876:290;;;:::o;2054:169:74:-;2104:34;1015:24;;;;;;;;;;;;;;;;;;;2125:12;:10;:12::i;:::-;2104:7;:34::i;:::-;2096:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:8;:6;:8::i;:::-;2054:169::o;3955:136:6:-;4028:7;4054:30;4078:5;4054:6;:12;4061:4;4054:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;4047:37;;3955:136;;;;:::o;2940:137::-;3009:4;3032:38;3062:7;3032:6;:12;3039:4;3032:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;3025:45;;2940:137;;;;:::o;2413:85:84:-;2452:13;2484:7;2477:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:85;:::o;1717:49:6:-;1762:4;1717:49;;;:::o;6295:266:84:-;6388:4;6404:129;6413:12;:10;:12::i;:::-;6427:7;6436:96;6475:15;6436:96;;;;;;;;;;;;;;;;;:11;:25;6448:12;:10;:12::i;:::-;6436:25;;;;;;;;;;;;;;;:34;6462:7;6436:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6404:8;:129::i;:::-;6550:4;6543:11;;6295:266;;;;:::o;3738:172::-;3824:4;3840:42;3850:12;:10;:12::i;:::-;3864:9;3875:6;3840:9;:42::i;:::-;3899:4;3892:11;;3738:172;;;;:::o;3245:125:6:-;3308:7;3334:29;:6;:12;3341:4;3334:12;;;;;;;;;;;:20;;:27;:29::i;:::-;3327:36;;3245:125;;;:::o;909:62:74:-;947:24;;;;;;;;;;;;;;;;;;;909:62;:::o;5091:226:6:-;5175:45;5183:6;:12;5190:4;5183:12;;;;;;;;;;;:22;;;5207:12;:10;:12::i;:::-;5175:7;:45::i;:::-;5167:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:26;5296:4;5302:7;5284:11;:26::i;:::-;5091:226;;:::o;3968:149:84:-;4057:7;4083:11;:18;4095:5;4083:18;;;;;;;;;;;;;;;:27;4102:7;4083:27;;;;;;;;;;;;;;;;4076:34;;3968:149;;;;:::o;977:62:74:-;1015:24;;;;;;;;;;;;;;;;;;;977:62;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;:41::i;:::-;4950:48;;4864:141;;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;9359:340:84:-;9477:1;9460:19;;:5;:19;;;;9452:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9557:1;9538:21;;:7;:21;;;;9530:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9639:6;9609:11;:18;9621:5;9609:18;;;;;;;;;;;;;;;:27;9628:7;9609:27;;;;;;;;;;;;;;;:36;;;;9676:7;9660:32;;9669:5;9660:32;;;9685:6;9660:32;;;;;;;;;;;;;;;;;;9359:340;;;:::o;7035:530::-;7158:1;7140:20;;:6;:20;;;;7132:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7241:1;7220:23;;:9;:23;;;;7212:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:47;7315:6;7323:9;7334:6;7294:20;:47::i;:::-;7372:71;7394:6;7372:71;;;;;;;;;;;;;;;;;:9;:17;7382:6;7372:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7352:9;:17;7362:6;7352:17;;;;;;;;;;;;;;;:91;;;;7476:32;7501:6;7476:9;:20;7486:9;7476:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7453:9;:20;7463:9;7453:20;;;;;;;;;;;;;;;:55;;;;7540:9;7523:35;;7532:6;7523:35;;;7551:6;7523:35;;;;;;;;;;;;;;;;;;7035:530;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;7015:184:6:-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;:12::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;7205:188::-;7279:36;7307:7;7279:6;:12;7286:4;7279:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;7275:112;;;7363:12;:10;:12::i;:::-;7336:40;;7354:7;7336:40;;7348:4;7336:40;;;;;;;;;;7275:112;7205:188;;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;2042:117:110:-;1610:7;;;;;;;;;;;1602:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2110:5:::1;2100:7;;:15;;;;;;;;;;;;;;;;;;2130:22;2139:12;:10;:12::i;:::-;2130:22;;;;;;;;;;;;;;;;;;;;;;2042:117::o:0;7835:370:84:-;7937:1;7918:21;;:7;:21;;;;7910:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7986:49;8015:1;8019:7;8028:6;7986:20;:49::i;:::-;8061:24;8078:6;8061:12;;:16;;:24;;;;:::i;:::-;8046:12;:39;;;;8116:30;8139:6;8116:9;:18;8126:7;8116:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8095:9;:18;8105:7;8095:18;;;;;;;;;;;;;;;:51;;;;8182:7;8161:37;;8178:1;8161:37;;;8191:6;8161:37;;;;;;;;;;;;;;;;;;7835:370;;:::o;8524:410::-;8626:1;8607:21;;:7;:21;;;;8599:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8677:49;8698:7;8715:1;8719:6;8677:20;:49::i;:::-;8758:68;8781:6;8758:68;;;;;;;;;;;;;;;;;:9;:18;8768:7;8758:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8737:9;:18;8747:7;8737:18;;;;;;;;;;;;;;;:89;;;;8851:24;8868:6;8851:12;;:16;;:24;;;;:::i;:::-;8836:12;:39;;;;8916:1;8890:37;;8899:7;8890:37;;;8920:6;8890:37;;;;;;;;;;;;;;;;;;8524:410;;:::o;1795:115:110:-;1346:7;;;;;;;;;;;1345:8;1337:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:4:::1;1854:7;;:14;;;;;;;;;;;;;;;;;;1883:20;1890:12;:10;:12::i;:::-;1883:20;;;;;;;;;;;;;;;;;;;;;;1795:115::o:0;6085:147:109:-;6159:7;6201:22;6205:3;:10;;6217:5;6201:3;:22::i;:::-;6193:31;;6178:47;;6085:147;;;;:::o;5401:156::-;5481:4;5504:46;5514:3;:10;;5542:5;5534:14;;5526:23;;5504:9;:46::i;:::-;5497:53;;5401:156;;;;:::o;5638:115::-;5701:7;5727:19;5735:3;:10;;5727:7;:19::i;:::-;5720:26;;5638:115;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;2611:181:74:-;2741:44;2768:4;2774:2;2778:6;2741:26;:44::i;:::-;2611:181;;;:::o;5173:147:109:-;5246:4;5269:44;5277:3;:10;;5305:5;5297:14;;5289:23;;5269:7;:44::i;:::-;5262:51;;5173:147;;;;:::o;1321:134:17:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;4423:201:109:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;3984:107::-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;582:234:87:-;690:44;717:4;723:2;727:6;690:26;:44::i;:::-;754:8;:6;:8::i;:::-;753:9;745:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;582:234;;;:::o;2183:1512:109:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;10697:92:84:-;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/presets/ERC20PresetMinterPauser.sol", + "exportedSymbols": { + "ERC20PresetMinterPauser": [ + 7139 + ] + }, + "id": 7140, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7005, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:74" + }, + { + "absolutePath": "contracts/access/AccessControl.sol", + "file": "../access/AccessControl.sol", + "id": 7006, + "nodeType": "ImportDirective", + "scope": 7140, + "sourceUnit": 1468, + "src": "58:37:74", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 7007, + "nodeType": "ImportDirective", + "scope": 7140, + "sourceUnit": 23, + "src": "96:28:74", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 7008, + "nodeType": "ImportDirective", + "scope": 7140, + "sourceUnit": 9195, + "src": "125:34:74", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Burnable.sol", + "file": "../token/ERC20/ERC20Burnable.sol", + "id": 7009, + "nodeType": "ImportDirective", + "scope": 7140, + "sourceUnit": 9251, + "src": "160:42:74", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Pausable.sol", + "file": "../token/ERC20/ERC20Pausable.sol", + "id": 7010, + "nodeType": "ImportDirective", + "scope": 7140, + "sourceUnit": 9363, + "src": "203:42:74", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7012, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "850:7:74", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 7013, + "nodeType": "InheritanceSpecifier", + "src": "850:7:74" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7014, + "name": "AccessControl", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1467, + "src": "859:13:74", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AccessControl_$1467", + "typeString": "contract AccessControl" + } + }, + "id": 7015, + "nodeType": "InheritanceSpecifier", + "src": "859:13:74" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7016, + "name": "ERC20Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9250, + "src": "874:13:74", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Burnable_$9250", + "typeString": "contract ERC20Burnable" + } + }, + "id": 7017, + "nodeType": "InheritanceSpecifier", + "src": "874:13:74" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7018, + "name": "ERC20Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9362, + "src": "889:13:74", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Pausable_$9362", + "typeString": "contract ERC20Pausable" + } + }, + "id": 7019, + "nodeType": "InheritanceSpecifier", + "src": "889:13:74" + } + ], + "contractDependencies": [ + 22, + 1467, + 9194, + 9250, + 9362, + 9773, + 13997 + ], + "contractKind": "contract", + "documentation": { + "id": 7011, + "nodeType": "StructuredDocumentation", + "src": "247:566:74", + "text": " @dev {ERC20} token, including:\n - ability for holders to burn (destroy) their tokens\n - a minter role that allows for token minting (creation)\n - a pauser role that allows to stop all token transfers\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the minter and pauser\n roles, as well as the default admin role, which will let it grant both minter\n and pauser roles to other accounts." + }, + "fullyImplemented": true, + "id": 7139, + "linearizedBaseContracts": [ + 7139, + 9362, + 13997, + 9250, + 9194, + 9773, + 1467, + 22 + ], + "name": "ERC20PresetMinterPauser", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "d5391393", + "id": 7024, + "mutability": "constant", + "name": "MINTER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7139, + "src": "909:62:74", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7020, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "909:7:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4d494e5445525f524f4c45", + "id": 7022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "957:13:74", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + }, + "value": "MINTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + } + ], + "id": 7021, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "947:9:74", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "947:24:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "e63ab1e9", + "id": 7029, + "mutability": "constant", + "name": "PAUSER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7139, + "src": "977:62:74", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7025, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "977:7:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "5041555345525f524f4c45", + "id": 7027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1025:13:74", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 7026, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1015:9:74", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1015:24:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 7059, + "nodeType": "Block", + "src": "1304:156:74", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7042, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1210, + "src": "1325:18:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7043, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1345:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1345:12:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7041, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1314:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1314:44:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7046, + "nodeType": "ExpressionStatement", + "src": "1314:44:74" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7048, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7024, + "src": "1380:11:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7049, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1393:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1393:12:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7047, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1369:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1369:37:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7052, + "nodeType": "ExpressionStatement", + "src": "1369:37:74" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7054, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7029, + "src": "1427:11:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7055, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1440:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1440:12:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7053, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1416:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1416:37:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7058, + "nodeType": "ExpressionStatement", + "src": "1416:37:74" + } + ] + }, + "documentation": { + "id": 7030, + "nodeType": "StructuredDocumentation", + "src": "1046:172:74", + "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\n account that deploys the contract.\n See {ERC20-constructor}." + }, + "id": 7060, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7037, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7032, + "src": "1290:4:74", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 7038, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7034, + "src": "1296:6:74", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 7039, + "modifierName": { + "argumentTypes": null, + "id": 7036, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9194, + "src": "1284:5:74", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$9194_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1284:19:74" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7032, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7060, + "src": "1235:18:74", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7031, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1235:6:74", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7034, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7060, + "src": "1255:20:74", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7033, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1255:6:74", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1234:42:74" + }, + "returnParameters": { + "id": 7040, + "nodeType": "ParameterList", + "parameters": [], + "src": "1304:0:74" + }, + "scope": 7139, + "src": "1223:237:74", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7082, + "nodeType": "Block", + "src": "1706:145:74", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7070, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7024, + "src": "1732:11:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7071, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1745:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1745:12:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7069, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "1724:7:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1724:34:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332305072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74", + "id": 7074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1760:56:74", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9efa111136b49cf2058ce33f60fa04a5749fd87012d74cadc251e21e1db53342", + "typeString": "literal_string \"ERC20PresetMinterPauser: must have minter role to mint\"" + }, + "value": "ERC20PresetMinterPauser: must have minter role to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9efa111136b49cf2058ce33f60fa04a5749fd87012d74cadc251e21e1db53342", + "typeString": "literal_string \"ERC20PresetMinterPauser: must have minter role to mint\"" + } + ], + "id": 7068, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1716:7:74", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1716:101:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7076, + "nodeType": "ExpressionStatement", + "src": "1716:101:74" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7078, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7063, + "src": "1833:2:74", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7079, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7065, + "src": "1837:6:74", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7077, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9070, + "src": "1827:5:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1827:17:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7081, + "nodeType": "ExpressionStatement", + "src": "1827:17:74" + } + ] + }, + "documentation": { + "id": 7061, + "nodeType": "StructuredDocumentation", + "src": "1466:178:74", + "text": " @dev Creates `amount` new tokens for `to`.\n See {ERC20-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`." + }, + "functionSelector": "40c10f19", + "id": 7083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7063, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7083, + "src": "1663:10:74", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1663:7:74", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7065, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7083, + "src": "1675:14:74", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1675:7:74", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1662:28:74" + }, + "returnParameters": { + "id": 7067, + "nodeType": "ParameterList", + "parameters": [], + "src": "1706:0:74" + }, + "scope": 7139, + "src": "1649:202:74", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7099, + "nodeType": "Block", + "src": "2086:137:74", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7089, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7029, + "src": "2112:11:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7090, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2125:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2125:12:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7088, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2104:7:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2104:34:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365", + "id": 7093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2140:57:74", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d581fb23a6d539f3015b3485052424734f4b05014d1d5211f35a049cff57e330", + "typeString": "literal_string \"ERC20PresetMinterPauser: must have pauser role to pause\"" + }, + "value": "ERC20PresetMinterPauser: must have pauser role to pause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d581fb23a6d539f3015b3485052424734f4b05014d1d5211f35a049cff57e330", + "typeString": "literal_string \"ERC20PresetMinterPauser: must have pauser role to pause\"" + } + ], + "id": 7087, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2096:7:74", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2096:102:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7095, + "nodeType": "ExpressionStatement", + "src": "2096:102:74" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7096, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13980, + "src": "2208:6:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2208:8:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7098, + "nodeType": "ExpressionStatement", + "src": "2208:8:74" + } + ] + }, + "documentation": { + "id": 7084, + "nodeType": "StructuredDocumentation", + "src": "1857:192:74", + "text": " @dev Pauses all token transfers.\n See {ERC20Pausable} and {Pausable-_pause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "8456cb59", + "id": 7100, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7085, + "nodeType": "ParameterList", + "parameters": [], + "src": "2068:2:74" + }, + "returnParameters": { + "id": 7086, + "nodeType": "ParameterList", + "parameters": [], + "src": "2086:0:74" + }, + "scope": 7139, + "src": "2054:169:74", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7116, + "nodeType": "Block", + "src": "2464:141:74", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7106, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7029, + "src": "2490:11:74", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7107, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2503:10:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2503:12:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7105, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2482:7:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2482:34:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365", + "id": 7110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2518:59:74", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_176e32c23b35bed3cd8ee309232e2364823f6f66078e0cf4f5b5e41eee016186", + "typeString": "literal_string \"ERC20PresetMinterPauser: must have pauser role to unpause\"" + }, + "value": "ERC20PresetMinterPauser: must have pauser role to unpause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_176e32c23b35bed3cd8ee309232e2364823f6f66078e0cf4f5b5e41eee016186", + "typeString": "literal_string \"ERC20PresetMinterPauser: must have pauser role to unpause\"" + } + ], + "id": 7104, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2474:7:74", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2474:104:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7112, + "nodeType": "ExpressionStatement", + "src": "2474:104:74" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7113, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13996, + "src": "2588:8:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2588:10:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7115, + "nodeType": "ExpressionStatement", + "src": "2588:10:74" + } + ] + }, + "documentation": { + "id": 7101, + "nodeType": "StructuredDocumentation", + "src": "2229:196:74", + "text": " @dev Unpauses all token transfers.\n See {ERC20Pausable} and {Pausable-_unpause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "3f4ba83a", + "id": 7117, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7102, + "nodeType": "ParameterList", + "parameters": [], + "src": "2446:2:74" + }, + "returnParameters": { + "id": 7103, + "nodeType": "ParameterList", + "parameters": [], + "src": "2464:0:74" + }, + "scope": 7139, + "src": "2430:175:74", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 9193, + 9361 + ], + "body": { + "id": 7137, + "nodeType": "Block", + "src": "2731:61:74", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7132, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7119, + "src": "2768:4:74", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7133, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7121, + "src": "2774:2:74", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7134, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7123, + "src": "2778:6:74", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 7129, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2741:5:74", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20PresetMinterPauser_$7139", + "typeString": "contract super ERC20PresetMinterPauser" + } + }, + "id": 7131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9361, + "src": "2741:26:74", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 7135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2741:44:74", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7136, + "nodeType": "ExpressionStatement", + "src": "2741:44:74" + } + ] + }, + "documentation": null, + "id": 7138, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7127, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 7125, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "2709:5:74", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + { + "contractScope": null, + "id": 7126, + "name": "ERC20Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9362, + "src": "2716:13:74", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Pausable_$9362", + "typeString": "contract ERC20Pausable" + } + } + ], + "src": "2700:30:74" + }, + "parameters": { + "id": 7124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7119, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7138, + "src": "2641:12:74", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2641:7:74", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7121, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7138, + "src": "2655:10:74", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2655:7:74", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7123, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7138, + "src": "2667:14:74", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2667:7:74", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2640:42:74" + }, + "returnParameters": { + "id": 7128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2731:0:74" + }, + "scope": 7139, + "src": "2611:181:74", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 7140, + "src": "814:1980:74" + } + ], + "src": "33:2762:74" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002c7b38038062002c7b833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818160049080519060200190620001cf92919062000490565b508060059080519060200190620001e892919062000490565b506012600660006101000a81548160ff021916908360ff16021790555050506000600660016101000a81548160ff021916908315150217905550620002466000801b6200023a620002fa60201b60201c565b6200030260201b60201c565b6200029c60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902062000290620002fa60201b60201c565b6200030260201b60201c565b620002f260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620002e6620002fa60201b60201c565b6200030260201b60201c565b50506200053f565b600033905090565b6200031482826200031860201b60201c565b5050565b6200034681600080858152602001908152602001600020600001620003bb60201b6200139f1790919060201c565b15620003b7576200035c620002fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003eb836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620003f360201b60201c565b905092915050565b60006200040783836200046d60201b60201c565b6200046257826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000467565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d357805160ff191683800117855562000504565b8280016001018555821562000504579182015b8281111562000503578251825591602001919060010190620004e6565b5b50905062000513919062000517565b5090565b6200053c91905b80821115620005385760008160009055506001016200051e565b5090565b90565b61272c806200054f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d539139314610888578063d547741f146108a6578063dd62ed3e146108f4578063e63ab1e91461096c576101a9565b8063a457c2d71461077a578063a9059cbb146107e0578063ca15c87314610846576101a9565b80639010d07c116100d35780639010d07c146105fb57806391d148541461067357806395d89b41146106d9578063a217fddf1461075c576101a9565b806370a082311461054b57806379cc6790146105a35780638456cb59146105f1576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146104a357806340c10f19146104ad57806342966c68146104fb5780635c975abb14610529576101a9565b8063313ce567146103cb57806336568abe146103ef578063395093511461043d576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029757806323b872dd146102b5578063248a9ca31461033b5780632f2ff15d1461037d575b600080fd5b6101b661098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2c565b604051808215151515815260200191505060405180910390f35b61029f610a4a565b6040518082815260200191505060405180910390f35b610321600480360360608110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a54565b604051808215151515815260200191505060405180910390f35b6103676004803603602081101561035157600080fd5b8101908080359060200190929190505050610b2d565b6040518082815260200191505060405180910390f35b6103c96004803603604081101561039357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4c565b005b6103d3610bd5565b604051808260ff1660ff16815260200191505060405180910390f35b61043b6004803603604081101561040557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6104896004803603604081101561045357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c85565b604051808215151515815260200191505060405180910390f35b6104ab610d38565b005b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddd565b005b6105276004803603602081101561051157600080fd5b8101908080359060200190929190505050610e86565b005b610531610e9a565b604051808215151515815260200191505060405180910390f35b61058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb1565b6040518082815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610efa565b005b6105f9610f5c565b005b6106316004803603604081101561061157600080fd5b810190808035906020019092919080359060200190929190505050611001565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106bf6004803603604081101561068957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611032565b604051808215151515815260200191505060405180910390f35b6106e1611063565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610764611105565b6040518082815260200191505060405180910390f35b6107c66004803603604081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061110c565b604051808215151515815260200191505060405180910390f35b61082c600480360360408110156107f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d9565b604051808215151515815260200191505060405180910390f35b6108726004803603602081101561085c57600080fd5b81019080803590602001909291905050506111f7565b6040518082815260200191505060405180910390f35b61089061121d565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611256565b005b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112df565b6040518082815260200191505060405180910390f35b610974611366565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a396113cf565b84846113d7565b6001905092915050565b6000600354905090565b6000610a618484846115ce565b610b2284610a6d6113cf565b610b1d8560405180606001604052806028815260200161255660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad36113cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b6113d7565b600190509392505050565b6000806000838152602001908152602001600020600201549050919050565b610b7260008084815260200190815260200160002060020154610b6d6113cf565b611032565b610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612454602f913960400191505060405180910390fd5b610bd18282611953565b5050565b6000600660009054906101000a900460ff16905090565b610bf46113cf565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061269e602f913960400191505060405180910390fd5b610c8182826119e6565b5050565b6000610d2e610c926113cf565b84610d298560026000610ca36113cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b6113d7565b6001905092915050565b610d7e60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610d796113cf565b611032565b610dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124a56039913960400191505060405180910390fd5b610ddb611b01565b565b610e2360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610e1e6113cf565b611032565b610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061257e6036913960400191505060405180910390fd5b610e828282611c0a565b5050565b610e97610e916113cf565b82611dd3565b50565b6000600660019054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610f39826040518060600160405280602481526020016125b460249139610f2a86610f256113cf565b6112df565b6118939092919063ffffffff16565b9050610f4d83610f476113cf565b836113d7565b610f578383611dd3565b505050565b610fa260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610f9d6113cf565b611032565b610ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806126426037913960400191505060405180910390fd5b610fff611f99565b565b600061102a826000808681526020019081526020016000206000016120a390919063ffffffff16565b905092915050565b600061105b826000808681526020019081526020016000206000016120bd90919063ffffffff16565b905092915050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b5050505050905090565b6000801b81565b60006111cf6111196113cf565b846111ca8560405180606001604052806025815260200161267960259139600260006111436113cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b6113d7565b6001905092915050565b60006111ed6111e66113cf565b84846115ce565b6001905092915050565b60006112166000808481526020019081526020016000206000016120ed565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b61127c600080848152602001908152602001600020600201546112776113cf565b611032565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125266030913960400191505060405180910390fd5b6112db82826119e6565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b60006113c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612102565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061261e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124de6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806125f96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806124316023913960400191505060405180910390fd5b6116e5838383612172565b6117518160405180606001604052806026815260200161250060269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117e681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119055780820151818401526020810190506118ea565b50505050905090810190601f1680156119325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61197a8160008085815260200190815260200160002060000161139f90919063ffffffff16565b156119e2576119876113cf565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611a0d8160008085815260200190815260200160002060000161218290919063ffffffff16565b15611a7557611a1a6113cf565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611af7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600660019054906101000a900460ff16611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611bc76113cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611cb960008383612172565b611cce81600354611a7990919063ffffffff16565b600381905550611d2681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125d86021913960400191505060405180910390fd5b611e6582600083612172565b611ed18160405180606001604052806022815260200161248360229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f29816003546121b290919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600660019054906101000a900460ff161561201c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120606113cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006120b283600001836121fc565b60001c905092915050565b60006120e5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61227f565b905092915050565b60006120fb826000016122a2565b9050919050565b600061210e838361227f565b61216757826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061216c565b600090505b92915050565b61217d8383836122b3565b505050565b60006121aa836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612321565b905092915050565b60006121f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611893565b905092915050565b60008183600001805490501161225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061240f6022913960400191505060405180910390fd5b82600001828154811061226c57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b6122be838383612409565b6122c6610e9a565b1561231c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806126cd602a913960400191505060405180910390fd5b505050565b600080836001016000848152602001908152602001600020549050600081146123fd576000600182039050600060018660000180549050039050600086600001828154811061236c57fe5b906000526020600020015490508087600001848154811061238957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806123c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612403565b60009150505b92915050565b50505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e706175736545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332305072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e7445524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20706175736545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6645524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a264697066735822122010d73a0287274b8018ae4e5665b63fc287ce9f2f9130789140ab877ecb680b0a64736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d539139314610888578063d547741f146108a6578063dd62ed3e146108f4578063e63ab1e91461096c576101a9565b8063a457c2d71461077a578063a9059cbb146107e0578063ca15c87314610846576101a9565b80639010d07c116100d35780639010d07c146105fb57806391d148541461067357806395d89b41146106d9578063a217fddf1461075c576101a9565b806370a082311461054b57806379cc6790146105a35780638456cb59146105f1576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146104a357806340c10f19146104ad57806342966c68146104fb5780635c975abb14610529576101a9565b8063313ce567146103cb57806336568abe146103ef578063395093511461043d576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029757806323b872dd146102b5578063248a9ca31461033b5780632f2ff15d1461037d575b600080fd5b6101b661098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2c565b604051808215151515815260200191505060405180910390f35b61029f610a4a565b6040518082815260200191505060405180910390f35b610321600480360360608110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a54565b604051808215151515815260200191505060405180910390f35b6103676004803603602081101561035157600080fd5b8101908080359060200190929190505050610b2d565b6040518082815260200191505060405180910390f35b6103c96004803603604081101561039357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4c565b005b6103d3610bd5565b604051808260ff1660ff16815260200191505060405180910390f35b61043b6004803603604081101561040557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6104896004803603604081101561045357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c85565b604051808215151515815260200191505060405180910390f35b6104ab610d38565b005b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddd565b005b6105276004803603602081101561051157600080fd5b8101908080359060200190929190505050610e86565b005b610531610e9a565b604051808215151515815260200191505060405180910390f35b61058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb1565b6040518082815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610efa565b005b6105f9610f5c565b005b6106316004803603604081101561061157600080fd5b810190808035906020019092919080359060200190929190505050611001565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106bf6004803603604081101561068957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611032565b604051808215151515815260200191505060405180910390f35b6106e1611063565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610764611105565b6040518082815260200191505060405180910390f35b6107c66004803603604081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061110c565b604051808215151515815260200191505060405180910390f35b61082c600480360360408110156107f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d9565b604051808215151515815260200191505060405180910390f35b6108726004803603602081101561085c57600080fd5b81019080803590602001909291905050506111f7565b6040518082815260200191505060405180910390f35b61089061121d565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611256565b005b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112df565b6040518082815260200191505060405180910390f35b610974611366565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a396113cf565b84846113d7565b6001905092915050565b6000600354905090565b6000610a618484846115ce565b610b2284610a6d6113cf565b610b1d8560405180606001604052806028815260200161255660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad36113cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b6113d7565b600190509392505050565b6000806000838152602001908152602001600020600201549050919050565b610b7260008084815260200190815260200160002060020154610b6d6113cf565b611032565b610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612454602f913960400191505060405180910390fd5b610bd18282611953565b5050565b6000600660009054906101000a900460ff16905090565b610bf46113cf565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061269e602f913960400191505060405180910390fd5b610c8182826119e6565b5050565b6000610d2e610c926113cf565b84610d298560026000610ca36113cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b6113d7565b6001905092915050565b610d7e60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610d796113cf565b611032565b610dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124a56039913960400191505060405180910390fd5b610ddb611b01565b565b610e2360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610e1e6113cf565b611032565b610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061257e6036913960400191505060405180910390fd5b610e828282611c0a565b5050565b610e97610e916113cf565b82611dd3565b50565b6000600660019054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610f39826040518060600160405280602481526020016125b460249139610f2a86610f256113cf565b6112df565b6118939092919063ffffffff16565b9050610f4d83610f476113cf565b836113d7565b610f578383611dd3565b505050565b610fa260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610f9d6113cf565b611032565b610ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806126426037913960400191505060405180910390fd5b610fff611f99565b565b600061102a826000808681526020019081526020016000206000016120a390919063ffffffff16565b905092915050565b600061105b826000808681526020019081526020016000206000016120bd90919063ffffffff16565b905092915050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b5050505050905090565b6000801b81565b60006111cf6111196113cf565b846111ca8560405180606001604052806025815260200161267960259139600260006111436113cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b6113d7565b6001905092915050565b60006111ed6111e66113cf565b84846115ce565b6001905092915050565b60006112166000808481526020019081526020016000206000016120ed565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b61127c600080848152602001908152602001600020600201546112776113cf565b611032565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125266030913960400191505060405180910390fd5b6112db82826119e6565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b60006113c7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612102565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061261e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124de6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806125f96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806124316023913960400191505060405180910390fd5b6116e5838383612172565b6117518160405180606001604052806026815260200161250060269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117e681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119055780820151818401526020810190506118ea565b50505050905090810190601f1680156119325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61197a8160008085815260200190815260200160002060000161139f90919063ffffffff16565b156119e2576119876113cf565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611a0d8160008085815260200190815260200160002060000161218290919063ffffffff16565b15611a7557611a1a6113cf565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611af7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600660019054906101000a900460ff16611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611bc76113cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611cb960008383612172565b611cce81600354611a7990919063ffffffff16565b600381905550611d2681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125d86021913960400191505060405180910390fd5b611e6582600083612172565b611ed18160405180606001604052806022815260200161248360229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118939092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f29816003546121b290919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600660019054906101000a900460ff161561201c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120606113cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006120b283600001836121fc565b60001c905092915050565b60006120e5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61227f565b905092915050565b60006120fb826000016122a2565b9050919050565b600061210e838361227f565b61216757826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061216c565b600090505b92915050565b61217d8383836122b3565b505050565b60006121aa836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612321565b905092915050565b60006121f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611893565b905092915050565b60008183600001805490501161225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061240f6022913960400191505060405180910390fd5b82600001828154811061226c57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b6122be838383612409565b6122c6610e9a565b1561231c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806126cd602a913960400191505060405180910390fd5b505050565b600080836001016000848152602001908152602001600020549050600081146123fd576000600182039050600060018660000180549050039050600086600001828154811061236c57fe5b906000526020600020015490508087600001848154811061238957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806123c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612403565b60009150505b92915050565b50505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e706175736545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332305072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e7445524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20706175736545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6645524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a264697066735822122010d73a0287274b8018ae4e5665b63fc287ce9f2f9130789140ab877ecb680b0a64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnFalseMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnFalseMock.json new file mode 100644 index 0000000..f9e3424 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnFalseMock.json @@ -0,0 +1,4842 @@ +{ + "fileName": "SafeERC20Helper.sol", + "contractName": "ERC20ReturnFalseMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\n\ncontract ERC20ReturnFalseMock is Context {\n uint256 private _allowance;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function allowance(address, address) public view returns (uint256) {\n require(_dummy == 0); // Duummy read from a state variable so that the function is view\n return 0;\n }\n}\n\ncontract ERC20ReturnTrueMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract ERC20NoReturnMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public {\n _dummy = 0;\n }\n\n function transferFrom(address, address, uint256) public {\n _dummy = 0;\n }\n\n function approve(address, uint256) public {\n _dummy = 0;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract SafeERC20Wrapper is Context {\n using SafeERC20 for IERC20;\n\n IERC20 private _token;\n\n constructor (IERC20 token) public {\n _token = token;\n }\n\n function transfer() public {\n _token.safeTransfer(address(0), 0);\n }\n\n function transferFrom() public {\n _token.safeTransferFrom(address(0), address(0), 0);\n }\n\n function approve(uint256 amount) public {\n _token.safeApprove(address(0), amount);\n }\n\n function increaseAllowance(uint256 amount) public {\n _token.safeIncreaseAllowance(address(0), amount);\n }\n\n function decreaseAllowance(uint256 amount) public {\n _token.safeDecreaseAllowance(address(0), amount);\n }\n\n function setAllowance(uint256 allowance_) public {\n ERC20ReturnTrueMock(address(_token)).setAllowance(allowance_);\n }\n\n function allowance() public view returns (uint256) {\n return _token.allowance(address(0), address(0));\n }\n}\n", + "sourcePath": "contracts/mocks/SafeERC20Helper.sol", + "sourceMap": "163:812:60:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "163:812:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;673:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;547:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;434:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;785:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;673:106;724:4;749:1;740:6;:10;;;;767:5;760:12;;673:106;;;;:::o;547:120::-;612:4;637:1;628:6;:10;;;;655:5;648:12;;547:120;;;;;:::o;434:107::-;486:4;511:1;502:6;:10;;;;529:5;522:12;;434:107;;;;:::o;785:188::-;843:7;880:1;870:6;;:11;862:20;;;;;;965:1;958:8;;785:188;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SafeERC20Helper.sol", + "exportedSymbols": { + "ERC20NoReturnMock": [ + 5621 + ], + "ERC20ReturnFalseMock": [ + 5461 + ], + "ERC20ReturnTrueMock": [ + 5547 + ], + "SafeERC20Wrapper": [ + 5753 + ] + }, + "id": 5754, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5383, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:60" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 5384, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 27, + "src": "58:28:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 5385, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 7970, + "src": "87:35:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 5386, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 8198, + "src": "123:38:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5387, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "196:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5388, + "nodeType": "InheritanceSpecifier", + "src": "196:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5461, + "linearizedBaseContracts": [ + 5461, + 26 + ], + "name": "ERC20ReturnFalseMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5390, + "mutability": "mutable", + "name": "_allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "210:26:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "210:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5392, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "405:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5407, + "nodeType": "Block", + "src": "492:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5401, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "502:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "511:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "502:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5404, + "nodeType": "ExpressionStatement", + "src": "502:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "529:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5400, + "id": 5406, + "nodeType": "Return", + "src": "522:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5394, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "452:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5396, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "461:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:18:60" + }, + "returnParameters": { + "id": 5400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5399, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "486:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5398, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "486:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "485:6:60" + }, + "scope": 5461, + "src": "434:107:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5425, + "nodeType": "Block", + "src": "618:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5419, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "628:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "628:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5422, + "nodeType": "ExpressionStatement", + "src": "628:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5418, + "id": 5424, + "nodeType": "Return", + "src": "648:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5426, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5410, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "569:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "569:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "578:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "587:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "568:27:60" + }, + "returnParameters": { + "id": 5418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5417, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "612:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "612:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:6:60" + }, + "scope": 5461, + "src": "547:120:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5441, + "nodeType": "Block", + "src": "730:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5435, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "740:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "749:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "740:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "740:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "767:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5434, + "id": 5440, + "nodeType": "Return", + "src": "760:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5428, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "690:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "690:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "699:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "689:18:60" + }, + "returnParameters": { + "id": 5434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5433, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "724:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5432, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "724:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "723:6:60" + }, + "scope": 5461, + "src": "673:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5459, + "nodeType": "Block", + "src": "852:121:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5452, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "870:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "870:11:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5451, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "862:7:60", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "862:20:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5456, + "nodeType": "ExpressionStatement", + "src": "862:20:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "965:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5450, + "id": 5458, + "nodeType": "Return", + "src": "958:8:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "804:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "804:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "813:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "803:18:60" + }, + "returnParameters": { + "id": 5450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5449, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "843:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "843:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "842:9:60" + }, + "scope": 5461, + "src": "785:188:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "163:812:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5462, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1009:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5463, + "nodeType": "InheritanceSpecifier", + "src": "1009:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5547, + "linearizedBaseContracts": [ + 5547, + 26 + ], + "name": "ERC20ReturnTrueMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5467, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1023:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5466, + "keyType": { + "id": 5464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1032:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1023:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5469, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1240:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1240:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5484, + "nodeType": "Block", + "src": "1327:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5478, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1337:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1346:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1337:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5481, + "nodeType": "ExpressionStatement", + "src": "1337:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1364:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5477, + "id": 5483, + "nodeType": "Return", + "src": "1357:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5471, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1287:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1287:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5473, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1296:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1286:18:60" + }, + "returnParameters": { + "id": 5477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5476, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1321:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5475, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1321:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1320:6:60" + }, + "scope": 5547, + "src": "1269:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5502, + "nodeType": "Block", + "src": "1452:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5496, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1462:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1471:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1462:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5499, + "nodeType": "ExpressionStatement", + "src": "1462:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1489:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5495, + "id": 5501, + "nodeType": "Return", + "src": "1482:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1403:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1403:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5489, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1412:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1412:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5491, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1421:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1421:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1402:27:60" + }, + "returnParameters": { + "id": 5495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5494, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1446:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1446:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1445:6:60" + }, + "scope": 5547, + "src": "1381:119:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5518, + "nodeType": "Block", + "src": "1563:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5512, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1573:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1573:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5515, + "nodeType": "ExpressionStatement", + "src": "1573:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1600:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5511, + "id": 5517, + "nodeType": "Return", + "src": "1593:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5505, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1523:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1523:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5507, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1532:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1532:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1522:18:60" + }, + "returnParameters": { + "id": 5511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5510, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1557:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5509, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1557:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1556:6:60" + }, + "scope": 5547, + "src": "1506:105:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5531, + "nodeType": "Block", + "src": "1666:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5524, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1676:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5527, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5525, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1688:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1688:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1676:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5528, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5521, + "src": "1704:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1676:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5530, + "nodeType": "ExpressionStatement", + "src": "1676:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5521, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5532, + "src": "1639:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1638:20:60" + }, + "returnParameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [], + "src": "1666:0:60" + }, + "scope": 5547, + "src": "1617:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5545, + "nodeType": "Block", + "src": "1800:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5541, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1817:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5543, + "indexExpression": { + "argumentTypes": null, + "id": 5542, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5534, + "src": "1829:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1817:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5540, + "id": 5544, + "nodeType": "Return", + "src": "1810:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5534, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1746:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1746:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5536, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1761:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1761:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1745:24:60" + }, + "returnParameters": { + "id": 5540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5539, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1791:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1791:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1790:9:60" + }, + "scope": 5547, + "src": "1727:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "977:867:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5548, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1876:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5549, + "nodeType": "InheritanceSpecifier", + "src": "1876:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5621, + "linearizedBaseContracts": [ + 5621, + 26 + ], + "name": "ERC20NoReturnMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5553, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "1890:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5552, + "keyType": { + "id": 5550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1899:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1890:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1910:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5555, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "2107:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5566, + "nodeType": "Block", + "src": "2179:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5562, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2189:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2198:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2189:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5565, + "nodeType": "ExpressionStatement", + "src": "2189:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2154:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2154:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5559, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2163:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2153:18:60" + }, + "returnParameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [], + "src": "2179:0:60" + }, + "scope": 5621, + "src": "2136:70:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5580, + "nodeType": "Block", + "src": "2268:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5576, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2278:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2278:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5579, + "nodeType": "ExpressionStatement", + "src": "2278:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5581, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5569, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2234:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2234:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2243:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2243:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5573, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2252:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2252:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2233:27:60" + }, + "returnParameters": { + "id": 5575, + "nodeType": "ParameterList", + "parameters": [], + "src": "2268:0:60" + }, + "scope": 5621, + "src": "2212:83:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5592, + "nodeType": "Block", + "src": "2343:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5588, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2353:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2353:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5591, + "nodeType": "ExpressionStatement", + "src": "2353:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5583, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2318:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2318:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5585, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2327:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2327:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2317:18:60" + }, + "returnParameters": { + "id": 5587, + "nodeType": "ParameterList", + "parameters": [], + "src": "2343:0:60" + }, + "scope": 5621, + "src": "2301:69:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5605, + "nodeType": "Block", + "src": "2425:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5598, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2435:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5601, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5599, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2447:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2447:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2435:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5602, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5595, + "src": "2463:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2435:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5604, + "nodeType": "ExpressionStatement", + "src": "2435:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5595, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5606, + "src": "2398:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2398:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2397:20:60" + }, + "returnParameters": { + "id": 5597, + "nodeType": "ParameterList", + "parameters": [], + "src": "2425:0:60" + }, + "scope": 5621, + "src": "2376:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5619, + "nodeType": "Block", + "src": "2559:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5615, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2576:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5617, + "indexExpression": { + "argumentTypes": null, + "id": 5616, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5608, + "src": "2588:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2576:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5614, + "id": 5618, + "nodeType": "Return", + "src": "2569:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5608, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2505:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2505:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5610, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2520:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2520:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2504:24:60" + }, + "returnParameters": { + "id": 5614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5613, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2550:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2549:9:60" + }, + "scope": 5621, + "src": "2486:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "1846:757:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5622, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "2634:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5623, + "nodeType": "InheritanceSpecifier", + "src": "2634:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5753, + "linearizedBaseContracts": [ + 5753, + 26 + ], + "name": "SafeERC20Wrapper", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5626, + "libraryName": { + "contractScope": null, + "id": 5624, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8197, + "src": "2654:9:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$8197", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "2648:27:60", + "typeName": { + "contractScope": null, + "id": 5625, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2668:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 5628, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5753, + "src": "2681:21:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5627, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2681:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5637, + "nodeType": "Block", + "src": "2743:31:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5633, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2753:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5634, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "2762:5:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "src": "2753:14:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5636, + "nodeType": "ExpressionStatement", + "src": "2753:14:60" + } + ] + }, + "documentation": null, + "id": 5638, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5638, + "src": "2722:12:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5629, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2722:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2721:14:60" + }, + "returnParameters": { + "id": 5632, + "nodeType": "ParameterList", + "parameters": [], + "src": "2743:0:60" + }, + "scope": 5753, + "src": "2709:65:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5651, + "nodeType": "Block", + "src": "2807:51:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2845:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2837:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2849:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5641, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2817:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8003, + "src": "2817:19:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2817:34:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5650, + "nodeType": "ExpressionStatement", + "src": "2817:34:60" + } + ] + }, + "documentation": null, + "functionSelector": "8a4068dd", + "id": 5652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [], + "src": "2797:2:60" + }, + "returnParameters": { + "id": 5640, + "nodeType": "ParameterList", + "parameters": [], + "src": "2807:0:60" + }, + "scope": 5753, + "src": "2780:78:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5669, + "nodeType": "Block", + "src": "2895:67:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2937:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2929:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2949:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2941:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5655, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2905:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8028, + "src": "2905:23:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 5667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2905:50:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5668, + "nodeType": "ExpressionStatement", + "src": "2905:50:60" + } + ] + }, + "documentation": null, + "functionSelector": "811c34d3", + "id": 5670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5653, + "nodeType": "ParameterList", + "parameters": [], + "src": "2885:2:60" + }, + "returnParameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [], + "src": "2895:0:60" + }, + "scope": 5753, + "src": "2864:98:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5685, + "nodeType": "Block", + "src": "3008:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3045:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3037:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5682, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5672, + "src": "3049:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5675, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3018:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 8070, + "src": "3018:18:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3018:38:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5684, + "nodeType": "ExpressionStatement", + "src": "3018:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "b759f954", + "id": 5686, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "2985:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2985:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2984:16:60" + }, + "returnParameters": { + "id": 5674, + "nodeType": "ParameterList", + "parameters": [], + "src": "3008:0:60" + }, + "scope": 5753, + "src": "2968:95:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5701, + "nodeType": "Block", + "src": "3119:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3166:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3158:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5698, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "3170:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5691, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3129:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeIncreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8106, + "src": "3129:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3129:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5700, + "nodeType": "ExpressionStatement", + "src": "3129:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "11e330b2", + "id": 5702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5688, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5702, + "src": "3096:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3096:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:16:60" + }, + "returnParameters": { + "id": 5690, + "nodeType": "ParameterList", + "parameters": [], + "src": "3119:0:60" + }, + "scope": 5753, + "src": "3069:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5717, + "nodeType": "Block", + "src": "3240:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3279:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5704, + "src": "3291:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5707, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3250:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeDecreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8143, + "src": "3250:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3250:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5716, + "nodeType": "ExpressionStatement", + "src": "3250:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "10bad4cf", + "id": 5718, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5704, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5718, + "src": "3217:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3217:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3216:16:60" + }, + "returnParameters": { + "id": 5706, + "nodeType": "ParameterList", + "parameters": [], + "src": "3240:0:60" + }, + "scope": 5753, + "src": "3190:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5733, + "nodeType": "Block", + "src": "3360:78:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5730, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5720, + "src": "3420:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5726, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3398:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 5725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3390:15:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5723, + "name": "ERC20ReturnTrueMock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5547, + "src": "3370:19:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20ReturnTrueMock_$5547_$", + "typeString": "type(contract ERC20ReturnTrueMock)" + } + }, + "id": 5728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:36:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20ReturnTrueMock_$5547", + "typeString": "contract ERC20ReturnTrueMock" + } + }, + "id": 5729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5532, + "src": "3370:49:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:61:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5732, + "nodeType": "ExpressionStatement", + "src": "3370:61:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5720, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5734, + "src": "3333:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3333:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3332:20:60" + }, + "returnParameters": { + "id": 5722, + "nodeType": "ParameterList", + "parameters": [], + "src": "3360:0:60" + }, + "scope": 5753, + "src": "3311:127:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5751, + "nodeType": "Block", + "src": "3495:64:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3537:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3529:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3549:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3541:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 5739, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3512:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 7928, + "src": "3512:16:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3512:40:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5738, + "id": 5750, + "nodeType": "Return", + "src": "3505:47:60" + } + ] + }, + "documentation": null, + "functionSelector": "de242ff4", + "id": 5752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5735, + "nodeType": "ParameterList", + "parameters": [], + "src": "3462:2:60" + }, + "returnParameters": { + "id": 5738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5737, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5752, + "src": "3486:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3486:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3485:9:60" + }, + "scope": 5753, + "src": "3444:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "2605:956:60" + } + ], + "src": "33:3529:60" + }, + "bytecode": "0x608060405234801561001057600080fd5b506102a5806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063095ea7b31461005157806323b872dd146100b7578063a9059cbb1461013d578063dd62ed3e146101a3575b600080fd5b61009d6004803603604081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061021b565b604051808215151515815260200191505060405180910390f35b610123600480360360608110156100cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061022e565b604051808215151515815260200191505060405180910390f35b6101896004803603604081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610242565b604051808215151515815260200191505060405180910390f35b610205600480360360408110156101b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610255565b6040518082815260200191505060405180910390f35b6000806001819055506000905092915050565b600080600181905550600090509392505050565b6000806001819055506000905092915050565b6000806001541461026557600080fd5b600090509291505056fea26469706673582212209d6a92f0f78063f2daca4141466b17766d7066b322a3bc49cf8183204db3003464736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063095ea7b31461005157806323b872dd146100b7578063a9059cbb1461013d578063dd62ed3e146101a3575b600080fd5b61009d6004803603604081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061021b565b604051808215151515815260200191505060405180910390f35b610123600480360360608110156100cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061022e565b604051808215151515815260200191505060405180910390f35b6101896004803603604081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610242565b604051808215151515815260200191505060405180910390f35b610205600480360360408110156101b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610255565b6040518082815260200191505060405180910390f35b6000806001819055506000905092915050565b600080600181905550600090509392505050565b6000806001819055506000905092915050565b6000806001541461026557600080fd5b600090509291505056fea26469706673582212209d6a92f0f78063f2daca4141466b17766d7066b322a3bc49cf8183204db3003464736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnTrueMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnTrueMock.json new file mode 100644 index 0000000..ac265f5 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20ReturnTrueMock.json @@ -0,0 +1,4855 @@ +{ + "fileName": "SafeERC20Helper.sol", + "contractName": "ERC20ReturnTrueMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\n\ncontract ERC20ReturnFalseMock is Context {\n uint256 private _allowance;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function allowance(address, address) public view returns (uint256) {\n require(_dummy == 0); // Duummy read from a state variable so that the function is view\n return 0;\n }\n}\n\ncontract ERC20ReturnTrueMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract ERC20NoReturnMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public {\n _dummy = 0;\n }\n\n function transferFrom(address, address, uint256) public {\n _dummy = 0;\n }\n\n function approve(address, uint256) public {\n _dummy = 0;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract SafeERC20Wrapper is Context {\n using SafeERC20 for IERC20;\n\n IERC20 private _token;\n\n constructor (IERC20 token) public {\n _token = token;\n }\n\n function transfer() public {\n _token.safeTransfer(address(0), 0);\n }\n\n function transferFrom() public {\n _token.safeTransferFrom(address(0), address(0), 0);\n }\n\n function approve(uint256 amount) public {\n _token.safeApprove(address(0), amount);\n }\n\n function increaseAllowance(uint256 amount) public {\n _token.safeIncreaseAllowance(address(0), amount);\n }\n\n function decreaseAllowance(uint256 amount) public {\n _token.safeDecreaseAllowance(address(0), amount);\n }\n\n function setAllowance(uint256 allowance_) public {\n ERC20ReturnTrueMock(address(_token)).setAllowance(allowance_);\n }\n\n function allowance() public view returns (uint256) {\n return _token.allowance(address(0), address(0));\n }\n}\n", + "sourcePath": "contracts/mocks/SafeERC20Helper.sol", + "sourceMap": "977:867:60:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "977:867:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1381:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1617:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1269:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1727:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1506:105;1557:4;1582:1;1573:6;:10;;;;1600:4;1593:11;;1506:105;;;;:::o;1381:119::-;1446:4;1471:1;1462:6;:10;;;;1489:4;1482:11;;1381:119;;;;;:::o;1617:104::-;1704:10;1676:11;:25;1688:12;:10;:12::i;:::-;1676:25;;;;;;;;;;;;;;;:38;;;;1617:104;:::o;1269:106::-;1321:4;1346:1;1337:6;:10;;;;1364:4;1357:11;;1269:106;;;;:::o;1727:115::-;1791:7;1817:11;:18;1829:5;1817:18;;;;;;;;;;;;;;;;1810:25;;1727:115;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "allowance_", + "type": "uint256" + } + ], + "name": "setAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SafeERC20Helper.sol", + "exportedSymbols": { + "ERC20NoReturnMock": [ + 5621 + ], + "ERC20ReturnFalseMock": [ + 5461 + ], + "ERC20ReturnTrueMock": [ + 5547 + ], + "SafeERC20Wrapper": [ + 5753 + ] + }, + "id": 5754, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5383, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:60" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 5384, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 27, + "src": "58:28:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 5385, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 7970, + "src": "87:35:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 5386, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 8198, + "src": "123:38:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5387, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "196:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5388, + "nodeType": "InheritanceSpecifier", + "src": "196:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5461, + "linearizedBaseContracts": [ + 5461, + 26 + ], + "name": "ERC20ReturnFalseMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5390, + "mutability": "mutable", + "name": "_allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "210:26:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "210:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5392, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "405:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5407, + "nodeType": "Block", + "src": "492:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5401, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "502:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "511:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "502:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5404, + "nodeType": "ExpressionStatement", + "src": "502:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "529:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5400, + "id": 5406, + "nodeType": "Return", + "src": "522:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5394, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "452:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5396, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "461:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:18:60" + }, + "returnParameters": { + "id": 5400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5399, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "486:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5398, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "486:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "485:6:60" + }, + "scope": 5461, + "src": "434:107:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5425, + "nodeType": "Block", + "src": "618:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5419, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "628:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "628:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5422, + "nodeType": "ExpressionStatement", + "src": "628:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5418, + "id": 5424, + "nodeType": "Return", + "src": "648:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5426, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5410, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "569:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "569:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "578:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "587:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "568:27:60" + }, + "returnParameters": { + "id": 5418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5417, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "612:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "612:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:6:60" + }, + "scope": 5461, + "src": "547:120:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5441, + "nodeType": "Block", + "src": "730:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5435, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "740:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "749:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "740:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "740:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "767:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5434, + "id": 5440, + "nodeType": "Return", + "src": "760:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5428, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "690:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "690:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "699:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "689:18:60" + }, + "returnParameters": { + "id": 5434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5433, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "724:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5432, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "724:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "723:6:60" + }, + "scope": 5461, + "src": "673:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5459, + "nodeType": "Block", + "src": "852:121:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5452, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "870:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "870:11:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5451, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "862:7:60", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "862:20:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5456, + "nodeType": "ExpressionStatement", + "src": "862:20:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "965:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5450, + "id": 5458, + "nodeType": "Return", + "src": "958:8:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "804:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "804:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "813:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "803:18:60" + }, + "returnParameters": { + "id": 5450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5449, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "843:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "843:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "842:9:60" + }, + "scope": 5461, + "src": "785:188:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "163:812:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5462, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1009:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5463, + "nodeType": "InheritanceSpecifier", + "src": "1009:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5547, + "linearizedBaseContracts": [ + 5547, + 26 + ], + "name": "ERC20ReturnTrueMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5467, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1023:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5466, + "keyType": { + "id": 5464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1032:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1023:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5469, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1240:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1240:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5484, + "nodeType": "Block", + "src": "1327:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5478, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1337:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1346:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1337:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5481, + "nodeType": "ExpressionStatement", + "src": "1337:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1364:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5477, + "id": 5483, + "nodeType": "Return", + "src": "1357:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5471, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1287:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1287:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5473, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1296:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1286:18:60" + }, + "returnParameters": { + "id": 5477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5476, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1321:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5475, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1321:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1320:6:60" + }, + "scope": 5547, + "src": "1269:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5502, + "nodeType": "Block", + "src": "1452:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5496, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1462:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1471:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1462:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5499, + "nodeType": "ExpressionStatement", + "src": "1462:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1489:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5495, + "id": 5501, + "nodeType": "Return", + "src": "1482:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1403:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1403:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5489, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1412:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1412:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5491, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1421:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1421:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1402:27:60" + }, + "returnParameters": { + "id": 5495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5494, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1446:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1446:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1445:6:60" + }, + "scope": 5547, + "src": "1381:119:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5518, + "nodeType": "Block", + "src": "1563:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5512, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1573:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1573:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5515, + "nodeType": "ExpressionStatement", + "src": "1573:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1600:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5511, + "id": 5517, + "nodeType": "Return", + "src": "1593:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5505, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1523:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1523:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5507, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1532:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1532:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1522:18:60" + }, + "returnParameters": { + "id": 5511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5510, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1557:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5509, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1557:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1556:6:60" + }, + "scope": 5547, + "src": "1506:105:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5531, + "nodeType": "Block", + "src": "1666:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5524, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1676:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5527, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5525, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1688:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1688:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1676:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5528, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5521, + "src": "1704:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1676:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5530, + "nodeType": "ExpressionStatement", + "src": "1676:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5521, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5532, + "src": "1639:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1638:20:60" + }, + "returnParameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [], + "src": "1666:0:60" + }, + "scope": 5547, + "src": "1617:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5545, + "nodeType": "Block", + "src": "1800:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5541, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1817:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5543, + "indexExpression": { + "argumentTypes": null, + "id": 5542, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5534, + "src": "1829:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1817:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5540, + "id": 5544, + "nodeType": "Return", + "src": "1810:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5534, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1746:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1746:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5536, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1761:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1761:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1745:24:60" + }, + "returnParameters": { + "id": 5540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5539, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1791:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1791:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1790:9:60" + }, + "scope": 5547, + "src": "1727:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "977:867:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5548, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1876:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5549, + "nodeType": "InheritanceSpecifier", + "src": "1876:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5621, + "linearizedBaseContracts": [ + 5621, + 26 + ], + "name": "ERC20NoReturnMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5553, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "1890:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5552, + "keyType": { + "id": 5550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1899:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1890:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1910:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5555, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "2107:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5566, + "nodeType": "Block", + "src": "2179:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5562, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2189:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2198:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2189:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5565, + "nodeType": "ExpressionStatement", + "src": "2189:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2154:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2154:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5559, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2163:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2153:18:60" + }, + "returnParameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [], + "src": "2179:0:60" + }, + "scope": 5621, + "src": "2136:70:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5580, + "nodeType": "Block", + "src": "2268:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5576, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2278:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2278:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5579, + "nodeType": "ExpressionStatement", + "src": "2278:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5581, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5569, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2234:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2234:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2243:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2243:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5573, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2252:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2252:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2233:27:60" + }, + "returnParameters": { + "id": 5575, + "nodeType": "ParameterList", + "parameters": [], + "src": "2268:0:60" + }, + "scope": 5621, + "src": "2212:83:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5592, + "nodeType": "Block", + "src": "2343:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5588, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2353:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2353:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5591, + "nodeType": "ExpressionStatement", + "src": "2353:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5583, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2318:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2318:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5585, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2327:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2327:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2317:18:60" + }, + "returnParameters": { + "id": 5587, + "nodeType": "ParameterList", + "parameters": [], + "src": "2343:0:60" + }, + "scope": 5621, + "src": "2301:69:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5605, + "nodeType": "Block", + "src": "2425:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5598, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2435:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5601, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5599, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2447:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2447:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2435:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5602, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5595, + "src": "2463:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2435:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5604, + "nodeType": "ExpressionStatement", + "src": "2435:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5595, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5606, + "src": "2398:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2398:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2397:20:60" + }, + "returnParameters": { + "id": 5597, + "nodeType": "ParameterList", + "parameters": [], + "src": "2425:0:60" + }, + "scope": 5621, + "src": "2376:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5619, + "nodeType": "Block", + "src": "2559:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5615, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2576:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5617, + "indexExpression": { + "argumentTypes": null, + "id": 5616, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5608, + "src": "2588:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2576:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5614, + "id": 5618, + "nodeType": "Return", + "src": "2569:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5608, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2505:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2505:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5610, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2520:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2520:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2504:24:60" + }, + "returnParameters": { + "id": 5614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5613, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2550:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2549:9:60" + }, + "scope": 5621, + "src": "2486:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "1846:757:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5622, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "2634:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5623, + "nodeType": "InheritanceSpecifier", + "src": "2634:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5753, + "linearizedBaseContracts": [ + 5753, + 26 + ], + "name": "SafeERC20Wrapper", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5626, + "libraryName": { + "contractScope": null, + "id": 5624, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8197, + "src": "2654:9:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$8197", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "2648:27:60", + "typeName": { + "contractScope": null, + "id": 5625, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2668:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 5628, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5753, + "src": "2681:21:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5627, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2681:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5637, + "nodeType": "Block", + "src": "2743:31:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5633, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2753:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5634, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "2762:5:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "src": "2753:14:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5636, + "nodeType": "ExpressionStatement", + "src": "2753:14:60" + } + ] + }, + "documentation": null, + "id": 5638, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5638, + "src": "2722:12:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5629, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2722:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2721:14:60" + }, + "returnParameters": { + "id": 5632, + "nodeType": "ParameterList", + "parameters": [], + "src": "2743:0:60" + }, + "scope": 5753, + "src": "2709:65:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5651, + "nodeType": "Block", + "src": "2807:51:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2845:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2837:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2849:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5641, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2817:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8003, + "src": "2817:19:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2817:34:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5650, + "nodeType": "ExpressionStatement", + "src": "2817:34:60" + } + ] + }, + "documentation": null, + "functionSelector": "8a4068dd", + "id": 5652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [], + "src": "2797:2:60" + }, + "returnParameters": { + "id": 5640, + "nodeType": "ParameterList", + "parameters": [], + "src": "2807:0:60" + }, + "scope": 5753, + "src": "2780:78:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5669, + "nodeType": "Block", + "src": "2895:67:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2937:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2929:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2949:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2941:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5655, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2905:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8028, + "src": "2905:23:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 5667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2905:50:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5668, + "nodeType": "ExpressionStatement", + "src": "2905:50:60" + } + ] + }, + "documentation": null, + "functionSelector": "811c34d3", + "id": 5670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5653, + "nodeType": "ParameterList", + "parameters": [], + "src": "2885:2:60" + }, + "returnParameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [], + "src": "2895:0:60" + }, + "scope": 5753, + "src": "2864:98:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5685, + "nodeType": "Block", + "src": "3008:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3045:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3037:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5682, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5672, + "src": "3049:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5675, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3018:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 8070, + "src": "3018:18:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3018:38:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5684, + "nodeType": "ExpressionStatement", + "src": "3018:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "b759f954", + "id": 5686, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "2985:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2985:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2984:16:60" + }, + "returnParameters": { + "id": 5674, + "nodeType": "ParameterList", + "parameters": [], + "src": "3008:0:60" + }, + "scope": 5753, + "src": "2968:95:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5701, + "nodeType": "Block", + "src": "3119:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3166:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3158:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5698, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "3170:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5691, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3129:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeIncreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8106, + "src": "3129:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3129:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5700, + "nodeType": "ExpressionStatement", + "src": "3129:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "11e330b2", + "id": 5702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5688, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5702, + "src": "3096:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3096:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:16:60" + }, + "returnParameters": { + "id": 5690, + "nodeType": "ParameterList", + "parameters": [], + "src": "3119:0:60" + }, + "scope": 5753, + "src": "3069:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5717, + "nodeType": "Block", + "src": "3240:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3279:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5704, + "src": "3291:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5707, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3250:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeDecreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8143, + "src": "3250:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3250:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5716, + "nodeType": "ExpressionStatement", + "src": "3250:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "10bad4cf", + "id": 5718, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5704, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5718, + "src": "3217:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3217:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3216:16:60" + }, + "returnParameters": { + "id": 5706, + "nodeType": "ParameterList", + "parameters": [], + "src": "3240:0:60" + }, + "scope": 5753, + "src": "3190:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5733, + "nodeType": "Block", + "src": "3360:78:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5730, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5720, + "src": "3420:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5726, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3398:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 5725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3390:15:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5723, + "name": "ERC20ReturnTrueMock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5547, + "src": "3370:19:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20ReturnTrueMock_$5547_$", + "typeString": "type(contract ERC20ReturnTrueMock)" + } + }, + "id": 5728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:36:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20ReturnTrueMock_$5547", + "typeString": "contract ERC20ReturnTrueMock" + } + }, + "id": 5729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5532, + "src": "3370:49:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:61:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5732, + "nodeType": "ExpressionStatement", + "src": "3370:61:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5720, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5734, + "src": "3333:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3333:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3332:20:60" + }, + "returnParameters": { + "id": 5722, + "nodeType": "ParameterList", + "parameters": [], + "src": "3360:0:60" + }, + "scope": 5753, + "src": "3311:127:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5751, + "nodeType": "Block", + "src": "3495:64:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3537:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3529:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3549:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3541:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 5739, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3512:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 7928, + "src": "3512:16:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3512:40:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5738, + "id": 5750, + "nodeType": "Return", + "src": "3505:47:60" + } + ] + }, + "documentation": null, + "functionSelector": "de242ff4", + "id": 5752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5735, + "nodeType": "ParameterList", + "parameters": [], + "src": "3462:2:60" + }, + "returnParameters": { + "id": 5738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5737, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5752, + "src": "3486:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3486:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3485:9:60" + }, + "scope": 5753, + "src": "3444:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "2605:956:60" + } + ], + "src": "33:3529:60" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610362806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063095ea7b31461005c57806323b872dd146100c25780633ba93f2614610148578063a9059cbb14610176578063dd62ed3e146101dc575b600080fd5b6100a86004803603604081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610254565b604051808215151515815260200191505060405180910390f35b61012e600480360360608110156100d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610267565b604051808215151515815260200191505060405180910390f35b6101746004803603602081101561015e57600080fd5b810190808035906020019092919050505061027b565b005b6101c26004803603604081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102c8565b604051808215151515815260200191505060405180910390f35b61023e600480360360408110156101f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102db565b6040518082815260200191505060405180910390f35b6000806001819055506001905092915050565b600080600181905550600190509392505050565b80600080610287610324565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000806001819055506001905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003390509056fea2646970667358221220490c0b3eb12ffb186d19409ec60532169b10c7c872cab013809e48ad4deef98764736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063095ea7b31461005c57806323b872dd146100c25780633ba93f2614610148578063a9059cbb14610176578063dd62ed3e146101dc575b600080fd5b6100a86004803603604081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610254565b604051808215151515815260200191505060405180910390f35b61012e600480360360608110156100d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610267565b604051808215151515815260200191505060405180910390f35b6101746004803603602081101561015e57600080fd5b810190808035906020019092919050505061027b565b005b6101c26004803603604081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102c8565b604051808215151515815260200191505060405180910390f35b61023e600480360360408110156101f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102db565b6040518082815260200191505060405180910390f35b6000806001819055506001905092915050565b600080600181905550600190509392505050565b80600080610287610324565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000806001819055506001905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60003390509056fea2646970667358221220490c0b3eb12ffb186d19409ec60532169b10c7c872cab013809e48ad4deef98764736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20Snapshot.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Snapshot.json new file mode 100644 index 0000000..72214fe --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20Snapshot.json @@ -0,0 +1,4559 @@ +{ + "fileName": "ERC20Snapshot.sol", + "contractName": "ERC20Snapshot", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Arrays.sol\";\nimport \"../../utils/Counters.sol\";\nimport \"./ERC20.sol\";\n\n/**\n * @dev This contract extends an ERC20 token with a snapshot mechanism. When a snapshot is created, the balances and\n * total supply at the time are recorded for later access.\n *\n * This can be used to safely create mechanisms based on token balances such as trustless dividends or weighted voting.\n * In naive implementations it's possible to perform a \"double spend\" attack by reusing the same balance from different\n * accounts. By using snapshots to calculate dividends or voting power, those attacks no longer apply. It can also be\n * used to create an efficient ERC20 forking mechanism.\n *\n * Snapshots are created by the internal {_snapshot} function, which will emit the {Snapshot} event and return a\n * snapshot id. To get the total supply at the time of a snapshot, call the function {totalSupplyAt} with the snapshot\n * id. To get the balance of an account at the time of a snapshot, call the {balanceOfAt} function with the snapshot id\n * and the account address.\n *\n * ==== Gas Costs\n *\n * Snapshots are efficient. Snapshot creation is _O(1)_. Retrieval of balances or total supply from a snapshot is _O(log\n * n)_ in the number of snapshots that have been created, although _n_ for a specific account will generally be much\n * smaller since identical balances in subsequent snapshots are stored as a single entry.\n *\n * There is a constant overhead for normal ERC20 transfers due to the additional snapshot bookkeeping. This overhead is\n * only significant for the first transfer that immediately follows a snapshot for a particular account. Subsequent\n * transfers will have normal cost until the next snapshot, and so on.\n */\nabstract contract ERC20Snapshot is ERC20 {\n // Inspired by Jordi Baylina's MiniMeToken to record historical balances:\n // https://github.com/Giveth/minimd/blob/ea04d950eea153a04c51fa510b068b9dded390cb/contracts/MiniMeToken.sol\n\n using SafeMath for uint256;\n using Arrays for uint256[];\n using Counters for Counters.Counter;\n\n // Snapshotted values have arrays of ids and the value corresponding to that id. These could be an array of a\n // Snapshot struct, but that would impede usage of functions that work on an array.\n struct Snapshots {\n uint256[] ids;\n uint256[] values;\n }\n\n mapping (address => Snapshots) private _accountBalanceSnapshots;\n Snapshots private _totalSupplySnapshots;\n\n // Snapshot ids increase monotonically, with the first value being 1. An id of 0 is invalid.\n Counters.Counter private _currentSnapshotId;\n\n /**\n * @dev Emitted by {_snapshot} when a snapshot identified by `id` is created.\n */\n event Snapshot(uint256 id);\n\n /**\n * @dev Creates a new snapshot and returns its snapshot id.\n *\n * Emits a {Snapshot} event that contains the same id.\n *\n * {_snapshot} is `internal` and you have to decide how to expose it externally. Its usage may be restricted to a\n * set of accounts, for example using {AccessControl}, or it may be open to the public.\n *\n * [WARNING]\n * ====\n * While an open way of calling {_snapshot} is required for certain trust minimization mechanisms such as forking,\n * you must consider that it can potentially be used by attackers in two ways.\n *\n * First, it can be used to increase the cost of retrieval of values from snapshots, although it will grow\n * logarithmically thus rendering this attack ineffective in the long term. Second, it can be used to target\n * specific accounts and increase the cost of ERC20 transfers for them, in the ways specified in the Gas Costs\n * section above.\n *\n * We haven't measured the actual numbers; if this is something you're interested in please reach out to us.\n * ====\n */\n function _snapshot() internal virtual returns (uint256) {\n _currentSnapshotId.increment();\n\n uint256 currentId = _currentSnapshotId.current();\n emit Snapshot(currentId);\n return currentId;\n }\n\n /**\n * @dev Retrieves the balance of `account` at the time `snapshotId` was created.\n */\n function balanceOfAt(address account, uint256 snapshotId) public view returns (uint256) {\n (bool snapshotted, uint256 value) = _valueAt(snapshotId, _accountBalanceSnapshots[account]);\n\n return snapshotted ? value : balanceOf(account);\n }\n\n /**\n * @dev Retrieves the total supply at the time `snapshotId` was created.\n */\n function totalSupplyAt(uint256 snapshotId) public view returns(uint256) {\n (bool snapshotted, uint256 value) = _valueAt(snapshotId, _totalSupplySnapshots);\n\n return snapshotted ? value : totalSupply();\n }\n\n // _transfer, _mint and _burn are the only functions where the balances are modified, so it is there that the\n // snapshots are updated. Note that the update happens _before_ the balance change, with the pre-modified value.\n // The same is true for the total supply and _mint and _burn.\n function _transfer(address from, address to, uint256 value) internal virtual override {\n _updateAccountSnapshot(from);\n _updateAccountSnapshot(to);\n\n super._transfer(from, to, value);\n }\n\n function _mint(address account, uint256 value) internal virtual override {\n _updateAccountSnapshot(account);\n _updateTotalSupplySnapshot();\n\n super._mint(account, value);\n }\n\n function _burn(address account, uint256 value) internal virtual override {\n _updateAccountSnapshot(account);\n _updateTotalSupplySnapshot();\n\n super._burn(account, value);\n }\n\n function _valueAt(uint256 snapshotId, Snapshots storage snapshots)\n private view returns (bool, uint256)\n {\n require(snapshotId > 0, \"ERC20Snapshot: id is 0\");\n // solhint-disable-next-line max-line-length\n require(snapshotId <= _currentSnapshotId.current(), \"ERC20Snapshot: nonexistent id\");\n\n // When a valid snapshot is queried, there are three possibilities:\n // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never\n // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds\n // to this id is the current one.\n // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the\n // requested id, and its value is the one to return.\n // c) More snapshots were created after the requested one, and the queried value was later modified. There will be\n // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is\n // larger than the requested one.\n //\n // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if\n // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does\n // exactly this.\n\n uint256 index = snapshots.ids.findUpperBound(snapshotId);\n\n if (index == snapshots.ids.length) {\n return (false, 0);\n } else {\n return (true, snapshots.values[index]);\n }\n }\n\n function _updateAccountSnapshot(address account) private {\n _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account));\n }\n\n function _updateTotalSupplySnapshot() private {\n _updateSnapshot(_totalSupplySnapshots, totalSupply());\n }\n\n function _updateSnapshot(Snapshots storage snapshots, uint256 currentValue) private {\n uint256 currentId = _currentSnapshotId.current();\n if (_lastSnapshotId(snapshots.ids) < currentId) {\n snapshots.ids.push(currentId);\n snapshots.values.push(currentValue);\n }\n }\n\n function _lastSnapshotId(uint256[] storage ids) private view returns (uint256) {\n if (ids.length == 0) {\n return 0;\n } else {\n return ids[ids.length - 1];\n }\n }\n}\n", + "sourcePath": "contracts/token/ERC20/ERC20Snapshot.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Snapshot", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/ERC20Snapshot.sol", + "exportedSymbols": { + "ERC20Snapshot": [ + 9695 + ] + }, + "id": 9696, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9364, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:88" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 9365, + "nodeType": "ImportDirective", + "scope": 9696, + "sourceUnit": 2422, + "src": "58:33:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Arrays.sol", + "file": "../../utils/Arrays.sol", + "id": 9366, + "nodeType": "ImportDirective", + "scope": 9696, + "sourceUnit": 12900, + "src": "92:32:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Counters.sol", + "file": "../../utils/Counters.sol", + "id": 9367, + "nodeType": "ImportDirective", + "scope": 9696, + "sourceUnit": 12950, + "src": "125:34:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 9368, + "nodeType": "ImportDirective", + "scope": 9696, + "sourceUnit": 9195, + "src": "160:21:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 9370, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "1864:5:88", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + "id": 9371, + "nodeType": "InheritanceSpecifier", + "src": "1864:5:88" + } + ], + "contractDependencies": [ + 22, + 9194, + 9773 + ], + "contractKind": "contract", + "documentation": { + "id": 9369, + "nodeType": "StructuredDocumentation", + "src": "183:1645:88", + "text": " @dev This contract extends an ERC20 token with a snapshot mechanism. When a snapshot is created, the balances and\n total supply at the time are recorded for later access.\n This can be used to safely create mechanisms based on token balances such as trustless dividends or weighted voting.\n In naive implementations it's possible to perform a \"double spend\" attack by reusing the same balance from different\n accounts. By using snapshots to calculate dividends or voting power, those attacks no longer apply. It can also be\n used to create an efficient ERC20 forking mechanism.\n Snapshots are created by the internal {_snapshot} function, which will emit the {Snapshot} event and return a\n snapshot id. To get the total supply at the time of a snapshot, call the function {totalSupplyAt} with the snapshot\n id. To get the balance of an account at the time of a snapshot, call the {balanceOfAt} function with the snapshot id\n and the account address.\n ==== Gas Costs\n Snapshots are efficient. Snapshot creation is _O(1)_. Retrieval of balances or total supply from a snapshot is _O(log\n n)_ in the number of snapshots that have been created, although _n_ for a specific account will generally be much\n smaller since identical balances in subsequent snapshots are stored as a single entry.\n There is a constant overhead for normal ERC20 transfers due to the additional snapshot bookkeeping. This overhead is\n only significant for the first transfer that immediately follows a snapshot for a particular account. Subsequent\n transfers will have normal cost until the next snapshot, and so on." + }, + "fullyImplemented": false, + "id": 9695, + "linearizedBaseContracts": [ + 9695, + 9194, + 9773, + 22 + ], + "name": "ERC20Snapshot", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 9374, + "libraryName": { + "contractScope": null, + "id": 9372, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "2073:8:88", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "2067:27:88", + "typeName": { + "id": 9373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2086:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 9378, + "libraryName": { + "contractScope": null, + "id": 9375, + "name": "Arrays", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12899, + "src": "2105:6:88", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Arrays_$12899", + "typeString": "library Arrays" + } + }, + "nodeType": "UsingForDirective", + "src": "2099:27:88", + "typeName": { + "baseType": { + "id": 9376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2116:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9377, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2116:9:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + { + "id": 9381, + "libraryName": { + "contractScope": null, + "id": 9379, + "name": "Counters", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12949, + "src": "2137:8:88", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Counters_$12949", + "typeString": "library Counters" + } + }, + "nodeType": "UsingForDirective", + "src": "2131:36:88", + "typeName": { + "contractScope": null, + "id": 9380, + "name": "Counters.Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "2150:16:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + } + }, + { + "canonicalName": "ERC20Snapshot.Snapshots", + "id": 9388, + "members": [ + { + "constant": false, + "id": 9384, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9388, + "src": "2402:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2402:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9383, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2402:9:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9387, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9388, + "src": "2425:16:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2425:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9386, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2425:9:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Snapshots", + "nodeType": "StructDefinition", + "scope": 9695, + "src": "2375:73:88", + "visibility": "public" + }, + { + "constant": false, + "id": 9392, + "mutability": "mutable", + "name": "_accountBalanceSnapshots", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9695, + "src": "2454:63:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Snapshots_$9388_storage_$", + "typeString": "mapping(address => struct ERC20Snapshot.Snapshots)" + }, + "typeName": { + "id": 9391, + "keyType": { + "id": 9389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2463:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2454:30:88", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Snapshots_$9388_storage_$", + "typeString": "mapping(address => struct ERC20Snapshot.Snapshots)" + }, + "valueType": { + "contractScope": null, + "id": 9390, + "name": "Snapshots", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9388, + "src": "2474:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9394, + "mutability": "mutable", + "name": "_totalSupplySnapshots", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9695, + "src": "2523:39:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots" + }, + "typeName": { + "contractScope": null, + "id": 9393, + "name": "Snapshots", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9388, + "src": "2523:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9396, + "mutability": "mutable", + "name": "_currentSnapshotId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9695, + "src": "2666:43:88", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "contractScope": null, + "id": 9395, + "name": "Counters.Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "2666:16:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 9397, + "nodeType": "StructuredDocumentation", + "src": "2716:93:88", + "text": " @dev Emitted by {_snapshot} when a snapshot identified by `id` is created." + }, + "id": 9401, + "name": "Snapshot", + "nodeType": "EventDefinition", + "parameters": { + "id": 9400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9399, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9401, + "src": "2829:10:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9398, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2829:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2828:12:88" + }, + "src": "2814:27:88" + }, + { + "body": { + "id": 9424, + "nodeType": "Block", + "src": "4004:166:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 9407, + "name": "_currentSnapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9396, + "src": "4014:18:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 9409, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "increment", + "nodeType": "MemberAccess", + "referencedDeclaration": 12932, + "src": "4014:28:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$12909_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$12909_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer)" + } + }, + "id": 9410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4014:30:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9411, + "nodeType": "ExpressionStatement", + "src": "4014:30:88" + }, + { + "assignments": [ + 9413 + ], + "declarations": [ + { + "constant": false, + "id": 9413, + "mutability": "mutable", + "name": "currentId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9424, + "src": "4055:17:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4055:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9417, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 9414, + "name": "_currentSnapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9396, + "src": "4075:18:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 9415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 12920, + "src": "4075:26:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$12909_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$12909_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 9416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4075:28:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4055:48:88" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9419, + "name": "currentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "4127:9:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9418, + "name": "Snapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9401, + "src": "4118:8:88", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 9420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4118:19:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9421, + "nodeType": "EmitStatement", + "src": "4113:24:88" + }, + { + "expression": { + "argumentTypes": null, + "id": 9422, + "name": "currentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "4154:9:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9406, + "id": 9423, + "nodeType": "Return", + "src": "4147:16:88" + } + ] + }, + "documentation": { + "id": 9402, + "nodeType": "StructuredDocumentation", + "src": "2847:1096:88", + "text": " @dev Creates a new snapshot and returns its snapshot id.\n Emits a {Snapshot} event that contains the same id.\n {_snapshot} is `internal` and you have to decide how to expose it externally. Its usage may be restricted to a\n set of accounts, for example using {AccessControl}, or it may be open to the public.\n [WARNING]\n ====\n While an open way of calling {_snapshot} is required for certain trust minimization mechanisms such as forking,\n you must consider that it can potentially be used by attackers in two ways.\n First, it can be used to increase the cost of retrieval of values from snapshots, although it will grow\n logarithmically thus rendering this attack ineffective in the long term. Second, it can be used to target\n specific accounts and increase the cost of ERC20 transfers for them, in the ways specified in the Gas Costs\n section above.\n We haven't measured the actual numbers; if this is something you're interested in please reach out to us.\n ====" + }, + "id": 9425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_snapshot", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9403, + "nodeType": "ParameterList", + "parameters": [], + "src": "3966:2:88" + }, + "returnParameters": { + "id": 9406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9405, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9425, + "src": "3995:7:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3995:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3994:9:88" + }, + "scope": 9695, + "src": "3948:222:88", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 9453, + "nodeType": "Block", + "src": "4365:166:88", + "statements": [ + { + "assignments": [ + 9436, + 9438 + ], + "declarations": [ + { + "constant": false, + "id": 9436, + "mutability": "mutable", + "name": "snapshotted", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9453, + "src": "4376:16:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9435, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4376:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9438, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9453, + "src": "4394:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4394:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9445, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9440, + "name": "snapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9430, + "src": "4420:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9441, + "name": "_accountBalanceSnapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9392, + "src": "4432:24:88", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Snapshots_$9388_storage_$", + "typeString": "mapping(address => struct ERC20Snapshot.Snapshots storage ref)" + } + }, + "id": 9443, + "indexExpression": { + "argumentTypes": null, + "id": 9442, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9428, + "src": "4457:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4432:33:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + } + ], + "id": 9439, + "name": "_valueAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9606, + "src": "4411:8:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_struct$_Snapshots_$9388_storage_ptr_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,struct ERC20Snapshot.Snapshots storage pointer) view returns (bool,uint256)" + } + }, + "id": 9444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4411:55:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4375:91:88" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "id": 9446, + "name": "snapshotted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "4484:11:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9449, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9428, + "src": "4516:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9448, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8794, + "src": "4506:9:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 9450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4506:18:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "4484:40:88", + "trueExpression": { + "argumentTypes": null, + "id": 9447, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9438, + "src": "4498:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9434, + "id": 9452, + "nodeType": "Return", + "src": "4477:47:88" + } + ] + }, + "documentation": { + "id": 9426, + "nodeType": "StructuredDocumentation", + "src": "4176:96:88", + "text": " @dev Retrieves the balance of `account` at the time `snapshotId` was created." + }, + "functionSelector": "4ee2cd7e", + "id": 9454, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOfAt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9428, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9454, + "src": "4298:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4298:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9430, + "mutability": "mutable", + "name": "snapshotId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9454, + "src": "4315:18:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4315:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4297:37:88" + }, + "returnParameters": { + "id": 9434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9433, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9454, + "src": "4356:7:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4356:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4355:9:88" + }, + "scope": 9695, + "src": "4277:254:88", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 9477, + "nodeType": "Block", + "src": "4702:149:88", + "statements": [ + { + "assignments": [ + 9463, + 9465 + ], + "declarations": [ + { + "constant": false, + "id": 9463, + "mutability": "mutable", + "name": "snapshotted", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9477, + "src": "4713:16:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4713:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9465, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9477, + "src": "4731:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4731:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9470, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9467, + "name": "snapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9457, + "src": "4757:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 9468, + "name": "_totalSupplySnapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9394, + "src": "4769:21:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + } + ], + "id": 9466, + "name": "_valueAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9606, + "src": "4748:8:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_struct$_Snapshots_$9388_storage_ptr_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,struct ERC20Snapshot.Snapshots storage pointer) view returns (bool,uint256)" + } + }, + "id": 9469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4748:43:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4712:79:88" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "id": 9471, + "name": "snapshotted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9463, + "src": "4809:11:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9473, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8780, + "src": "4831:11:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 9474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4831:13:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "4809:35:88", + "trueExpression": { + "argumentTypes": null, + "id": 9472, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9465, + "src": "4823:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9461, + "id": 9476, + "nodeType": "Return", + "src": "4802:42:88" + } + ] + }, + "documentation": { + "id": 9455, + "nodeType": "StructuredDocumentation", + "src": "4537:88:88", + "text": " @dev Retrieves the total supply at the time `snapshotId` was created." + }, + "functionSelector": "981b24d0", + "id": 9478, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupplyAt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9457, + "mutability": "mutable", + "name": "snapshotId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9478, + "src": "4653:18:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4653:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4652:20:88" + }, + "returnParameters": { + "id": 9461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9460, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9478, + "src": "4693:7:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4693:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4692:9:88" + }, + "scope": 9695, + "src": "4630:221:88", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9015 + ], + "body": { + "id": 9504, + "nodeType": "Block", + "src": "5240:124:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9489, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9480, + "src": "5273:4:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9488, + "name": "_updateAccountSnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9621, + "src": "5250:22:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 9490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5250:28:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9491, + "nodeType": "ExpressionStatement", + "src": "5250:28:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9493, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9482, + "src": "5311:2:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9492, + "name": "_updateAccountSnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9621, + "src": "5288:22:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 9494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5288:26:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9495, + "nodeType": "ExpressionStatement", + "src": "5288:26:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9499, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9480, + "src": "5341:4:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9500, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9482, + "src": "5347:2:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9501, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9484, + "src": "5351:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9496, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5325:5:88", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Snapshot_$9695", + "typeString": "contract super ERC20Snapshot" + } + }, + "id": 9498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9015, + "src": "5325:15:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 9502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5325:32:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9503, + "nodeType": "ExpressionStatement", + "src": "5325:32:88" + } + ] + }, + "documentation": null, + "id": 9505, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9486, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5231:8:88" + }, + "parameters": { + "id": 9485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9480, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9505, + "src": "5173:12:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5173:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9482, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9505, + "src": "5187:10:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9481, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5187:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9484, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9505, + "src": "5199:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5199:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5172:41:88" + }, + "returnParameters": { + "id": 9487, + "nodeType": "ParameterList", + "parameters": [], + "src": "5240:0:88" + }, + "scope": 9695, + "src": "5154:210:88", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 9070 + ], + "body": { + "id": 9527, + "nodeType": "Block", + "src": "5443:124:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9514, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9507, + "src": "5476:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9513, + "name": "_updateAccountSnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9621, + "src": "5453:22:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 9515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5453:31:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9516, + "nodeType": "ExpressionStatement", + "src": "5453:31:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9517, + "name": "_updateTotalSupplySnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9631, + "src": "5494:26:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 9518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5494:28:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9519, + "nodeType": "ExpressionStatement", + "src": "5494:28:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9523, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9507, + "src": "5545:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9524, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9509, + "src": "5554:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9520, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5533:5:88", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Snapshot_$9695", + "typeString": "contract super ERC20Snapshot" + } + }, + "id": 9522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9070, + "src": "5533:11:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 9525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5533:27:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9526, + "nodeType": "ExpressionStatement", + "src": "5533:27:88" + } + ] + }, + "documentation": null, + "id": 9528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9511, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5434:8:88" + }, + "parameters": { + "id": 9510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9507, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9528, + "src": "5385:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5385:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9509, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9528, + "src": "5402:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5402:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5384:32:88" + }, + "returnParameters": { + "id": 9512, + "nodeType": "ParameterList", + "parameters": [], + "src": "5443:0:88" + }, + "scope": 9695, + "src": "5370:197:88", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 9126 + ], + "body": { + "id": 9550, + "nodeType": "Block", + "src": "5646:124:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9537, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9530, + "src": "5679:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9536, + "name": "_updateAccountSnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9621, + "src": "5656:22:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 9538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5656:31:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9539, + "nodeType": "ExpressionStatement", + "src": "5656:31:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9540, + "name": "_updateTotalSupplySnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9631, + "src": "5697:26:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 9541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5697:28:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9542, + "nodeType": "ExpressionStatement", + "src": "5697:28:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9546, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9530, + "src": "5748:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9547, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9532, + "src": "5757:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9543, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5736:5:88", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Snapshot_$9695", + "typeString": "contract super ERC20Snapshot" + } + }, + "id": 9545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 9126, + "src": "5736:11:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 9548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5736:27:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9549, + "nodeType": "ExpressionStatement", + "src": "5736:27:88" + } + ] + }, + "documentation": null, + "id": 9551, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 9534, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5637:8:88" + }, + "parameters": { + "id": 9533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9530, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9551, + "src": "5588:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5588:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9532, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9551, + "src": "5605:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5605:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5587:32:88" + }, + "returnParameters": { + "id": 9535, + "nodeType": "ParameterList", + "parameters": [], + "src": "5646:0:88" + }, + "scope": 9695, + "src": "5573:197:88", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 9605, + "nodeType": "Block", + "src": "5892:1548:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9563, + "name": "snapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9553, + "src": "5910:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5923:1:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5910:14:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433230536e617073686f743a2069642069732030", + "id": 9566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5926:24:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6", + "typeString": "literal_string \"ERC20Snapshot: id is 0\"" + }, + "value": "ERC20Snapshot: id is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d85a3cdc203c5cdc6dda93c12cd017145671a0ed9058a16c7aa00b8398a4a8e6", + "typeString": "literal_string \"ERC20Snapshot: id is 0\"" + } + ], + "id": 9562, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5902:7:88", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5902:49:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9568, + "nodeType": "ExpressionStatement", + "src": "5902:49:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9570, + "name": "snapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9553, + "src": "6022:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 9571, + "name": "_currentSnapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9396, + "src": "6036:18:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 9572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 12920, + "src": "6036:26:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$12909_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$12909_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 9573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6036:28:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6022:42:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433230536e617073686f743a206e6f6e6578697374656e74206964", + "id": 9575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6066:31:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940", + "typeString": "literal_string \"ERC20Snapshot: nonexistent id\"" + }, + "value": "ERC20Snapshot: nonexistent id" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_031e0835d070e7bbd2c8dcce466eadb8c6b9fd22432b0357ab8c37bd9a385940", + "typeString": "literal_string \"ERC20Snapshot: nonexistent id\"" + } + ], + "id": 9569, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6014:7:88", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6014:84:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9577, + "nodeType": "ExpressionStatement", + "src": "6014:84:88" + }, + { + "assignments": [ + 9579 + ], + "declarations": [ + { + "constant": false, + "id": 9579, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9605, + "src": "7221:13:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7221:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9585, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9583, + "name": "snapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9553, + "src": "7266:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9580, + "name": "snapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9555, + "src": "7237:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots storage pointer" + } + }, + "id": 9581, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "ids", + "nodeType": "MemberAccess", + "referencedDeclaration": 9384, + "src": "7237:13:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 9582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "findUpperBound", + "nodeType": "MemberAccess", + "referencedDeclaration": 12898, + "src": "7237:28:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256) view returns (uint256)" + } + }, + "id": 9584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7237:40:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7221:56:88" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9586, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9579, + "src": "7292:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9587, + "name": "snapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9555, + "src": "7301:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots storage pointer" + } + }, + "id": 9588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "ids", + "nodeType": "MemberAccess", + "referencedDeclaration": 9384, + "src": "7301:13:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 9589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7301:20:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7292:29:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 9603, + "nodeType": "Block", + "src": "7371:63:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 9596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7393:4:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9597, + "name": "snapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9555, + "src": "7399:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots storage pointer" + } + }, + "id": 9598, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9387, + "src": "7399:16:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 9600, + "indexExpression": { + "argumentTypes": null, + "id": 9599, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9579, + "src": "7416:5:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7399:23:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9601, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7392:31:88", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 9561, + "id": 9602, + "nodeType": "Return", + "src": "7385:38:88" + } + ] + }, + "id": 9604, + "nodeType": "IfStatement", + "src": "7288:146:88", + "trueBody": { + "id": 9595, + "nodeType": "Block", + "src": "7323:42:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 9591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7345:5:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 9592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7352:1:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 9593, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7344:10:88", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 9561, + "id": 9594, + "nodeType": "Return", + "src": "7337:17:88" + } + ] + } + } + ] + }, + "documentation": null, + "id": 9606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_valueAt", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9553, + "mutability": "mutable", + "name": "snapshotId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9606, + "src": "5794:18:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5794:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9555, + "mutability": "mutable", + "name": "snapshots", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9606, + "src": "5814:27:88", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots" + }, + "typeName": { + "contractScope": null, + "id": 9554, + "name": "Snapshots", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9388, + "src": "5814:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5793:49:88" + }, + "returnParameters": { + "id": 9561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9558, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9606, + "src": "5873:4:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9557, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5873:4:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9560, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9606, + "src": "5879:7:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5879:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5872:15:88" + }, + "scope": 9695, + "src": "5776:1664:88", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 9620, + "nodeType": "Block", + "src": "7503:87:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9612, + "name": "_accountBalanceSnapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9392, + "src": "7529:24:88", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Snapshots_$9388_storage_$", + "typeString": "mapping(address => struct ERC20Snapshot.Snapshots storage ref)" + } + }, + "id": 9614, + "indexExpression": { + "argumentTypes": null, + "id": 9613, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9608, + "src": "7554:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7529:33:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9616, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9608, + "src": "7574:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9615, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8794, + "src": "7564:9:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 9617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7564:18:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9611, + "name": "_updateSnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9669, + "src": "7513:15:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Snapshots_$9388_storage_ptr_$_t_uint256_$returns$__$", + "typeString": "function (struct ERC20Snapshot.Snapshots storage pointer,uint256)" + } + }, + "id": 9618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7513:70:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9619, + "nodeType": "ExpressionStatement", + "src": "7513:70:88" + } + ] + }, + "documentation": null, + "id": 9621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updateAccountSnapshot", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9608, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9621, + "src": "7478:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7478:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7477:17:88" + }, + "returnParameters": { + "id": 9610, + "nodeType": "ParameterList", + "parameters": [], + "src": "7503:0:88" + }, + "scope": 9695, + "src": "7446:144:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 9630, + "nodeType": "Block", + "src": "7642:70:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9625, + "name": "_totalSupplySnapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9394, + "src": "7668:21:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9626, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8780, + "src": "7691:11:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 9627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7691:13:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage", + "typeString": "struct ERC20Snapshot.Snapshots storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9624, + "name": "_updateSnapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9669, + "src": "7652:15:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Snapshots_$9388_storage_ptr_$_t_uint256_$returns$__$", + "typeString": "function (struct ERC20Snapshot.Snapshots storage pointer,uint256)" + } + }, + "id": 9628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7652:53:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9629, + "nodeType": "ExpressionStatement", + "src": "7652:53:88" + } + ] + }, + "documentation": null, + "id": 9631, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updateTotalSupplySnapshot", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9622, + "nodeType": "ParameterList", + "parameters": [], + "src": "7631:2:88" + }, + "returnParameters": { + "id": 9623, + "nodeType": "ParameterList", + "parameters": [], + "src": "7642:0:88" + }, + "scope": 9695, + "src": "7596:116:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 9668, + "nodeType": "Block", + "src": "7802:225:88", + "statements": [ + { + "assignments": [ + 9639 + ], + "declarations": [ + { + "constant": false, + "id": 9639, + "mutability": "mutable", + "name": "currentId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9668, + "src": "7812:17:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9638, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7812:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9643, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 9640, + "name": "_currentSnapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9396, + "src": "7832:18:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 9641, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 12920, + "src": "7832:26:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$12909_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$12909_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 9642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7832:28:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7812:48:88" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9645, + "name": "snapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "7890:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots storage pointer" + } + }, + "id": 9646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "ids", + "nodeType": "MemberAccess", + "referencedDeclaration": 9384, + "src": "7890:13:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + ], + "id": 9644, + "name": "_lastSnapshotId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9694, + "src": "7874:15:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256[] storage pointer) view returns (uint256)" + } + }, + "id": 9647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7874:30:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 9648, + "name": "currentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9639, + "src": "7907:9:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7874:42:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 9667, + "nodeType": "IfStatement", + "src": "7870:151:88", + "trueBody": { + "id": 9666, + "nodeType": "Block", + "src": "7918:103:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9655, + "name": "currentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9639, + "src": "7951:9:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9650, + "name": "snapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "7932:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots storage pointer" + } + }, + "id": 9653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "ids", + "nodeType": "MemberAccess", + "referencedDeclaration": 9384, + "src": "7932:13:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 9654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7932:18:88", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 9656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7932:29:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9657, + "nodeType": "ExpressionStatement", + "src": "7932:29:88" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9663, + "name": "currentValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9635, + "src": "7997:12:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9658, + "name": "snapshots", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "7975:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots storage pointer" + } + }, + "id": 9661, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9387, + "src": "7975:16:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 9662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7975:21:88", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 9664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7975:35:88", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9665, + "nodeType": "ExpressionStatement", + "src": "7975:35:88" + } + ] + } + } + ] + }, + "documentation": null, + "id": 9669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updateSnapshot", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9633, + "mutability": "mutable", + "name": "snapshots", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9669, + "src": "7743:27:88", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots" + }, + "typeName": { + "contractScope": null, + "id": 9632, + "name": "Snapshots", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9388, + "src": "7743:9:88", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Snapshots_$9388_storage_ptr", + "typeString": "struct ERC20Snapshot.Snapshots" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9635, + "mutability": "mutable", + "name": "currentValue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9669, + "src": "7772:20:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7772:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7742:51:88" + }, + "returnParameters": { + "id": 9637, + "nodeType": "ParameterList", + "parameters": [], + "src": "7802:0:88" + }, + "scope": 9695, + "src": "7718:309:88", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 9693, + "nodeType": "Block", + "src": "8112:127:88", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9677, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9672, + "src": "8126:3:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 9678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8126:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8140:1:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8126:15:88", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 9691, + "nodeType": "Block", + "src": "8182:51:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 9684, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9672, + "src": "8203:3:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 9689, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9685, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9672, + "src": "8207:3:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 9686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8207:10:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 9687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8220:1:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8207:14:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8203:19:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9676, + "id": 9690, + "nodeType": "Return", + "src": "8196:26:88" + } + ] + }, + "id": 9692, + "nodeType": "IfStatement", + "src": "8122:111:88", + "trueBody": { + "id": 9683, + "nodeType": "Block", + "src": "8143:33:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8164:1:88", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 9676, + "id": 9682, + "nodeType": "Return", + "src": "8157:8:88" + } + ] + } + } + ] + }, + "documentation": null, + "id": 9694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_lastSnapshotId", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9672, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9694, + "src": "8058:21:88", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9670, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8058:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9671, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8058:9:88", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8057:23:88" + }, + "returnParameters": { + "id": 9676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9675, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9694, + "src": "8103:7:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8103:7:88", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8102:9:88" + }, + "scope": 9695, + "src": "8033:206:88", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + } + ], + "scope": 9696, + "src": "1829:6412:88" + } + ], + "src": "33:8209:88" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC20SnapshotMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC20SnapshotMock.json new file mode 100644 index 0000000..16cede8 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC20SnapshotMock.json @@ -0,0 +1,1172 @@ +{ + "fileName": "ERC20SnapshotMock.sol", + "contractName": "ERC20SnapshotMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC20/ERC20Snapshot.sol\";\n\n\ncontract ERC20SnapshotMock is ERC20Snapshot {\n constructor(\n string memory name,\n string memory symbol,\n address initialAccount,\n uint256 initialBalance\n ) public ERC20(name, symbol) {\n _mint(initialAccount, initialBalance);\n }\n\n function snapshot() public {\n _snapshot();\n }\n\n function mint(address account, uint256 amount) public {\n _mint(account, amount);\n }\n\n function burn(address account, uint256 amount) public {\n _burn(account, amount);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC20SnapshotMock.sol", + "sourceMap": "103:532:38:-:0;;;153:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;306:4;312:6;2087:4:71;2079:5;:12;;;;;;;;;;;;:::i;:::-;;2111:6;2101:7;:16;;;;;;;;;;;;:::i;:::-;;2139:2;2127:9;;:14;;;;;;;;;;;;;;;;;;2007:141;;330:37:38::1;336:14;352;330:5;;;:37;;:::i;:::-;153:221:::0;;;;103:532;;5370:197:75;5453:31;5476:7;5453:22;;;:31;;:::i;:::-;5494:28;:26;;;:28;;:::i;:::-;5533:27;5545:7;5554:5;5533:11;;;;;:27;;:::i;:::-;5370:197;;:::o;7446:144::-;7513:70;7529:24;:33;7554:7;7529:33;;;;;;;;;;;;;;;7564:18;7574:7;7564:9;;;:18;;:::i;:::-;7513:15;;;:70;;:::i;:::-;7446:144;:::o;7596:116::-;7652:53;7668:21;7691:13;:11;;;:13;;:::i;:::-;7652:15;;;:53;;:::i;:::-;7596:116::o;7829:370:71:-;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;;;:49;;:::i;:::-;8055:24;8072:6;8055:12;;:16;;;;;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;3412:117::-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;7718:309:75:-;7812:17;7832:28;:18;:26;;;;;:28;;:::i;:::-;7812:48;;7907:9;7874:30;7890:9;:13;;7874:15;;;:30;;:::i;:::-;:42;7870:151;;;7932:9;:13;;7951:9;7932:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7975:9;:16;;7997:12;7975:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7870:151;7718:309;;;:::o;3256:98:71:-;3309:7;3335:12;;3328:19;;3256:98;:::o;10691:92::-;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;1098:112:93:-;1163:7;1189;:14;;;1182:21;;1098:112;;;:::o;8033:206:75:-;8103:7;8140:1;8126:3;:10;;;;:15;8122:111;;;8164:1;8157:8;;;;8122:111;8203:3;8220:1;8207:3;:10;;;;:14;8203:19;;;;;;;;;;;;;;;;8196:26;;8033:206;;;;:::o;103:532:38:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "103:532:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3256:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4875:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3115:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5587:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;441:93:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4277:254:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3412:117:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2407:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;380:55:38;;;:::i;:::-;;4630:221:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;540:93:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6289:266:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3732:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3962:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2213:81;2250:13;2282:5;2275:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:81;:::o;4249:166::-;4332:4;4348:39;4357:12;:10;:12::i;:::-;4371:7;4380:6;4348:8;:39::i;:::-;4404:4;4397:11;;4249:166;;;;:::o;3256:98::-;3309:7;3335:12;;3328:19;;3256:98;:::o;4875:317::-;4981:4;4997:36;5007:6;5015:9;5026:6;4997:9;:36::i;:::-;5043:121;5052:6;5060:12;:10;:12::i;:::-;5074:89;5112:6;5074:89;;;;;;;;;;;;;;;;;:11;:19;5086:6;5074:19;;;;;;;;;;;;;;;:33;5094:12;:10;:12::i;:::-;5074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5043:8;:121::i;:::-;5181:4;5174:11;;4875:317;;;;;:::o;3115:81::-;3156:5;3180:9;;;;;;;;;;;3173:16;;3115:81;:::o;5587:215::-;5675:4;5691:83;5700:12;:10;:12::i;:::-;5714:7;5723:50;5762:10;5723:11;:25;5735:12;:10;:12::i;:::-;5723:25;;;;;;;;;;;;;;;:34;5749:7;5723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5691:8;:83::i;:::-;5791:4;5784:11;;5587:215;;;;:::o;441:93:38:-;505:22;511:7;520:6;505:5;:22::i;:::-;441:93;;:::o;4277:254:75:-;4356:7;4376:16;4394:13;4411:55;4420:10;4432:24;:33;4457:7;4432:33;;;;;;;;;;;;;;;4411:8;:55::i;:::-;4375:91;;;;4484:11;:40;;4506:18;4516:7;4506:9;:18::i;:::-;4484:40;;;4498:5;4484:40;4477:47;;;;4277:254;;;;:::o;3412:117:71:-;3478:7;3504:9;:18;3514:7;3504:18;;;;;;;;;;;;;;;;3497:25;;3412:117;;;:::o;2407:85::-;2446:13;2478:7;2471:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:85;:::o;380:55:38:-;417:11;:9;:11::i;:::-;;380:55::o;4630:221:75:-;4693:7;4713:16;4731:13;4748:43;4757:10;4769:21;4748:8;:43::i;:::-;4712:79;;;;4809:11;:35;;4831:13;:11;:13::i;:::-;4809:35;;;4823:5;4809:35;4802:42;;;;4630:221;;;:::o;540:93:38:-;604:22;610:7;619:6;604:5;:22::i;:::-;540:93;;:::o;6289:266:71:-;6382:4;6398:129;6407:12;:10;:12::i;:::-;6421:7;6430:96;6469:15;6430:96;;;;;;;;;;;;;;;;;:11;:25;6442:12;:10;:12::i;:::-;6430:25;;;;;;;;;;;;;;;:34;6456:7;6430:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6398:8;:129::i;:::-;6544:4;6537:11;;6289:266;;;;:::o;3732:172::-;3818:4;3834:42;3844:12;:10;:12::i;:::-;3858:9;3869:6;3834:9;:42::i;:::-;3893:4;3886:11;;3732:172;;;;:::o;3962:149::-;4051:7;4077:11;:18;4089:5;4077:18;;;;;;;;;;;;;;;:27;4096:7;4077:27;;;;;;;;;;;;;;;;4070:34;;3962:149;;;;:::o;7829:370::-;7931:1;7912:21;;:7;:21;;;;7904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:49;8009:1;8013:7;8022:6;7980:20;:49::i;:::-;8055:24;8072:6;8055:12;;:16;;:24;;;;:::i;:::-;8040:12;:39;;;;8110:30;8133:6;8110:9;:18;8120:7;8110:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;:51;;;;8176:7;8155:37;;8172:1;8155:37;;;8185:6;8155:37;;;;;;;;;;;;;;;;;;7829:370;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;1098:112:93:-;1163:7;1189;:14;;;1182:21;;1098:112;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;9353:340:71:-;9471:1;9454:19;;:5;:19;;;;9446:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9551:1;9532:21;;:7;:21;;;;9524:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9633:6;9603:11;:18;9615:5;9603:18;;;;;;;;;;;;;;;:27;9622:7;9603:27;;;;;;;;;;;;;;;:36;;;;9670:7;9654:32;;9663:5;9654:32;;;9679:6;9654:32;;;;;;;;;;;;;;;;;;9353:340;;;:::o;5154:210:75:-;5250:28;5273:4;5250:22;:28::i;:::-;5288:26;5311:2;5288:22;:26::i;:::-;5325:32;5341:4;5347:2;5351:5;5325:15;:32::i;:::-;5154:210;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;5370:197:75:-;5453:31;5476:7;5453:22;:31::i;:::-;5494:28;:26;:28::i;:::-;5533:27;5545:7;5554:5;5533:11;:27::i;:::-;5370:197;;:::o;5776:1664::-;5873:4;5879:7;5923:1;5910:10;:14;5902:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6036:28;:18;:26;:28::i;:::-;6022:10;:42;;6014:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7221:13;7237:40;7266:10;7237:9;:13;;:28;;:40;;;;:::i;:::-;7221:56;;7301:9;:13;;:20;;;;7292:5;:29;7288:146;;;7345:5;7352:1;7337:17;;;;;;;;;;7288:146;7393:4;7399:9;:16;;7416:5;7399:23;;;;;;;;;;;;;;;;7385:38;;;;;5776:1664;;;;;;:::o;3948:222::-;3995:7;4014:30;:18;:28;:30::i;:::-;4055:17;4075:28;:18;:26;:28::i;:::-;4055:48;;4118:19;4127:9;4118:19;;;;;;;;;;;;;;;;;;4154:9;4147:16;;;3948:222;:::o;5573:197::-;5656:31;5679:7;5656:22;:31::i;:::-;5697:28;:26;:28::i;:::-;5736:27;5748:7;5757:5;5736:11;:27::i;:::-;5573:197;;:::o;10691:92:71:-;;;;:::o;7446:144:75:-;7513:70;7529:24;:33;7554:7;7529:33;;;;;;;;;;;;;;;7564:18;7574:7;7564:9;:18::i;:::-;7513:15;:70::i;:::-;7446:144;:::o;7029:530:71:-;7152:1;7134:20;;:6;:20;;;;7126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7235:1;7214:23;;:9;:23;;;;7206:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7288:47;7309:6;7317:9;7328:6;7288:20;:47::i;:::-;7366:71;7388:6;7366:71;;;;;;;;;;;;;;;;;:9;:17;7376:6;7366:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7346:9;:17;7356:6;7346:17;;;;;;;;;;;;;;;:91;;;;7470:32;7495:6;7470:9;:20;7480:9;7470:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7447:9;:20;7457:9;7447:20;;;;;;;;;;;;;;;:55;;;;7534:9;7517:35;;7526:6;7517:35;;;7545:6;7517:35;;;;;;;;;;;;;;;;;;7029:530;;;:::o;7596:116:75:-;7652:53;7668:21;7691:13;:11;:13::i;:::-;7652:15;:53::i;:::-;7596:116::o;582:892:92:-;671:7;710:1;694:5;:12;;;;:17;690:56;;;734:1;727:8;;;;690:56;756:11;770:1;756:15;;781:12;796:5;:12;;;;781:27;;819:414;832:4;826:3;:10;819:414;;;852:11;866:23;879:3;884:4;866:12;:23::i;:::-;852:37;;1119:7;1106:5;1112:3;1106:10;;;;;;;;;;;;;;;;:20;1102:121;;;1153:3;1146:10;;1102:121;;;1207:1;1201:3;:7;1195:13;;1102:121;819:414;;;;1356:1;1350:3;:7;:36;;;;;1379:7;1361:5;1373:1;1367:3;:7;1361:14;;;;;;;;;;;;;;;;:25;1350:36;1346:122;;;1415:1;1409:3;:7;1402:14;;;;;;1346:122;1454:3;1447:10;;;;582:892;;;;;:::o;1216:178:93:-;1386:1;1368:7;:14;;;:19;;;;;;;;;;;1216:178;:::o;8518:410:71:-;8620:1;8601:21;;:7;:21;;;;8593:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:49;8692:7;8709:1;8713:6;8671:20;:49::i;:::-;8752:68;8775:6;8752:68;;;;;;;;;;;;;;;;;:9;:18;8762:7;8752:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8731:9;:18;8741:7;8731:18;;;;;;;;;;;;;;;:89;;;;8845:24;8862:6;8845:12;;:16;;:24;;;;:::i;:::-;8830:12;:39;;;;8910:1;8884:37;;8893:7;8884:37;;;8914:6;8884:37;;;;;;;;;;;;;;;;;;8518:410;;:::o;7718:309:75:-;7812:17;7832:28;:18;:26;:28::i;:::-;7812:48;;7907:9;7874:30;7890:9;:13;;7874:15;:30::i;:::-;:42;7870:151;;;7932:9;:13;;7951:9;7932:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7975:9;:16;;7997:12;7975:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7870:151;7718:309;;;:::o;608:190:17:-;670:7;789:1;784;780;:5;;;;;;776:1;772;:5;;;;;;:13;771:19;;;;;;765:1;761;:5;;;;;;755:1;751;:5;;;;;;750:17;:41;743:48;;608:190;;;;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o;8033:206:75:-;8103:7;8140:1;8126:3;:10;;;;:15;8122:111;;;8164:1;8157:8;;;;8122:111;8203:3;8220:1;8207:3;:10;;;;:14;8203:19;;;;;;;;;;;;;;;;8196:26;;8033:206;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "initialAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialBalance", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Snapshot", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "balanceOfAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "snapshot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "snapshotId", + "type": "uint256" + } + ], + "name": "totalSupplyAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC20SnapshotMock.sol", + "exportedSymbols": { + "ERC20SnapshotMock": [ + 3822 + ] + }, + "id": 3823, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3764, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:38" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Snapshot.sol", + "file": "../token/ERC20/ERC20Snapshot.sol", + "id": 3765, + "nodeType": "ImportDirective", + "scope": 3823, + "sourceUnit": 7892, + "src": "58:42:38", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3766, + "name": "ERC20Snapshot", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7891, + "src": "133:13:38", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Snapshot_$7891", + "typeString": "contract ERC20Snapshot" + } + }, + "id": 3767, + "nodeType": "InheritanceSpecifier", + "src": "133:13:38" + } + ], + "contractDependencies": [ + 26, + 7390, + 7891, + 7969 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3822, + "linearizedBaseContracts": [ + 3822, + 7891, + 7390, + 7969, + 26 + ], + "name": "ERC20SnapshotMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3787, + "nodeType": "Block", + "src": "320:54:38", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3783, + "name": "initialAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3773, + "src": "336:14:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3784, + "name": "initialBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3775, + "src": "352:14:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3782, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7724 + ], + "referencedDeclaration": 7724, + "src": "330:5:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "330:37:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3786, + "nodeType": "ExpressionStatement", + "src": "330:37:38" + } + ] + }, + "documentation": null, + "id": 3788, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3778, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3769, + "src": "306:4:38", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3779, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3771, + "src": "312:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3780, + "modifierName": { + "argumentTypes": null, + "id": 3777, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7390, + "src": "300:5:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$7390_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "300:19:38" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3769, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3788, + "src": "174:18:38", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3768, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "174:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3771, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3788, + "src": "202:20:38", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3770, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "202:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3773, + "mutability": "mutable", + "name": "initialAccount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3788, + "src": "232:22:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "232:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3775, + "mutability": "mutable", + "name": "initialBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3788, + "src": "264:22:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "164:128:38" + }, + "returnParameters": { + "id": 3781, + "nodeType": "ParameterList", + "parameters": [], + "src": "320:0:38" + }, + "scope": 3822, + "src": "153:221:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3794, + "nodeType": "Block", + "src": "407:28:38", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3791, + "name": "_snapshot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7621, + "src": "417:9:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () returns (uint256)" + } + }, + "id": 3792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "417:11:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3793, + "nodeType": "ExpressionStatement", + "src": "417:11:38" + } + ] + }, + "documentation": null, + "functionSelector": "9711715a", + "id": 3795, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "snapshot", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3789, + "nodeType": "ParameterList", + "parameters": [], + "src": "397:2:38" + }, + "returnParameters": { + "id": 3790, + "nodeType": "ParameterList", + "parameters": [], + "src": "407:0:38" + }, + "scope": 3822, + "src": "380:55:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3807, + "nodeType": "Block", + "src": "495:39:38", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3803, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3797, + "src": "511:7:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3804, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3799, + "src": "520:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3802, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7724 + ], + "referencedDeclaration": 7724, + "src": "505:5:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "505:22:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3806, + "nodeType": "ExpressionStatement", + "src": "505:22:38" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 3808, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3797, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3808, + "src": "455:15:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "455:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3799, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3808, + "src": "472:14:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "472:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "454:33:38" + }, + "returnParameters": { + "id": 3801, + "nodeType": "ParameterList", + "parameters": [], + "src": "495:0:38" + }, + "scope": 3822, + "src": "441:93:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3820, + "nodeType": "Block", + "src": "594:39:38", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3816, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3810, + "src": "610:7:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3817, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3812, + "src": "619:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3815, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7747 + ], + "referencedDeclaration": 7747, + "src": "604:5:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:22:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3819, + "nodeType": "ExpressionStatement", + "src": "604:22:38" + } + ] + }, + "documentation": null, + "functionSelector": "9dc29fac", + "id": 3821, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3810, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3821, + "src": "554:15:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3809, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "554:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3812, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3821, + "src": "571:14:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "571:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "553:33:38" + }, + "returnParameters": { + "id": 3814, + "nodeType": "ParameterList", + "parameters": [], + "src": "594:0:38" + }, + "scope": 3822, + "src": "540:93:38", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3823, + "src": "103:532:38" + } + ], + "src": "33:603:38" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200231b3803806200231b833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919050505083838160039080519060200190620001e69291906200069c565b508060049080519060200190620001ff9291906200069c565b506012600560006101000a81548160ff021916908360ff16021790555050506200023082826200023a60201b60201c565b505050506200074b565b6200024b826200027660201b60201c565b6200025b620002d960201b60201c565b620002728282620002fd60201b62000c161760201c565b5050565b620002d6600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020620002ca83620004db60201b60201c565b6200052360201b60201c565b50565b620002fb6007620002ef620005b660201b60201c565b6200052360201b60201c565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620003b560008383620005c060201b60201c565b620003d181600254620005c560201b62000ddd1790919060201c565b6002819055506200042f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005c560201b62000ddd1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006200053c60096200064e60201b62000e651760201c565b90508062000553846000016200065c60201b60201c565b1015620005b15782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000600254905090565b505050565b60008082840190508381101562000644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600081600001549050919050565b6000808280549050141562000675576000905062000697565b816001838054905003815481106200068957fe5b906000526020600020015490505b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006df57805160ff191683800117855562000710565b8280016001018555821562000710579182015b828111156200070f578251825591602001919060010190620006f2565b5b5090506200071f919062000723565b5090565b6200074891905b80821115620007445760008160009055506001016200072a565b5090565b90565b611bc0806200075b6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a08231116100975780639dc29fac116100665780639dc29fac146104f3578063a457c2d714610541578063a9059cbb146105a7578063dd62ed3e1461060d57610100565b806370a08231146103cc57806395d89b41146104245780639711715a146104a7578063981b24d0146104b157610100565b8063313ce567116100d3578063313ce5671461029257806339509351146102b657806340c10f191461031c5780634ee2cd7e1461036a57610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ee57806323b872dd1461020c575b600080fd5b61010d610685565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610727565b604051808215151515815260200191505060405180910390f35b6101f6610745565b6040518082815260200191505060405180910390f35b6102786004803603606081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061074f565b604051808215151515815260200191505060405180910390f35b61029a610828565b604051808260ff1660ff16815260200191505060405180910390f35b610302600480360360408110156102cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b6103686004803603604081101561033257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f2565b005b6103b66004803603604081101561038057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610900565b6040518082815260200191505060405180910390f35b61040e600480360360208110156103e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610970565b6040518082815260200191505060405180910390f35b61042c6109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046c578082015181840152602081019050610451565b50505050905090810190601f1680156104995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104af610a5a565b005b6104dd600480360360208110156104c757600080fd5b8101908080359060200190929190505050610a65565b6040518082815260200191505060405180910390f35b61053f6004803603604081101561050957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a96565b005b61058d6004803603604081101561055757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aa4565b604051808215151515815260200191505060405180910390f35b6105f3600480360360408110156105bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b71565b604051808215151515815260200191505060405180910390f35b61066f6004803603604081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b8f565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561071d5780601f106106f25761010080835404028352916020019161071d565b820191906000526020600020905b81548152906001019060200180831161070057829003601f168201915b5050505050905090565b600061073b610734610e73565b8484610e7b565b6001905092915050565b6000600254905090565b600061075c848484611072565b61081d84610768610e73565b61081885604051806060016040528060288152602001611ad460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ce610e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b610e7b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108e861084c610e73565b846108e3856001600061085d610e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ddd90919063ffffffff16565b610e7b565b6001905092915050565b6108fc8282611154565b5050565b600080600061094d84600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611173565b91509150816109645761095f85610970565b610966565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a505780601f10610a2557610100808354040283529160200191610a50565b820191906000526020600020905b815481529060010190602001808311610a3357829003601f168201915b5050505050905090565b610a626112cd565b50565b6000806000610a75846007611173565b9150915081610a8b57610a86610745565b610a8d565b805b92505050919050565b610aa08282611325565b5050565b6000610b67610ab1610e73565b84610b6285604051806060016040528060258152602001611b666025913960016000610adb610e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b610e7b565b6001905092915050565b6000610b85610b7e610e73565b8484611072565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b610cc560008383611344565b610cda81600254610ddd90919063ffffffff16565b600281905550610d31816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ddd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015610e5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600081600001549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611b426024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611a8c6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b61107b83611349565b61108482611349565b61108f83838361139c565b505050565b6000838311158290611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111065780820151818401526020810190506110eb565b50505050905090810190601f1680156111335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61115d82611349565b61116561165d565b61116f8282610c16565b5050565b600080600084116111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4552433230536e617073686f743a20696420697320300000000000000000000081525060200191505060405180910390fd5b6111f66009610e65565b84111561126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4552433230536e617073686f743a206e6f6e6578697374656e7420696400000081525060200191505060405180910390fd5b6000611283858560000161167190919063ffffffff16565b905083600001805490508114156112a45760008080905092509250506112c6565b60018460010182815481106112b557fe5b906000526020600020015492509250505b9250929050565b60006112d96009611726565b60006112e56009610e65565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67816040518082815260200191505060405180910390a18091505090565b61132e82611349565b61133661165d565b611340828261173c565b5050565b505050565b611399600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061139483610970565b611900565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611b1d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611a476023913960400191505060405180910390fd5b6114b3838383611344565b61151e81604051806060016040528060268152602001611aae602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ddd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b61166f600761166a610745565b611900565b565b600080838054905014156116885760009050611720565b60008090506000848054905090505b808210156116e05760006116ab838361197d565b9050848682815481106116ba57fe5b906000526020600020015411156116d3578091506116da565b6001810192505b50611697565b6000821180156117085750838560018403815481106116fb57fe5b9060005260206000200154145b1561171a576001820392505050611720565b81925050505b92915050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611afc6021913960400191505060405180910390fd5b6117ce82600083611344565b61183981604051806060016040528060228152602001611a6a602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611890816002546119bf90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061190c6009610e65565b90508061191b84600001611a09565b10156119785782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000600280838161198a57fe5b066002858161199557fe5b06018161199e57fe5b04600283816119a957fe5b04600285816119b457fe5b040101905092915050565b6000611a0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611094565b905092915050565b60008082805490501415611a205760009050611a41565b81600183805490500381548110611a3357fe5b906000526020600020015490505b91905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cc9ba1c0c35ee46a64bb8f8de0710969d7c7262fadb547f8be235dd65c82e65764736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c806370a08231116100975780639dc29fac116100665780639dc29fac146104f3578063a457c2d714610541578063a9059cbb146105a7578063dd62ed3e1461060d57610100565b806370a08231146103cc57806395d89b41146104245780639711715a146104a7578063981b24d0146104b157610100565b8063313ce567116100d3578063313ce5671461029257806339509351146102b657806340c10f191461031c5780634ee2cd7e1461036a57610100565b806306fdde0314610105578063095ea7b31461018857806318160ddd146101ee57806323b872dd1461020c575b600080fd5b61010d610685565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014d578082015181840152602081019050610132565b50505050905090810190601f16801561017a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d46004803603604081101561019e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610727565b604051808215151515815260200191505060405180910390f35b6101f6610745565b6040518082815260200191505060405180910390f35b6102786004803603606081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061074f565b604051808215151515815260200191505060405180910390f35b61029a610828565b604051808260ff1660ff16815260200191505060405180910390f35b610302600480360360408110156102cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b6103686004803603604081101561033257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f2565b005b6103b66004803603604081101561038057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610900565b6040518082815260200191505060405180910390f35b61040e600480360360208110156103e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610970565b6040518082815260200191505060405180910390f35b61042c6109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046c578082015181840152602081019050610451565b50505050905090810190601f1680156104995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104af610a5a565b005b6104dd600480360360208110156104c757600080fd5b8101908080359060200190929190505050610a65565b6040518082815260200191505060405180910390f35b61053f6004803603604081101561050957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a96565b005b61058d6004803603604081101561055757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aa4565b604051808215151515815260200191505060405180910390f35b6105f3600480360360408110156105bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b71565b604051808215151515815260200191505060405180910390f35b61066f6004803603604081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b8f565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561071d5780601f106106f25761010080835404028352916020019161071d565b820191906000526020600020905b81548152906001019060200180831161070057829003601f168201915b5050505050905090565b600061073b610734610e73565b8484610e7b565b6001905092915050565b6000600254905090565b600061075c848484611072565b61081d84610768610e73565b61081885604051806060016040528060288152602001611ad460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ce610e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b610e7b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006108e861084c610e73565b846108e3856001600061085d610e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ddd90919063ffffffff16565b610e7b565b6001905092915050565b6108fc8282611154565b5050565b600080600061094d84600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611173565b91509150816109645761095f85610970565b610966565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a505780601f10610a2557610100808354040283529160200191610a50565b820191906000526020600020905b815481529060010190602001808311610a3357829003601f168201915b5050505050905090565b610a626112cd565b50565b6000806000610a75846007611173565b9150915081610a8b57610a86610745565b610a8d565b805b92505050919050565b610aa08282611325565b5050565b6000610b67610ab1610e73565b84610b6285604051806060016040528060258152602001611b666025913960016000610adb610e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b610e7b565b6001905092915050565b6000610b85610b7e610e73565b8484611072565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b610cc560008383611344565b610cda81600254610ddd90919063ffffffff16565b600281905550610d31816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ddd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015610e5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600081600001549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611b426024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611a8c6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b61107b83611349565b61108482611349565b61108f83838361139c565b505050565b6000838311158290611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111065780820151818401526020810190506110eb565b50505050905090810190601f1680156111335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61115d82611349565b61116561165d565b61116f8282610c16565b5050565b600080600084116111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4552433230536e617073686f743a20696420697320300000000000000000000081525060200191505060405180910390fd5b6111f66009610e65565b84111561126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4552433230536e617073686f743a206e6f6e6578697374656e7420696400000081525060200191505060405180910390fd5b6000611283858560000161167190919063ffffffff16565b905083600001805490508114156112a45760008080905092509250506112c6565b60018460010182815481106112b557fe5b906000526020600020015492509250505b9250929050565b60006112d96009611726565b60006112e56009610e65565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67816040518082815260200191505060405180910390a18091505090565b61132e82611349565b61133661165d565b611340828261173c565b5050565b505050565b611399600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061139483610970565b611900565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611b1d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611a476023913960400191505060405180910390fd5b6114b3838383611344565b61151e81604051806060016040528060268152602001611aae602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ddd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b61166f600761166a610745565b611900565b565b600080838054905014156116885760009050611720565b60008090506000848054905090505b808210156116e05760006116ab838361197d565b9050848682815481106116ba57fe5b906000526020600020015411156116d3578091506116da565b6001810192505b50611697565b6000821180156117085750838560018403815481106116fb57fe5b9060005260206000200154145b1561171a576001820392505050611720565b81925050505b92915050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611afc6021913960400191505060405180910390fd5b6117ce82600083611344565b61183981604051806060016040528060228152602001611a6a602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110949092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611890816002546119bf90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061190c6009610e65565b90508061191b84600001611a09565b10156119785782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000600280838161198a57fe5b066002858161199557fe5b06018161199e57fe5b04600283816119a957fe5b04600285816119b457fe5b040101905092915050565b6000611a0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611094565b905092915050565b60008082805490501415611a205760009050611a41565b81600183805490500381548110611a3357fe5b906000526020600020015490505b91905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cc9ba1c0c35ee46a64bb8f8de0710969d7c7262fadb547f8be235dd65c82e65764736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721.json new file mode 100644 index 0000000..d1bbb3b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721.json @@ -0,0 +1,12886 @@ +{ + "fileName": "ERC721.sol", + "contractName": "ERC721", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/EnumerableSet.sol\";\nimport \"../../utils/EnumerableMap.sol\";\nimport \"../../utils/Strings.sol\";\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic implementation\n * @dev see https://eips.ethereum.org/EIPS/eip-721\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {\n using SafeMath for uint256;\n using Address for address;\n using EnumerableSet for EnumerableSet.UintSet;\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n using Strings for uint256;\n\n // Equals to `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`\n bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;\n\n // Mapping from holder address to their (enumerable) set of owned tokens\n mapping (address => EnumerableSet.UintSet) private _holderTokens;\n\n // Enumerable mapping from token ids to their owners\n EnumerableMap.UintToAddressMap private _tokenOwners;\n\n // Mapping from token ID to approved address\n mapping (uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping (address => mapping (address => bool)) private _operatorApprovals;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n // Base URI\n string private _baseURI;\n\n /*\n * bytes4(keccak256('balanceOf(address)')) == 0x70a08231\n * bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e\n * bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3\n * bytes4(keccak256('getApproved(uint256)')) == 0x081812fc\n * bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n * bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n * bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd\n * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e\n * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde\n *\n * => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^\n * 0xa22cb465 ^ 0xe985e9c ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd\n */\n bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;\n\n /*\n * bytes4(keccak256('name()')) == 0x06fdde03\n * bytes4(keccak256('symbol()')) == 0x95d89b41\n * bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd\n *\n * => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f\n */\n bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;\n\n /*\n * bytes4(keccak256('totalSupply()')) == 0x18160ddd\n * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59\n * bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7\n *\n * => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63\n */\n bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor (string memory name, string memory symbol) public {\n _name = name;\n _symbol = symbol;\n\n // register the supported interfaces to conform to ERC721 via ERC165\n _registerInterface(_INTERFACE_ID_ERC721);\n _registerInterface(_INTERFACE_ID_ERC721_METADATA);\n _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view override returns (uint256) {\n require(owner != address(0), \"ERC721: balance query for the zero address\");\n\n return _holderTokens[owner].length();\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view override returns (address) {\n return _tokenOwners.get(tokenId, \"ERC721: owner query for nonexistent token\");\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view override returns (string memory) {\n require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n string memory _tokenURI = _tokenURIs[tokenId];\n\n // If there is no base URI, return the token URI.\n if (bytes(_baseURI).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(_baseURI, _tokenURI));\n }\n // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.\n return string(abi.encodePacked(_baseURI, tokenId.toString()));\n }\n\n /**\n * @dev Returns the base URI set via {_setBaseURI}. This will be\n * automatically added as a prefix in {tokenURI} to each token's URI, or\n * to the token ID if no specific URI is set for that token ID.\n */\n function baseURI() public view returns (string memory) {\n return _baseURI;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {\n return _holderTokens[owner].at(index);\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds\n return _tokenOwners.length();\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view override returns (uint256) {\n (uint256 tokenId, ) = _tokenOwners.at(index);\n return tokenId;\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view override returns (address) {\n require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n require(operator != _msgSender(), \"ERC721: approve to caller\");\n\n _operatorApprovals[_msgSender()][operator] = approved;\n emit ApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n _safeTransfer(from, to, tokenId, _data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mecanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view returns (bool) {\n return _tokenOwners.contains(tokenId);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {\n require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n address owner = ownerOf(tokenId);\n return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n d*\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {\n _mint(to, tokenId);\n require(_checkOnERC721Received(address(0), to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _holderTokens[to].add(tokenId);\n\n _tokenOwners.set(tokenId, to);\n\n emit Transfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n // Clear metadata (if any)\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n\n _holderTokens[owner].remove(tokenId);\n\n _tokenOwners.remove(tokenId);\n\n emit Transfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\n require(ownerOf(tokenId) == from, \"ERC721: transfer of token that is not own\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _holderTokens[from].remove(tokenId);\n _holderTokens[to].add(tokenId);\n\n _tokenOwners.set(tokenId, to);\n\n emit Transfer(from, to, tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n require(_exists(tokenId), \"ERC721Metadata: URI set of nonexistent token\");\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev Internal function to set the base URI for all token IDs. It is\n * automatically added as a prefix to the value returned in {tokenURI},\n * or to the token ID if {tokenURI} is empty.\n */\n function _setBaseURI(string memory baseURI_) internal virtual {\n _baseURI = baseURI_;\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param _data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)\n private returns (bool)\n {\n if (!to.isContract()) {\n return true;\n }\n bytes memory returndata = to.functionCall(abi.encodeWithSelector(\n IERC721Receiver(to).onERC721Received.selector,\n _msgSender(),\n from,\n tokenId,\n _data\n ), \"ERC721: transfer to non ERC721Receiver implementer\");\n bytes4 retval = abi.decode(returndata, (bytes4));\n return (retval == _ERC721_RECEIVED);\n }\n\n function _approve(address to, uint256 tokenId) private {\n _tokenApprovals[tokenId] = to;\n emit Approval(ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721.sol", + "sourceMap": "561:16178:92:-:0;;;3565:365;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:40:10;418:10;770:20;;751:18;;;:40;;:::i;:::-;3645:4:92;3637:5;:12;;;;;;;;;;;;:::i;:::-;;3669:6;3659:7;:16;;;;;;;;;;;;:::i;:::-;;3763:40;2730:10;3782:20;;3763:18;;;:40;;:::i;:::-;3813:49;3062:10;3832:29;;3813:18;;;:49;;:::i;:::-;3872:51;3435:10;3891:31;;3872:18;;;:51;;:::i;:::-;3565:365;;561:16178;;1482:198:10;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;561:16178:92:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "561:16178:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4486:90:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6651:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6161:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7941:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5938:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8307:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6433:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4257:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5772:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3989:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4640:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7369:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8522:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4800:740;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7725:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;948:140:10;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;4486:90:92:-;4532:13;4564:5;4557:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:90;:::o;7093:209::-;7161:7;7188:16;7196:7;7188;:16::i;:::-;7180:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7271:15;:24;7287:7;7271:24;;;;;;;;;;;;;;;;;;;;;7264:31;;7093:209;;;:::o;6651:381::-;6731:13;6747:16;6755:7;6747;:16::i;:::-;6731:32;;6787:5;6781:11;;:2;:11;;;;6773:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6865:5;6849:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;6874:37;6891:5;6898:12;:10;:12::i;:::-;6874:16;:37::i;:::-;6849:62;6841:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7004:21;7013:2;7017:7;7004:8;:21::i;:::-;6651:381;;;:::o;6161:200::-;6214:7;6333:21;:12;:19;:21::i;:::-;6326:28;;6161:200;:::o;7941:300::-;8100:41;8119:12;:10;:12::i;:::-;8133:7;8100:18;:41::i;:::-;8092:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:28;8216:4;8222:2;8226:7;8206:9;:28::i;:::-;7941:300;;;:::o;5938:152::-;6027:7;6053:30;6077:5;6053:13;:20;6067:5;6053:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6046:37;;5938:152;;;;:::o;8307:149::-;8410:39;8427:4;8433:2;8437:7;8410:39;;;;;;;;;;;;:16;:39::i;:::-;8307:149;;;:::o;6433:161::-;6500:7;6520:15;6541:22;6557:5;6541:12;:15;;:22;;;;:::i;:::-;6519:44;;;6580:7;6573:14;;;6433:161;;;:::o;4257:167::-;4321:7;4347:70;4364:7;4347:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4340:77;;4257:167;;;:::o;5772:87::-;5812:13;5844:8;5837:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5772:87;:::o;3989:211::-;4053:7;4097:1;4080:19;;:5;:19;;;;4072:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4164:29;:13;:20;4178:5;4164:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4157:36;;3989:211;;;:::o;4640:94::-;4688:13;4720:7;4713:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4640:94;:::o;7369:290::-;7483:12;:10;:12::i;:::-;7471:24;;:8;:24;;;;7463:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:8;7536:18;:32;7555:12;:10;:12::i;:::-;7536:32;;;;;;;;;;;;;;;:42;7569:8;7536:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7633:8;7604:48;;7619:12;:10;:12::i;:::-;7604:48;;;7643:8;7604:48;;;;;;;;;;;;;;;;;;;;;;7369:290;;:::o;8522:282::-;8653:41;8672:12;:10;:12::i;:::-;8686:7;8653:18;:41::i;:::-;8645:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8758:39;8772:4;8778:2;8782:7;8791:5;8758:13;:39::i;:::-;8522:282;;;;:::o;4800:740::-;4865:13;4898:16;4906:7;4898;:16::i;:::-;4890:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4977:23;5003:10;:19;5014:7;5003:19;;;;;;;;;;;4977:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5121:1;5101:8;5095:22;;;;;;;;;;;;;;;;:27;5091:74;;;5145:9;5138:16;;;;;5091:74;5293:1;5273:9;5267:23;:27;5263:110;;;5341:8;5351:9;5324:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:52;;;;;5263:110;5503:8;5513:18;:7;:16;:18::i;:::-;5486:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5472:61;;;4800:740;;;;:::o;7725:154::-;7814:4;7837:18;:25;7856:5;7837:25;;;;;;;;;;;;;;;:35;7863:8;7837:35;;;;;;;;;;;;;;;;;;;;;;;;;7830:42;;7725:154;;;;:::o;10237:117::-;10294:4;10317:30;10339:7;10317:12;:21;;:30;;;;:::i;:::-;10310:37;;10237:117;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;15893:155:92:-;15985:2;15958:15;:24;15974:7;15958:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16033:7;16029:2;16002:39;;16011:16;16019:7;16011;:16::i;:::-;16002:39;;;;;;;;;;;;15893:155;;:::o;7023:121:108:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;10512:329:92:-;10597:4;10621:16;10629:7;10621;:16::i;:::-;10613:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10696:13;10712:16;10720:7;10712;:16::i;:::-;10696:32;;10757:5;10746:16;;:7;:16;;;:51;;;;10790:7;10766:31;;:20;10778:7;10766:11;:20::i;:::-;:31;;;10746:51;:87;;;;10801:32;10818:5;10825:7;10801:16;:32::i;:::-;10746:87;10738:96;;;10512:329;;;;:::o;13506:559::-;13623:4;13603:24;;:16;13611:7;13603;:16::i;:::-;:24;;;13595:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13705:1;13691:16;;:2;:16;;;;13683:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13759:39;13780:4;13786:2;13790:7;13759:20;:39::i;:::-;13860:29;13877:1;13881:7;13860:8;:29::i;:::-;13900:35;13927:7;13900:13;:19;13914:4;13900:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;13945:30;13967:7;13945:13;:17;13959:2;13945:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;13986:29;14003:7;14012:2;13986:12;:16;;:29;;;;;:::i;:::-;;14050:7;14046:2;14031:27;;14040:4;14031:27;;;;;;;;;;;;13506:559;;;:::o;7649:135:109:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7472:224:108:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:109:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;9665:269:92:-;9778:28;9788:4;9794:2;9798:7;9778:9;:28::i;:::-;9824:48;9847:4;9853:2;9857:7;9866:5;9824:22;:48::i;:::-;9816:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9665:269;;;;:::o;202:723:113:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;6791:149:108:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;16644:93:92:-;;;;:::o;6764:135:109:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:108:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:109:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;4934:274:108:-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:109:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;15298:589:92:-;15418:4;15443:15;:2;:13;;;:15::i;:::-;15438:58;;15481:4;15474:11;;;;15438:58;15505:23;15531:246;15583:45;;;15642:12;:10;:12::i;:::-;15668:4;15686:7;15707:5;15547:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15531:246;;;;;;;;;;;;;;;;;:2;:15;;;;:246;;;;;:::i;:::-;15505:272;;15787:13;15814:10;15803:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15787:48;;1068:10;15863:16;;15853:26;;;:6;:26;;;;15845:35;;;;15298:589;;;;;;;:::o;4270:123:108:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:109:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:108:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;718:610:104:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3770:194::-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;3776:127:109:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;5117:958:104:-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:958;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "exportedSymbols": { + "ERC721": [ + 11025 + ] + }, + "id": 11026, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10096, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:92" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 10097, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 23, + "src": "58:31:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 10098, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 11236, + "src": "90:23:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 10099, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 11294, + "src": "114:31:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 10100, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 11267, + "src": "146:33:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 10101, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 11312, + "src": "180:31:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 10102, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 1803, + "src": "212:40:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 10103, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 2422, + "src": "253:33:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 10104, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 12815, + "src": "287:33:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/EnumerableSet.sol", + "file": "../../utils/EnumerableSet.sol", + "id": 10105, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 13908, + "src": "321:39:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/EnumerableMap.sol", + "file": "../../utils/EnumerableMap.sol", + "id": 10106, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 13513, + "src": "361:39:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Strings.sol", + "file": "../../utils/Strings.sol", + "id": 10107, + "nodeType": "ImportDirective", + "scope": 11026, + "sourceUnit": 14438, + "src": "401:33:92", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10109, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "580:7:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 10110, + "nodeType": "InheritanceSpecifier", + "src": "580:7:92" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10111, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1802, + "src": "589:6:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$1802", + "typeString": "contract ERC165" + } + }, + "id": 10112, + "nodeType": "InheritanceSpecifier", + "src": "589:6:92" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10113, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11235, + "src": "597:7:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$11235", + "typeString": "contract IERC721" + } + }, + "id": 10114, + "nodeType": "InheritanceSpecifier", + "src": "597:7:92" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10115, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11293, + "src": "606:15:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$11293", + "typeString": "contract IERC721Metadata" + } + }, + "id": 10116, + "nodeType": "InheritanceSpecifier", + "src": "606:15:92" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 10117, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11266, + "src": "623:17:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$11266", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 10118, + "nodeType": "InheritanceSpecifier", + "src": "623:17:92" + } + ], + "contractDependencies": [ + 22, + 1802, + 2048, + 11235, + 11266, + 11293 + ], + "contractKind": "contract", + "documentation": { + "id": 10108, + "nodeType": "StructuredDocumentation", + "src": "436:124:92", + "text": " @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": true, + "id": 11025, + "linearizedBaseContracts": [ + 11025, + 11266, + 11293, + 11235, + 1802, + 2048, + 22 + ], + "name": "ERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 10121, + "libraryName": { + "contractScope": null, + "id": 10119, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "653:8:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "647:27:92", + "typeName": { + "id": 10120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "666:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 10124, + "libraryName": { + "contractScope": null, + "id": 10122, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "685:7:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "679:26:92", + "typeName": { + "id": 10123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "id": 10127, + "libraryName": { + "contractScope": null, + "id": 10125, + "name": "EnumerableSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13907, + "src": "716:13:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableSet_$13907", + "typeString": "library EnumerableSet" + } + }, + "nodeType": "UsingForDirective", + "src": "710:46:92", + "typeName": { + "contractScope": null, + "id": 10126, + "name": "EnumerableSet.UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "734:21:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + { + "id": 10130, + "libraryName": { + "contractScope": null, + "id": 10128, + "name": "EnumerableMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13512, + "src": "767:13:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableMap_$13512", + "typeString": "library EnumerableMap" + } + }, + "nodeType": "UsingForDirective", + "src": "761:55:92", + "typeName": { + "contractScope": null, + "id": 10129, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "785:30:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + } + }, + { + "id": 10133, + "libraryName": { + "contractScope": null, + "id": 10131, + "name": "Strings", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 14437, + "src": "827:7:92", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Strings_$14437", + "typeString": "library Strings" + } + }, + "nodeType": "UsingForDirective", + "src": "821:26:92", + "typeName": { + "id": 10132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "839:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 10136, + "mutability": "constant", + "name": "_ERC721_RECEIVED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1025:53:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 10134, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1025:6:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783135306237613032", + "id": 10135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1068:10:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_353073666_by_1", + "typeString": "int_const 353073666" + }, + "value": "0x150b7a02" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 10140, + "mutability": "mutable", + "name": "_holderTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1162:64:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet)" + }, + "typeName": { + "id": 10139, + "keyType": { + "id": 10137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1171:7:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1162:42:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet)" + }, + "valueType": { + "contractScope": null, + "id": 10138, + "name": "EnumerableSet.UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "1182:21:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10142, + "mutability": "mutable", + "name": "_tokenOwners", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1290:51:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 10141, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "1290:30:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10146, + "mutability": "mutable", + "name": "_tokenApprovals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1397:52:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 10145, + "keyType": { + "id": 10143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1406:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1397:28:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 10144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1417:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10152, + "mutability": "mutable", + "name": "_operatorApprovals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1504:73:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 10151, + "keyType": { + "id": 10147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1513:7:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1504:46:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 10150, + "keyType": { + "id": 10148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1533:7:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1524:25:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 10149, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1544:4:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10154, + "mutability": "mutable", + "name": "_name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1602:20:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 10153, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1602:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10156, + "mutability": "mutable", + "name": "_symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1649:22:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 10155, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1649:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10160, + "mutability": "mutable", + "name": "_tokenURIs", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1717:45:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 10159, + "keyType": { + "id": 10157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1725:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1717:26:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 10158, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1736:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 10162, + "mutability": "mutable", + "name": "_baseURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "1785:23:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 10161, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1785:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 10165, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC721", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "2683:57:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 10163, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2683:6:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783830616335386364", + "id": 10164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2730:10:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2158778573_by_1", + "typeString": "int_const 2158778573" + }, + "value": "0x80ac58cd" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 10168, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "3006:66:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 10166, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3006:6:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783562356531333966", + "id": 10167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3062:10:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 10171, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11025, + "src": "3377:68:92", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 10169, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3377:6:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783738306539643633", + "id": 10170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3435:10:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2014223715_by_1", + "typeString": "int_const 2014223715" + }, + "value": "0x780e9d63" + }, + "visibility": "private" + }, + { + "body": { + "id": 10199, + "nodeType": "Block", + "src": "3627:303:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10179, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10154, + "src": "3637:5:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10180, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10174, + "src": "3645:4:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3637:12:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 10182, + "nodeType": "ExpressionStatement", + "src": "3637:12:92" + }, + { + "expression": { + "argumentTypes": null, + "id": 10185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10183, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10156, + "src": "3659:7:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10184, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10176, + "src": "3669:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3659:16:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 10186, + "nodeType": "ExpressionStatement", + "src": "3659:16:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10188, + "name": "_INTERFACE_ID_ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10165, + "src": "3782:20:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 10187, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "3763:18:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 10189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3763:40:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10190, + "nodeType": "ExpressionStatement", + "src": "3763:40:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10192, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10168, + "src": "3832:29:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 10191, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "3813:18:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 10193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3813:49:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10194, + "nodeType": "ExpressionStatement", + "src": "3813:49:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10196, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10171, + "src": "3891:31:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 10195, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "3872:18:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 10197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3872:51:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10198, + "nodeType": "ExpressionStatement", + "src": "3872:51:92" + } + ] + }, + "documentation": { + "id": 10172, + "nodeType": "StructuredDocumentation", + "src": "3452:108:92", + "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." + }, + "id": 10200, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10174, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10200, + "src": "3578:18:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10173, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3578:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10176, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10200, + "src": "3598:20:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10175, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3598:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3577:42:92" + }, + "returnParameters": { + "id": 10178, + "nodeType": "ParameterList", + "parameters": [], + "src": "3627:0:92" + }, + "scope": 11025, + "src": "3565:365:92", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11160 + ], + "body": { + "id": 10225, + "nodeType": "Block", + "src": "4062:138:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10210, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10203, + "src": "4080:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4097:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4089:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4089:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4089:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4080:19:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", + "id": 10216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4101:44:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", + "typeString": "literal_string \"ERC721: balance query for the zero address\"" + }, + "value": "ERC721: balance query for the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", + "typeString": "literal_string \"ERC721: balance query for the zero address\"" + } + ], + "id": 10209, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4072:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4072:74:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10218, + "nodeType": "ExpressionStatement", + "src": "4072:74:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10219, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10140, + "src": "4164:13:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 10221, + "indexExpression": { + "argumentTypes": null, + "id": 10220, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10203, + "src": "4178:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4164:20:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 10222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 13886, + "src": "4164:27:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$13812_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$13812_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)" + } + }, + "id": 10223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4164:29:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10208, + "id": 10224, + "nodeType": "Return", + "src": "4157:36:92" + } + ] + }, + "documentation": { + "id": 10201, + "nodeType": "StructuredDocumentation", + "src": "3936:48:92", + "text": " @dev See {IERC721-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 10226, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10205, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4035:8:92" + }, + "parameters": { + "id": 10204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10203, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10226, + "src": "4008:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4008:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4007:15:92" + }, + "returnParameters": { + "id": 10208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10207, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10226, + "src": "4053:7:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4053:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4052:9:92" + }, + "scope": 11025, + "src": "3989:211:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11168 + ], + "body": { + "id": 10241, + "nodeType": "Block", + "src": "4330:94:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10237, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10229, + "src": "4364:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 10238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4373:43:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", + "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" + }, + "value": "ERC721: owner query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", + "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 10235, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "4347:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10236, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 13511, + "src": "4347:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$13337_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)" + } + }, + "id": 10239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4347:70:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10234, + "id": 10240, + "nodeType": "Return", + "src": "4340:77:92" + } + ] + }, + "documentation": { + "id": 10227, + "nodeType": "StructuredDocumentation", + "src": "4206:46:92", + "text": " @dev See {IERC721-ownerOf}." + }, + "functionSelector": "6352211e", + "id": 10242, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10231, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4303:8:92" + }, + "parameters": { + "id": 10230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10229, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10242, + "src": "4274:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4274:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4273:17:92" + }, + "returnParameters": { + "id": 10234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10233, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10242, + "src": "4321:7:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4321:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4320:9:92" + }, + "scope": 11025, + "src": "4257:167:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11278 + ], + "body": { + "id": 10251, + "nodeType": "Block", + "src": "4547:29:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10249, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10154, + "src": "4564:5:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 10248, + "id": 10250, + "nodeType": "Return", + "src": "4557:12:92" + } + ] + }, + "documentation": { + "id": 10243, + "nodeType": "StructuredDocumentation", + "src": "4430:51:92", + "text": " @dev See {IERC721Metadata-name}." + }, + "functionSelector": "06fdde03", + "id": 10252, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10245, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4514:8:92" + }, + "parameters": { + "id": 10244, + "nodeType": "ParameterList", + "parameters": [], + "src": "4499:2:92" + }, + "returnParameters": { + "id": 10248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10247, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10252, + "src": "4532:13:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10246, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4532:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4531:15:92" + }, + "scope": 11025, + "src": "4486:90:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11284 + ], + "body": { + "id": 10261, + "nodeType": "Block", + "src": "4703:31:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10259, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10156, + "src": "4720:7:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 10258, + "id": 10260, + "nodeType": "Return", + "src": "4713:14:92" + } + ] + }, + "documentation": { + "id": 10253, + "nodeType": "StructuredDocumentation", + "src": "4582:53:92", + "text": " @dev See {IERC721Metadata-symbol}." + }, + "functionSelector": "95d89b41", + "id": 10262, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10255, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4670:8:92" + }, + "parameters": { + "id": 10254, + "nodeType": "ParameterList", + "parameters": [], + "src": "4655:2:92" + }, + "returnParameters": { + "id": 10258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10257, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10262, + "src": "4688:13:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10256, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4688:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4687:15:92" + }, + "scope": 11025, + "src": "4640:94:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11292 + ], + "body": { + "id": 10324, + "nodeType": "Block", + "src": "4880:660:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10273, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10265, + "src": "4906:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10272, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10618, + "src": "4898:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 10274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4898:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 10275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4916:49:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", + "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" + }, + "value": "ERC721Metadata: URI query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", + "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" + } + ], + "id": 10271, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4890:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4890:76:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10277, + "nodeType": "ExpressionStatement", + "src": "4890:76:92" + }, + { + "assignments": [ + 10279 + ], + "declarations": [ + { + "constant": false, + "id": 10279, + "mutability": "mutable", + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10324, + "src": "4977:23:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10278, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4977:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10283, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10280, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10160, + "src": "5003:10:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 10282, + "indexExpression": { + "argumentTypes": null, + "id": 10281, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10265, + "src": "5014:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5003:19:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4977:45:92" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10286, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10162, + "src": "5101:8:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 10285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5095:5:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 10284, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5095:5:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5095:15:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 10288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5095:22:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 10289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5121:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5095:27:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 10294, + "nodeType": "IfStatement", + "src": "5091:74:92", + "trueBody": { + "id": 10293, + "nodeType": "Block", + "src": "5124:41:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10291, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10279, + "src": "5145:9:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 10270, + "id": 10292, + "nodeType": "Return", + "src": "5138:16:92" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10297, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10279, + "src": "5273:9:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 10296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5267:5:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 10295, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5267:5:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5267:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 10299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5267:23:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 10300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5293:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5267:27:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 10312, + "nodeType": "IfStatement", + "src": "5263:110:92", + "trueBody": { + "id": 10311, + "nodeType": "Block", + "src": "5296:77:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10306, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10162, + "src": "5341:8:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + { + "argumentTypes": null, + "id": 10307, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10279, + "src": "5351:9:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 10304, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5324:3:92", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5324:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 10308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5324:37:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5317:6:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 10302, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5317:6:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5317:45:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 10270, + "id": 10310, + "nodeType": "Return", + "src": "5310:52:92" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10317, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10162, + "src": "5503:8:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 10318, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10265, + "src": "5513:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toString", + "nodeType": "MemberAccess", + "referencedDeclaration": 14436, + "src": "5513:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 10320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5513:18:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 10315, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5486:3:92", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5486:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 10321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5486:46:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5479:6:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 10313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5479:6:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5479:54:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 10270, + "id": 10323, + "nodeType": "Return", + "src": "5472:61:92" + } + ] + }, + "documentation": { + "id": 10263, + "nodeType": "StructuredDocumentation", + "src": "4740:55:92", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 10325, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10267, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4847:8:92" + }, + "parameters": { + "id": 10266, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10265, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10325, + "src": "4818:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4818:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4817:17:92" + }, + "returnParameters": { + "id": 10270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10269, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10325, + "src": "4865:13:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10268, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4865:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4864:15:92" + }, + "scope": 11025, + "src": "4800:740:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10333, + "nodeType": "Block", + "src": "5827:32:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10331, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10162, + "src": "5844:8:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 10330, + "id": 10332, + "nodeType": "Return", + "src": "5837:15:92" + } + ] + }, + "documentation": { + "id": 10326, + "nodeType": "StructuredDocumentation", + "src": "5546:221:92", + "text": " @dev Returns the base URI set via {_setBaseURI}. This will be\n automatically added as a prefix in {tokenURI} to each token's URI, or\n to the token ID if no specific URI is set for that token ID." + }, + "functionSelector": "6c0360eb", + "id": 10334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "baseURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10327, + "nodeType": "ParameterList", + "parameters": [], + "src": "5788:2:92" + }, + "returnParameters": { + "id": 10330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10329, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10334, + "src": "5812:13:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10328, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5812:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5811:15:92" + }, + "scope": 11025, + "src": "5772:87:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11257 + ], + "body": { + "id": 10352, + "nodeType": "Block", + "src": "6036:54:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10349, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10339, + "src": "6077:5:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10345, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10140, + "src": "6053:13:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 10347, + "indexExpression": { + "argumentTypes": null, + "id": 10346, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10337, + "src": "6067:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6053:20:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 10348, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 13906, + "src": "6053:23:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$13812_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$13812_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)" + } + }, + "id": 10350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6053:30:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10344, + "id": 10351, + "nodeType": "Return", + "src": "6046:37:92" + } + ] + }, + "documentation": { + "id": 10335, + "nodeType": "StructuredDocumentation", + "src": "5865:68:92", + "text": " @dev See {IERC721Enumerable-tokenOfOwnerByIndex}." + }, + "functionSelector": "2f745c59", + "id": 10353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10341, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6009:8:92" + }, + "parameters": { + "id": 10340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10337, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10353, + "src": "5967:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5967:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10339, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10353, + "src": "5982:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5982:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5966:30:92" + }, + "returnParameters": { + "id": 10344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10343, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10353, + "src": "6027:7:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10342, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6027:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6026:9:92" + }, + "scope": 11025, + "src": "5938:152:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11247 + ], + "body": { + "id": 10364, + "nodeType": "Block", + "src": "6223:138:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 10360, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "6333:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 13420, + "src": "6333:19:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$13337_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)" + } + }, + "id": 10362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6333:21:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10359, + "id": 10363, + "nodeType": "Return", + "src": "6326:28:92" + } + ] + }, + "documentation": { + "id": 10354, + "nodeType": "StructuredDocumentation", + "src": "6096:60:92", + "text": " @dev See {IERC721Enumerable-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 10365, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10356, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6196:8:92" + }, + "parameters": { + "id": 10355, + "nodeType": "ParameterList", + "parameters": [], + "src": "6181:2:92" + }, + "returnParameters": { + "id": 10359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10358, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10365, + "src": "6214:7:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6214:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6213:9:92" + }, + "scope": 11025, + "src": "6161:200:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11265 + ], + "body": { + "id": 10383, + "nodeType": "Block", + "src": "6509:85:92", + "statements": [ + { + "assignments": [ + 10375, + null + ], + "declarations": [ + { + "constant": false, + "id": 10375, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10383, + "src": "6520:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6520:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 10380, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10378, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10368, + "src": "6557:5:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 10376, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "6541:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 13456, + "src": "6541:15:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$13337_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)" + } + }, + "id": 10379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6541:22:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$", + "typeString": "tuple(uint256,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6519:44:92" + }, + { + "expression": { + "argumentTypes": null, + "id": 10381, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10375, + "src": "6580:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10373, + "id": 10382, + "nodeType": "Return", + "src": "6573:14:92" + } + ] + }, + "documentation": { + "id": 10366, + "nodeType": "StructuredDocumentation", + "src": "6367:61:92", + "text": " @dev See {IERC721Enumerable-tokenByIndex}." + }, + "functionSelector": "4f6ccce7", + "id": 10384, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10370, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6482:8:92" + }, + "parameters": { + "id": 10369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10368, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10384, + "src": "6455:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6455:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6454:15:92" + }, + "returnParameters": { + "id": 10373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10372, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10384, + "src": "6500:7:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6500:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6499:9:92" + }, + "scope": 11025, + "src": "6433:161:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11196 + ], + "body": { + "id": 10425, + "nodeType": "Block", + "src": "6721:311:92", + "statements": [ + { + "assignments": [ + 10394 + ], + "declarations": [ + { + "constant": false, + "id": 10394, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10425, + "src": "6731:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6731:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10398, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10396, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "6755:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10395, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10242, + "src": "6747:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 10397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6747:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6731:32:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10400, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10387, + "src": "6781:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 10401, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10394, + "src": "6787:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6781:11:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", + "id": 10403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6794:35:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", + "typeString": "literal_string \"ERC721: approval to current owner\"" + }, + "value": "ERC721: approval to current owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", + "typeString": "literal_string \"ERC721: approval to current owner\"" + } + ], + "id": 10399, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6773:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6773:57:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10405, + "nodeType": "ExpressionStatement", + "src": "6773:57:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10407, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6849:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6849:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 10409, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10394, + "src": "6865:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6849:21:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10412, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10394, + "src": "6891:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10413, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6898:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6898:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 10411, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10499, + "src": "6874:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 10415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6874:37:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6849:62:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c", + "id": 10417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6925:58:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", + "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" + }, + "value": "ERC721: approve caller is not owner nor approved for all" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", + "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" + } + ], + "id": 10406, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6841:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6841:152:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10419, + "nodeType": "ExpressionStatement", + "src": "6841:152:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10421, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10387, + "src": "7013:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10422, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10389, + "src": "7017:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10420, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11013, + "src": "7004:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7004:21:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10424, + "nodeType": "ExpressionStatement", + "src": "7004:21:92" + } + ] + }, + "documentation": { + "id": 10385, + "nodeType": "StructuredDocumentation", + "src": "6600:46:92", + "text": " @dev See {IERC721-approve}." + }, + "functionSelector": "095ea7b3", + "id": 10426, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10391, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6712:8:92" + }, + "parameters": { + "id": 10390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10387, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10426, + "src": "6668:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6668:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10389, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10426, + "src": "6680:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10388, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6680:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6667:29:92" + }, + "returnParameters": { + "id": 10392, + "nodeType": "ParameterList", + "parameters": [], + "src": "6721:0:92" + }, + "scope": 11025, + "src": "6651:381:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 11204 + ], + "body": { + "id": 10446, + "nodeType": "Block", + "src": "7170:132:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10437, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10429, + "src": "7196:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10436, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10618, + "src": "7188:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 10438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7188:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 10439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7206:46:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", + "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" + }, + "value": "ERC721: approved query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", + "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" + } + ], + "id": 10435, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7180:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7180:73:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10441, + "nodeType": "ExpressionStatement", + "src": "7180:73:92" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10442, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10146, + "src": "7271:15:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 10444, + "indexExpression": { + "argumentTypes": null, + "id": 10443, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10429, + "src": "7287:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7271:24:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10434, + "id": 10445, + "nodeType": "Return", + "src": "7264:31:92" + } + ] + }, + "documentation": { + "id": 10427, + "nodeType": "StructuredDocumentation", + "src": "7038:50:92", + "text": " @dev See {IERC721-getApproved}." + }, + "functionSelector": "081812fc", + "id": 10447, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10431, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7143:8:92" + }, + "parameters": { + "id": 10430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10429, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10447, + "src": "7114:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7114:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7113:17:92" + }, + "returnParameters": { + "id": 10434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10433, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10447, + "src": "7161:7:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7161:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7160:9:92" + }, + "scope": 11025, + "src": "7093:209:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11212 + ], + "body": { + "id": 10480, + "nodeType": "Block", + "src": "7453:206:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10457, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10450, + "src": "7471:8:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10458, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7483:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7483:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7471:24:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", + "id": 10461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7497:27:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", + "typeString": "literal_string \"ERC721: approve to caller\"" + }, + "value": "ERC721: approve to caller" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", + "typeString": "literal_string \"ERC721: approve to caller\"" + } + ], + "id": 10456, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7463:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7463:62:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10463, + "nodeType": "ExpressionStatement", + "src": "7463:62:92" + }, + { + "expression": { + "argumentTypes": null, + "id": 10471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10464, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10152, + "src": "7536:18:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 10468, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10465, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7555:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7555:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7536:32:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 10469, + "indexExpression": { + "argumentTypes": null, + "id": 10467, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10450, + "src": "7569:8:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7536:42:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10470, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10452, + "src": "7581:8:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7536:53:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10472, + "nodeType": "ExpressionStatement", + "src": "7536:53:92" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10474, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7619:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7619:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10476, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10450, + "src": "7633:8:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10477, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10452, + "src": "7643:8:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 10473, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11152, + "src": "7604:14:92", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 10478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7604:48:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10479, + "nodeType": "EmitStatement", + "src": "7599:53:92" + } + ] + }, + "documentation": { + "id": 10448, + "nodeType": "StructuredDocumentation", + "src": "7308:56:92", + "text": " @dev See {IERC721-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 10481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10454, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7444:8:92" + }, + "parameters": { + "id": 10453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10450, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10481, + "src": "7396:16:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10449, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7396:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10452, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10481, + "src": "7414:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10451, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7414:4:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7395:33:92" + }, + "returnParameters": { + "id": 10455, + "nodeType": "ParameterList", + "parameters": [], + "src": "7453:0:92" + }, + "scope": 11025, + "src": "7369:290:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 11222 + ], + "body": { + "id": 10498, + "nodeType": "Block", + "src": "7820:59:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10492, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10152, + "src": "7837:18:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 10494, + "indexExpression": { + "argumentTypes": null, + "id": 10493, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10484, + "src": "7856:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7837:25:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 10496, + "indexExpression": { + "argumentTypes": null, + "id": 10495, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10486, + "src": "7863:8:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7837:35:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10491, + "id": 10497, + "nodeType": "Return", + "src": "7830:42:92" + } + ] + }, + "documentation": { + "id": 10482, + "nodeType": "StructuredDocumentation", + "src": "7665:55:92", + "text": " @dev See {IERC721-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 10499, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10488, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7796:8:92" + }, + "parameters": { + "id": 10487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10484, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10499, + "src": "7751:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7751:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10486, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10499, + "src": "7766:16:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7766:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7750:33:92" + }, + "returnParameters": { + "id": 10491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10490, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10499, + "src": "7814:4:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10489, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7814:4:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7813:6:92" + }, + "scope": 11025, + "src": "7725:154:92", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 11188 + ], + "body": { + "id": 10525, + "nodeType": "Block", + "src": "8030:211:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10512, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "8119:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8119:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10514, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10506, + "src": "8133:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10511, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10658, + "src": "8100:18:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 10515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8100:41:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 10516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8143:51:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + }, + "value": "ERC721: transfer caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + } + ], + "id": 10510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8092:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8092:103:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10518, + "nodeType": "ExpressionStatement", + "src": "8092:103:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10520, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10502, + "src": "8216:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10521, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10504, + "src": "8222:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10522, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10506, + "src": "8226:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10519, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10900, + "src": "8206:9:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8206:28:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10524, + "nodeType": "ExpressionStatement", + "src": "8206:28:92" + } + ] + }, + "documentation": { + "id": 10500, + "nodeType": "StructuredDocumentation", + "src": "7885:51:92", + "text": " @dev See {IERC721-transferFrom}." + }, + "functionSelector": "23b872dd", + "id": 10526, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10508, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8021:8:92" + }, + "parameters": { + "id": 10507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10502, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10526, + "src": "7963:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7963:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10504, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10526, + "src": "7977:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10503, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7977:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10506, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10526, + "src": "7989:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7989:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7962:43:92" + }, + "returnParameters": { + "id": 10509, + "nodeType": "ParameterList", + "parameters": [], + "src": "8030:0:92" + }, + "scope": 11025, + "src": "7941:300:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 11178 + ], + "body": { + "id": 10544, + "nodeType": "Block", + "src": "8400:56:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10538, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10529, + "src": "8427:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10539, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10531, + "src": "8433:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10540, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10533, + "src": "8437:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 10541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8446:2:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 10537, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10545, + 10575 + ], + "referencedDeclaration": 10575, + "src": "8410:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 10542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8410:39:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10543, + "nodeType": "ExpressionStatement", + "src": "8410:39:92" + } + ] + }, + "documentation": { + "id": 10527, + "nodeType": "StructuredDocumentation", + "src": "8247:55:92", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "42842e0e", + "id": 10545, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10535, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8391:8:92" + }, + "parameters": { + "id": 10534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10529, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10545, + "src": "8333:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8333:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10531, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10545, + "src": "8347:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8347:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10533, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10545, + "src": "8359:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8359:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8332:43:92" + }, + "returnParameters": { + "id": 10536, + "nodeType": "ParameterList", + "parameters": [], + "src": "8400:0:92" + }, + "scope": 11025, + "src": "8307:149:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 11234 + ], + "body": { + "id": 10574, + "nodeType": "Block", + "src": "8635:169:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10560, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "8672:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8672:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10562, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10552, + "src": "8686:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10559, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10658, + "src": "8653:18:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 10563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8653:41:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 10564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8696:51:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + }, + "value": "ERC721: transfer caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + } + ], + "id": 10558, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8645:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8645:103:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10566, + "nodeType": "ExpressionStatement", + "src": "8645:103:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10568, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10548, + "src": "8772:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10569, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10550, + "src": "8778:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10570, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10552, + "src": "8782:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 10571, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10554, + "src": "8791:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10567, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10604, + "src": "8758:13:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 10572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8758:39:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10573, + "nodeType": "ExpressionStatement", + "src": "8758:39:92" + } + ] + }, + "documentation": { + "id": 10546, + "nodeType": "StructuredDocumentation", + "src": "8462:55:92", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "b88d4fde", + "id": 10575, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10556, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8626:8:92" + }, + "parameters": { + "id": 10555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10548, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10575, + "src": "8548:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10547, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8548:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10550, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10575, + "src": "8562:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8562:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10552, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10575, + "src": "8574:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8574:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10554, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10575, + "src": "8591:18:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10553, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8591:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8547:63:92" + }, + "returnParameters": { + "id": 10557, + "nodeType": "ParameterList", + "parameters": [], + "src": "8635:0:92" + }, + "scope": 11025, + "src": "8522:282:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 10603, + "nodeType": "Block", + "src": "9768:166:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10588, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10578, + "src": "9788:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10589, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10580, + "src": "9794:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10590, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10582, + "src": "9798:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10587, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10900, + "src": "9778:9:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9778:28:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10592, + "nodeType": "ExpressionStatement", + "src": "9778:28:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10595, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10578, + "src": "9847:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10596, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10580, + "src": "9853:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10597, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10582, + "src": "9857:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 10598, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10584, + "src": "9866:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10594, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10991, + "src": "9824:22:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) returns (bool)" + } + }, + "id": 10599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9824:48:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 10600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9874:52:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + }, + "value": "ERC721: transfer to non ERC721Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "id": 10593, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9816:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9816:111:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10602, + "nodeType": "ExpressionStatement", + "src": "9816:111:92" + } + ] + }, + "documentation": { + "id": 10576, + "nodeType": "StructuredDocumentation", + "src": "8810:850:92", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mecanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 10604, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10578, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10604, + "src": "9688:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9688:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10580, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10604, + "src": "9702:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9702:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10582, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10604, + "src": "9714:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9714:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10584, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10604, + "src": "9731:18:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10583, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9731:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9687:63:92" + }, + "returnParameters": { + "id": 10586, + "nodeType": "ParameterList", + "parameters": [], + "src": "9768:0:92" + }, + "scope": 11025, + "src": "9665:269:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10617, + "nodeType": "Block", + "src": "10300:54:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10614, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10607, + "src": "10339:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 10612, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "10317:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10613, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 13406, + "src": "10317:21:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$13337_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 10615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10317:30:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10611, + "id": 10616, + "nodeType": "Return", + "src": "10310:37:92" + } + ] + }, + "documentation": { + "id": 10605, + "nodeType": "StructuredDocumentation", + "src": "9940:292:92", + "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)." + }, + "id": 10618, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_exists", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10607, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10618, + "src": "10254:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10254:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10253:17:92" + }, + "returnParameters": { + "id": 10611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10610, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10618, + "src": "10294:4:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10609, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10294:4:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10293:6:92" + }, + "scope": 11025, + "src": "10237:117:92", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10657, + "nodeType": "Block", + "src": "10603:238:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10630, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10623, + "src": "10629:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10629, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10618, + "src": "10621:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 10631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10621:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 10632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10639:46:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", + "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" + }, + "value": "ERC721: operator query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", + "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" + } + ], + "id": 10628, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10613:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10613:73:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10634, + "nodeType": "ExpressionStatement", + "src": "10613:73:92" + }, + { + "assignments": [ + 10636 + ], + "declarations": [ + { + "constant": false, + "id": 10636, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10657, + "src": "10696:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10635, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10696:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10640, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10638, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10623, + "src": "10720:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10637, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10242, + "src": "10712:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 10639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10712:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10696:32:92" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10641, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10621, + "src": "10746:7:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 10642, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10636, + "src": "10757:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10746:16:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10645, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10623, + "src": "10778:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10644, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10447, + "src": "10766:11:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 10646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10766:20:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 10647, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10621, + "src": "10790:7:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10766:31:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10746:51:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10651, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10636, + "src": "10818:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10652, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10621, + "src": "10825:7:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10650, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10499, + "src": "10801:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 10653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10801:32:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10746:87:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10655, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10745:89:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10627, + "id": 10656, + "nodeType": "Return", + "src": "10738:96:92" + } + ] + }, + "documentation": { + "id": 10619, + "nodeType": "StructuredDocumentation", + "src": "10360:147:92", + "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist." + }, + "id": 10658, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isApprovedOrOwner", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10621, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10658, + "src": "10540:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10620, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10540:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10623, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10658, + "src": "10557:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10557:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10539:34:92" + }, + "returnParameters": { + "id": 10627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10626, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10658, + "src": "10597:4:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10625, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10597:4:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10596:6:92" + }, + "scope": 11025, + "src": "10512:329:92", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10672, + "nodeType": "Block", + "src": "11237:43:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10667, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10661, + "src": "11257:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10668, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10663, + "src": "11261:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 10669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11270:2:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 10666, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10673, + 10702 + ], + "referencedDeclaration": 10702, + "src": "11247:9:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 10670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11247:26:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10671, + "nodeType": "ExpressionStatement", + "src": "11247:26:92" + } + ] + }, + "documentation": { + "id": 10659, + "nodeType": "StructuredDocumentation", + "src": "10847:320:92", + "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\nd*\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 10673, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10661, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10673, + "src": "11191:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11191:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10663, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10673, + "src": "11203:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11203:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11190:29:92" + }, + "returnParameters": { + "id": 10665, + "nodeType": "ParameterList", + "parameters": [], + "src": "11237:0:92" + }, + "scope": 11025, + "src": "11172:108:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10701, + "nodeType": "Block", + "src": "11586:162:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10684, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10676, + "src": "11602:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10685, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10678, + "src": "11606:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10683, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10761, + "src": "11596:5:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11596:18:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10687, + "nodeType": "ExpressionStatement", + "src": "11596:18:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11663:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11655:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10690, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11655:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11655:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10694, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10676, + "src": "11667:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10695, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10678, + "src": "11671:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 10696, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10680, + "src": "11680:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10689, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10991, + "src": "11632:22:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) returns (bool)" + } + }, + "id": 10697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11632:54:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 10698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11688:52:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + }, + "value": "ERC721: transfer to non ERC721Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "id": 10688, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11624:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11624:117:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10700, + "nodeType": "ExpressionStatement", + "src": "11624:117:92" + } + ] + }, + "documentation": { + "id": 10674, + "nodeType": "StructuredDocumentation", + "src": "11286:210:92", + "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." + }, + "id": 10702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10676, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10702, + "src": "11520:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11520:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10678, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10702, + "src": "11532:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11532:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10680, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10702, + "src": "11549:18:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10679, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11549:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11519:49:92" + }, + "returnParameters": { + "id": 10682, + "nodeType": "ParameterList", + "parameters": [], + "src": "11586:0:92" + }, + "scope": 11025, + "src": "11501:247:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10760, + "nodeType": "Block", + "src": "12131:332:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10711, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10705, + "src": "12149:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12163:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12155:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12155:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12155:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12149:16:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", + "id": 10717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12167:34:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", + "typeString": "literal_string \"ERC721: mint to the zero address\"" + }, + "value": "ERC721: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", + "typeString": "literal_string \"ERC721: mint to the zero address\"" + } + ], + "id": 10710, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12141:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12141:61:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10719, + "nodeType": "ExpressionStatement", + "src": "12141:61:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12220:17:92", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10722, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10707, + "src": "12229:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10721, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10618, + "src": "12221:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 10723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12221:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", + "id": 10725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12239:30:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", + "typeString": "literal_string \"ERC721: token already minted\"" + }, + "value": "ERC721: token already minted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", + "typeString": "literal_string \"ERC721: token already minted\"" + } + ], + "id": 10720, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12212:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12212:58:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10727, + "nodeType": "ExpressionStatement", + "src": "12212:58:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12310:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12302:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10729, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12302:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12302:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10733, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10705, + "src": "12314:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10734, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10707, + "src": "12318:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10728, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11024, + "src": "12281:20:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12281:45:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10736, + "nodeType": "ExpressionStatement", + "src": "12281:45:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10741, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10707, + "src": "12359:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10737, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10140, + "src": "12337:13:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 10739, + "indexExpression": { + "argumentTypes": null, + "id": 10738, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10705, + "src": "12351:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12337:17:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 10740, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 13832, + "src": "12337:21:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$13812_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$13812_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 10742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12337:30:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10743, + "nodeType": "ExpressionStatement", + "src": "12337:30:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10747, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10707, + "src": "12395:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 10748, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10705, + "src": "12404:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 10744, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "12378:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10746, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 13366, + "src": "12378:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$13337_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 10749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12378:29:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10750, + "nodeType": "ExpressionStatement", + "src": "12378:29:92" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12440:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12432:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12432:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12432:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10756, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10705, + "src": "12444:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10757, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10707, + "src": "12448:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10751, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11134, + "src": "12423:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12423:33:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10759, + "nodeType": "EmitStatement", + "src": "12418:38:92" + } + ] + }, + "documentation": { + "id": 10703, + "nodeType": "StructuredDocumentation", + "src": "11754:311:92", + "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event." + }, + "id": 10761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10705, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10761, + "src": "12085:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12085:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10707, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10761, + "src": "12097:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12097:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12084:29:92" + }, + "returnParameters": { + "id": 10709, + "nodeType": "ParameterList", + "parameters": [], + "src": "12131:0:92" + }, + "scope": 11025, + "src": "12070:393:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10828, + "nodeType": "Block", + "src": "12729:453:92", + "statements": [ + { + "assignments": [ + 10768 + ], + "declarations": [ + { + "constant": false, + "id": 10768, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10828, + "src": "12739:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12739:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10772, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10770, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "12763:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10769, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10242, + "src": "12755:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 10771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12755:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12739:32:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10774, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10768, + "src": "12803:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12818:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12810:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10775, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12810:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12810:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10779, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "12822:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10773, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11024, + "src": "12782:20:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12782:48:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10781, + "nodeType": "ExpressionStatement", + "src": "12782:48:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12885:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12877:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12877:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12877:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10787, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "12889:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10782, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11013, + "src": "12868:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12868:29:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10789, + "nodeType": "ExpressionStatement", + "src": "12868:29:92" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10792, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10160, + "src": "12953:10:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 10794, + "indexExpression": { + "argumentTypes": null, + "id": 10793, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "12964:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12953:19:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 10791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12947:5:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 10790, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12947:5:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12947:26:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 10796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12947:33:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 10797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12984:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12947:38:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 10805, + "nodeType": "IfStatement", + "src": "12943:95:92", + "trueBody": { + "id": 10804, + "nodeType": "Block", + "src": "12987:51:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "13001:26:92", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10799, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10160, + "src": "13008:10:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 10801, + "indexExpression": { + "argumentTypes": null, + "id": 10800, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "13019:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13008:19:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10803, + "nodeType": "ExpressionStatement", + "src": "13001:26:92" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10810, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "13076:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10806, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10140, + "src": "13048:13:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 10808, + "indexExpression": { + "argumentTypes": null, + "id": 10807, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10768, + "src": "13062:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13048:20:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 10809, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 13852, + "src": "13048:27:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$13812_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$13812_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 10811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13048:36:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10812, + "nodeType": "ExpressionStatement", + "src": "13048:36:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10816, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "13115:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 10813, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "13095:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10815, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 13386, + "src": "13095:19:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$13337_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)" + } + }, + "id": 10817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13095:28:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10818, + "nodeType": "ExpressionStatement", + "src": "13095:28:92" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10820, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10768, + "src": "13148:5:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13163:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13155:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13155:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13155:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10825, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10764, + "src": "13167:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10819, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11134, + "src": "13139:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13139:36:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10827, + "nodeType": "EmitStatement", + "src": "13134:41:92" + } + ] + }, + "documentation": { + "id": 10762, + "nodeType": "StructuredDocumentation", + "src": "12469:206:92", + "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event." + }, + "id": 10829, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10764, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10829, + "src": "12695:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12695:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12694:17:92" + }, + "returnParameters": { + "id": 10766, + "nodeType": "ParameterList", + "parameters": [], + "src": "12729:0:92" + }, + "scope": 11025, + "src": "12680:502:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10899, + "nodeType": "Block", + "src": "13585:480:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10841, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "13611:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10840, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10242, + "src": "13603:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 10842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13603:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 10843, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10832, + "src": "13623:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13603:24:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e", + "id": 10845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13629:43:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", + "typeString": "literal_string \"ERC721: transfer of token that is not own\"" + }, + "value": "ERC721: transfer of token that is not own" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", + "typeString": "literal_string \"ERC721: transfer of token that is not own\"" + } + ], + "id": 10839, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13595:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13595:78:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10847, + "nodeType": "ExpressionStatement", + "src": "13595:78:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10849, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10834, + "src": "13691:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13705:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13697:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13697:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13697:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13691:16:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 10855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13709:38:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", + "typeString": "literal_string \"ERC721: transfer to the zero address\"" + }, + "value": "ERC721: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", + "typeString": "literal_string \"ERC721: transfer to the zero address\"" + } + ], + "id": 10848, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13683:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13683:65:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10857, + "nodeType": "ExpressionStatement", + "src": "13683:65:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10859, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10832, + "src": "13780:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10860, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10834, + "src": "13786:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10861, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "13790:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10858, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11024, + "src": "13759:20:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13759:39:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10863, + "nodeType": "ExpressionStatement", + "src": "13759:39:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 10867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13877:1:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13869:7:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13869:7:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13869:10:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10869, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "13881:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10864, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11013, + "src": "13860:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 10870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13860:29:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10871, + "nodeType": "ExpressionStatement", + "src": "13860:29:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10876, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "13927:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10872, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10140, + "src": "13900:13:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 10874, + "indexExpression": { + "argumentTypes": null, + "id": 10873, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10832, + "src": "13914:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13900:19:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 10875, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 13852, + "src": "13900:26:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$13812_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$13812_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 10877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13900:35:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10878, + "nodeType": "ExpressionStatement", + "src": "13900:35:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10883, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "13967:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10879, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10140, + "src": "13945:13:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$13812_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 10881, + "indexExpression": { + "argumentTypes": null, + "id": 10880, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10834, + "src": "13959:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13945:17:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 10882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 13832, + "src": "13945:21:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$13812_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$13812_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 10884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13945:30:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10885, + "nodeType": "ExpressionStatement", + "src": "13945:30:92" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10889, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "14003:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 10890, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10834, + "src": "14012:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 10886, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10142, + "src": "13986:12:92", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 10888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 13366, + "src": "13986:16:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$13337_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$13337_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 10891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13986:29:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10892, + "nodeType": "ExpressionStatement", + "src": "13986:29:92" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10894, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10832, + "src": "14040:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10895, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10834, + "src": "14046:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10896, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10836, + "src": "14050:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10893, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11134, + "src": "14031:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 10897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14031:27:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10898, + "nodeType": "EmitStatement", + "src": "14026:32:92" + } + ] + }, + "documentation": { + "id": 10830, + "nodeType": "StructuredDocumentation", + "src": "13188:313:92", + "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event." + }, + "id": 10900, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10832, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10900, + "src": "13525:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10831, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13525:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10834, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10900, + "src": "13539:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13539:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10836, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10900, + "src": "13551:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13551:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13524:43:92" + }, + "returnParameters": { + "id": 10838, + "nodeType": "ParameterList", + "parameters": [], + "src": "13585:0:92" + }, + "scope": 11025, + "src": "13506:559:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10921, + "nodeType": "Block", + "src": "14293:131:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10910, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "14319:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10909, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10618, + "src": "14311:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 10911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14311:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", + "id": 10912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14329:46:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978", + "typeString": "literal_string \"ERC721Metadata: URI set of nonexistent token\"" + }, + "value": "ERC721Metadata: URI set of nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978", + "typeString": "literal_string \"ERC721Metadata: URI set of nonexistent token\"" + } + ], + "id": 10908, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14303:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14303:73:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10914, + "nodeType": "ExpressionStatement", + "src": "14303:73:92" + }, + { + "expression": { + "argumentTypes": null, + "id": 10919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10915, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10160, + "src": "14386:10:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 10917, + "indexExpression": { + "argumentTypes": null, + "id": 10916, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "14397:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14386:19:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10918, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10905, + "src": "14408:9:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "14386:31:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 10920, + "nodeType": "ExpressionStatement", + "src": "14386:31:92" + } + ] + }, + "documentation": { + "id": 10901, + "nodeType": "StructuredDocumentation", + "src": "14071:136:92", + "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist." + }, + "id": 10922, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10903, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10922, + "src": "14234:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14234:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10905, + "mutability": "mutable", + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10922, + "src": "14251:23:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10904, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14251:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14233:42:92" + }, + "returnParameters": { + "id": 10907, + "nodeType": "ParameterList", + "parameters": [], + "src": "14293:0:92" + }, + "scope": 11025, + "src": "14212:212:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10932, + "nodeType": "Block", + "src": "14709:36:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10928, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10162, + "src": "14719:8:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10929, + "name": "baseURI_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10925, + "src": "14730:8:92", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "14719:19:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 10931, + "nodeType": "ExpressionStatement", + "src": "14719:19:92" + } + ] + }, + "documentation": { + "id": 10923, + "nodeType": "StructuredDocumentation", + "src": "14430:212:92", + "text": " @dev Internal function to set the base URI for all token IDs. It is\n automatically added as a prefix to the value returned in {tokenURI},\n or to the token ID if {tokenURI} is empty." + }, + "id": 10933, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBaseURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10925, + "mutability": "mutable", + "name": "baseURI_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10933, + "src": "14668:22:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10924, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14668:6:92", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14667:24:92" + }, + "returnParameters": { + "id": 10927, + "nodeType": "ParameterList", + "parameters": [], + "src": "14709:0:92" + }, + "scope": 11025, + "src": "14647:98:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 10990, + "nodeType": "Block", + "src": "15428:459:92", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 10950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15442:16:92", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 10947, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10938, + "src": "15443:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 12639, + "src": "15443:13:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 10949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15443:15:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 10954, + "nodeType": "IfStatement", + "src": "15438:58:92", + "trueBody": { + "id": 10953, + "nodeType": "Block", + "src": "15460:36:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 10951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15481:4:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 10946, + "id": 10952, + "nodeType": "Return", + "src": "15474:11:92" + } + ] + } + }, + { + "assignments": [ + 10956 + ], + "declarations": [ + { + "constant": false, + "id": 10956, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10990, + "src": "15505:23:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10955, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15505:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10974, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10962, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10938, + "src": "15599:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10961, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11311, + "src": "15583:15:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$11311_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 10963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15583:19:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$11311", + "typeString": "contract IERC721Receiver" + } + }, + "id": 10964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 11310, + "src": "15583:36:92", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 10965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15583:45:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10966, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "15642:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 10967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15642:12:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 10968, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10936, + "src": "15668:4:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10969, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10940, + "src": "15686:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 10970, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10942, + "src": "15707:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 10959, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15547:3:92", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15547:22:92", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 10971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15547:175:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 10972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15724:52:92", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + }, + "value": "ERC721: transfer to non ERC721Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 10957, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10938, + "src": "15531:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 12710, + "src": "15531:15:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 10973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15531:246:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15505:272:92" + }, + { + "assignments": [ + 10976 + ], + "declarations": [ + { + "constant": false, + "id": 10976, + "mutability": "mutable", + "name": "retval", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10990, + "src": "15787:13:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 10975, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "15787:6:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10984, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10979, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10956, + "src": "15814:10:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 10981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15827:6:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 10980, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "15827:6:92", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 10982, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15826:8:92", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + ], + "expression": { + "argumentTypes": null, + "id": 10977, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15803:3:92", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15803:10:92", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15803:32:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15787:48:92" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 10987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10985, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10976, + "src": "15853:6:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 10986, + "name": "_ERC721_RECEIVED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10136, + "src": "15863:16:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "15853:26:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10988, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15852:28:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10946, + "id": 10989, + "nodeType": "Return", + "src": "15845:35:92" + } + ] + }, + "documentation": { + "id": 10934, + "nodeType": "StructuredDocumentation", + "src": "14751:542:92", + "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value" + }, + "id": 10991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnERC721Received", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10936, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10991, + "src": "15330:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15330:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10938, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10991, + "src": "15344:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15344:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10940, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10991, + "src": "15356:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15356:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10942, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10991, + "src": "15373:18:92", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10941, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15373:5:92", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15329:63:92" + }, + "returnParameters": { + "id": 10946, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10945, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10991, + "src": "15418:4:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10944, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15418:4:92", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15417:6:92" + }, + "scope": 11025, + "src": "15298:589:92", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11012, + "nodeType": "Block", + "src": "15948:100:92", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 10998, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10146, + "src": "15958:15:92", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 11000, + "indexExpression": { + "argumentTypes": null, + "id": 10999, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10995, + "src": "15974:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15958:24:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11001, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10993, + "src": "15985:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15958:29:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11003, + "nodeType": "ExpressionStatement", + "src": "15958:29:92" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11006, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10995, + "src": "16019:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11005, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10242, + "src": "16011:7:92", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 11007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16011:16:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11008, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10993, + "src": "16029:2:92", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11009, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10995, + "src": "16033:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11004, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11143, + "src": "16002:8:92", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16002:39:92", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11011, + "nodeType": "EmitStatement", + "src": "15997:44:92" + } + ] + }, + "documentation": null, + "id": 11013, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10993, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11013, + "src": "15911:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10992, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15911:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10995, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11013, + "src": "15923:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15923:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15910:29:92" + }, + "returnParameters": { + "id": 10997, + "nodeType": "ParameterList", + "parameters": [], + "src": "15948:0:92" + }, + "scope": 11025, + "src": "15893:155:92", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11023, + "nodeType": "Block", + "src": "16734:3:92", + "statements": [] + }, + "documentation": { + "id": 11014, + "nodeType": "StructuredDocumentation", + "src": "16054:585:92", + "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 11024, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11016, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11024, + "src": "16674:12:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16674:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11018, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11024, + "src": "16688:10:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16688:7:92", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11020, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11024, + "src": "16700:15:92", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16700:7:92", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16673:43:92" + }, + "returnParameters": { + "id": 11022, + "nodeType": "ParameterList", + "parameters": [], + "src": "16734:0:92" + }, + "scope": 11025, + "src": "16644:93:92", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 11026, + "src": "561:16178:92" + } + ], + "src": "33:16707:92" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002b5838038062002b58833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052505050620001cd6301ffc9a760e01b6200024f60201b60201c565b8160069080519060200190620001e592919062000358565b508060079080519060200190620001fe92919062000358565b50620002176380ac58cd60e01b6200024f60201b60201c565b6200022f635b5e139f60e01b6200024f60201b60201c565b6200024763780e9d6360e01b6200024f60201b60201c565b505062000407565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039b57805160ff1916838001178555620003cc565b82800160010185558215620003cc579182015b82811115620003cb578251825591602001919060010190620003ae565b5b509050620003db9190620003df565b5090565b6200040491905b8082111562000400576000816000905550600101620003e6565b5090565b90565b61274180620004176000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b411461059b578063a22cb4651461061e578063b88d4fde1461066e578063c87b56dd14610773578063e985e9c51461081a5761010b565b80634f6ccce7146104105780636352211e146104525780636c0360eb146104c057806370a08231146105435761010b565b806318160ddd116100de57806318160ddd146102b457806323b872dd146102d25780632f745c591461034057806342842e0e146103a25761010b565b806301ffc9a71461011057806306fdde0314610175578063081812fc146101f8578063095ea7b314610266575b600080fd5b61015b6004803603602081101561012657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610896565b604051808215151515815260200191505060405180910390f35b61017d6108fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bd5780820151818401526020810190506101a2565b50505050905090810190601f1680156101ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102246004803603602081101561020e57600080fd5b810190808035906020019092919050505061099f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b26004803603604081101561027c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a3a565b005b6102bc610b7e565b6040518082815260200191505060405180910390f35b61033e600480360360608110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8f565b005b61038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c05565b6040518082815260200191505060405180910390f35b61040e600480360360608110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c60565b005b61043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050610c80565b6040518082815260200191505060405180910390f35b61047e6004803603602081101561046857600080fd5b8101908080359060200190929190505050610ca3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c8610cda565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105085780820151818401526020810190506104ed565b50505050905090810190601f1680156105355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105856004803603602081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7c565b6040518082815260200191505060405180910390f35b6105a3610e51565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e35780820151818401526020810190506105c8565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066c6004803603604081101561063457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ef3565b005b6107716004803603608081101561068457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106eb57600080fd5b8201836020820111156106fd57600080fd5b8035906020019184600183028401116401000000008311171561071f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110ab565b005b61079f6004803603602081101561078957600080fd5b8101908080359060200190929190505050611123565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107df5780820151818401526020810190506107c4565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61087c6004803603604081101561083057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140c565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b60006109aa826114a0565b6109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612636602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4582610ca3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610acc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126ba6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aeb6114bd565b73ffffffffffffffffffffffffffffffffffffffff161480610b1a5750610b1981610b146114bd565b61140c565b5b610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806125896038913960400191505060405180910390fd5b610b7983836114c5565b505050565b6000610b8a600261157e565b905090565b610ba0610b9a6114bd565b82611593565b610bf5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126db6031913960400191505060405180910390fd5b610c00838383611687565b505050565b6000610c5882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206118ca90919063ffffffff16565b905092915050565b610c7b838383604051806020016040528060008152506110ab565b505050565b600080610c978360026118e490919063ffffffff16565b50905080915050919050565b6000610cd3826040518060600160405280602981526020016125eb6029913960026119139092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d725780601f10610d4757610100808354040283529160200191610d72565b820191906000526020600020905b815481529060010190602001808311610d5557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125c1602a913960400191505060405180910390fd5b610e4a600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611932565b9050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b5050505050905090565b610efb6114bd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060056000610fa96114bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110566114bd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6110bc6110b66114bd565b83611593565b611111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126db6031913960400191505060405180910390fd5b61111d84848484611947565b50505050565b606061112e826114a0565b611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061268b602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561122c5780601f106112015761010080835404028352916020019161122c565b820191906000526020600020905b81548152906001019060200180831161120f57829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561125b5780915050611407565b6000815111156113345760098160405160200180838054600181600116156101000203166002900480156112c65780601f106112a45761010080835404028352918201916112c6565b820191906000526020600020905b8154815290600101906020018083116112b2575b505082805190602001908083835b602083106112f757805182526020820191506020810190506020830392506112d4565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611407565b600961133f846119b9565b604051602001808380546001816001161561010002031660029004801561139d5780601f1061137b57610100808354040283529182019161139d565b820191906000526020600020905b815481529060010190602001808311611389575b505082805190602001908083835b602083106113ce57805182526020820191506020810190506020830392506113ab565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006114b6826002611b0090919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661153883610ca3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061158c82600001611b1a565b9050919050565b600061159e826114a0565b6115f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061255d602c913960400191505060405180910390fd5b60006115fe83610ca3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061166d57508373ffffffffffffffffffffffffffffffffffffffff166116558461099f565b73ffffffffffffffffffffffffffffffffffffffff16145b8061167e575061167d818561140c565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166116a782610ca3565b73ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806126626029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806125396024913960400191505060405180910390fd5b6117a4838383611b2b565b6117af6000826114c5565b61180081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b3090919063ffffffff16565b5061185281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b4a90919063ffffffff16565b5061186981836002611b649092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006118d98360000183611b99565b60001c905092915050565b6000806000806118f78660000186611c1c565b915091508160001c8160001c8090509350935050509250929050565b6000611926846000018460001b84611cb5565b60001c90509392505050565b600061194082600001611dab565b9050919050565b611952848484611687565b61195e84848484611dbc565b6119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806125076032913960400191505060405180910390fd5b50505050565b60606000821415611a01576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611afb565b600082905060005b60008214611a2b578080600101915050600a8281611a2357fe5b049150611a09565b60608167ffffffffffffffff81118015611a4457600080fd5b506040519080825280601f01601f191660200182016040528015611a775781602001600182028036833780820191505090505b50905060006001830390508593505b60008414611af357600a8481611a9857fe5b0660300160f81b82828060019003935081518110611ab257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481611aeb57fe5b049350611a86565b819450505050505b919050565b6000611b12836000018360001b612001565b905092915050565b600081600001805490509050919050565b505050565b6000611b42836000018360001b612024565b905092915050565b6000611b5c836000018360001b61210c565b905092915050565b6000611b90846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b61217c565b90509392505050565b600081836000018054905011611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124e56022913960400191505060405180910390fd5b826000018281548110611c0957fe5b9060005260206000200154905092915050565b60008082846000018054905011611c7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126146022913960400191505060405180910390fd5b6000846000018481548110611c8f57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390611d7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d41578082015181840152602081019050611d26565b50505050905090810190601f168015611d6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110611d8f57fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b6000611ddd8473ffffffffffffffffffffffffffffffffffffffff16612258565b611dea5760019050611ff9565b6060611f8063150b7a0260e01b611dff6114bd565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611eaf578082015181840152602081019050611e94565b50505050905090810190601f168015611edc5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001612507603291398773ffffffffffffffffffffffffffffffffffffffff166122a39092919063ffffffff16565b90506000818060200190516020811015611f9957600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612100576000600182039050600060018660000180549050039050600086600001828154811061206f57fe5b906000526020600020015490508087600001848154811061208c57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806120c457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612106565b60009150505b92915050565b600061211883836122bb565b612171578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612176565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561222357846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612251565b8285600001600183038154811061223657fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561229a57506000801b8214155b92505050919050565b60606122b284846000856122de565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b60606122e985612258565b61235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106123ab5780518252602082019150602081019050602083039250612388565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461240d576040519150601f19603f3d011682016040523d82523d6000602084013e612412565b606091505b509150915081156124275780925050506124dc565b60008151111561243a5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124a1578082015181840152602081019050612486565b50505050905090810190601f1680156124ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b94935050505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ba984c624a79e5235f1eb9986e1732ae01a312de8816819de1bb49fd30a5f86c64736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b411461059b578063a22cb4651461061e578063b88d4fde1461066e578063c87b56dd14610773578063e985e9c51461081a5761010b565b80634f6ccce7146104105780636352211e146104525780636c0360eb146104c057806370a08231146105435761010b565b806318160ddd116100de57806318160ddd146102b457806323b872dd146102d25780632f745c591461034057806342842e0e146103a25761010b565b806301ffc9a71461011057806306fdde0314610175578063081812fc146101f8578063095ea7b314610266575b600080fd5b61015b6004803603602081101561012657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610896565b604051808215151515815260200191505060405180910390f35b61017d6108fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bd5780820151818401526020810190506101a2565b50505050905090810190601f1680156101ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102246004803603602081101561020e57600080fd5b810190808035906020019092919050505061099f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b26004803603604081101561027c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a3a565b005b6102bc610b7e565b6040518082815260200191505060405180910390f35b61033e600480360360608110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8f565b005b61038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c05565b6040518082815260200191505060405180910390f35b61040e600480360360608110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c60565b005b61043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050610c80565b6040518082815260200191505060405180910390f35b61047e6004803603602081101561046857600080fd5b8101908080359060200190929190505050610ca3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c8610cda565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105085780820151818401526020810190506104ed565b50505050905090810190601f1680156105355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105856004803603602081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d7c565b6040518082815260200191505060405180910390f35b6105a3610e51565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e35780820151818401526020810190506105c8565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066c6004803603604081101561063457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ef3565b005b6107716004803603608081101561068457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106eb57600080fd5b8201836020820111156106fd57600080fd5b8035906020019184600183028401116401000000008311171561071f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110ab565b005b61079f6004803603602081101561078957600080fd5b8101908080359060200190929190505050611123565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107df5780820151818401526020810190506107c4565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61087c6004803603604081101561083057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061140c565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b60006109aa826114a0565b6109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612636602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4582610ca3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610acc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126ba6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aeb6114bd565b73ffffffffffffffffffffffffffffffffffffffff161480610b1a5750610b1981610b146114bd565b61140c565b5b610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806125896038913960400191505060405180910390fd5b610b7983836114c5565b505050565b6000610b8a600261157e565b905090565b610ba0610b9a6114bd565b82611593565b610bf5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126db6031913960400191505060405180910390fd5b610c00838383611687565b505050565b6000610c5882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206118ca90919063ffffffff16565b905092915050565b610c7b838383604051806020016040528060008152506110ab565b505050565b600080610c978360026118e490919063ffffffff16565b50905080915050919050565b6000610cd3826040518060600160405280602981526020016125eb6029913960026119139092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d725780601f10610d4757610100808354040283529160200191610d72565b820191906000526020600020905b815481529060010190602001808311610d5557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806125c1602a913960400191505060405180910390fd5b610e4a600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611932565b9050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b5050505050905090565b610efb6114bd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060056000610fa96114bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110566114bd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6110bc6110b66114bd565b83611593565b611111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806126db6031913960400191505060405180910390fd5b61111d84848484611947565b50505050565b606061112e826114a0565b611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061268b602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561122c5780601f106112015761010080835404028352916020019161122c565b820191906000526020600020905b81548152906001019060200180831161120f57829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561125b5780915050611407565b6000815111156113345760098160405160200180838054600181600116156101000203166002900480156112c65780601f106112a45761010080835404028352918201916112c6565b820191906000526020600020905b8154815290600101906020018083116112b2575b505082805190602001908083835b602083106112f757805182526020820191506020810190506020830392506112d4565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611407565b600961133f846119b9565b604051602001808380546001816001161561010002031660029004801561139d5780601f1061137b57610100808354040283529182019161139d565b820191906000526020600020905b815481529060010190602001808311611389575b505082805190602001908083835b602083106113ce57805182526020820191506020810190506020830392506113ab565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006114b6826002611b0090919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661153883610ca3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061158c82600001611b1a565b9050919050565b600061159e826114a0565b6115f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061255d602c913960400191505060405180910390fd5b60006115fe83610ca3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061166d57508373ffffffffffffffffffffffffffffffffffffffff166116558461099f565b73ffffffffffffffffffffffffffffffffffffffff16145b8061167e575061167d818561140c565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166116a782610ca3565b73ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806126626029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806125396024913960400191505060405180910390fd5b6117a4838383611b2b565b6117af6000826114c5565b61180081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b3090919063ffffffff16565b5061185281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b4a90919063ffffffff16565b5061186981836002611b649092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006118d98360000183611b99565b60001c905092915050565b6000806000806118f78660000186611c1c565b915091508160001c8160001c8090509350935050509250929050565b6000611926846000018460001b84611cb5565b60001c90509392505050565b600061194082600001611dab565b9050919050565b611952848484611687565b61195e84848484611dbc565b6119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806125076032913960400191505060405180910390fd5b50505050565b60606000821415611a01576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611afb565b600082905060005b60008214611a2b578080600101915050600a8281611a2357fe5b049150611a09565b60608167ffffffffffffffff81118015611a4457600080fd5b506040519080825280601f01601f191660200182016040528015611a775781602001600182028036833780820191505090505b50905060006001830390508593505b60008414611af357600a8481611a9857fe5b0660300160f81b82828060019003935081518110611ab257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481611aeb57fe5b049350611a86565b819450505050505b919050565b6000611b12836000018360001b612001565b905092915050565b600081600001805490509050919050565b505050565b6000611b42836000018360001b612024565b905092915050565b6000611b5c836000018360001b61210c565b905092915050565b6000611b90846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b61217c565b90509392505050565b600081836000018054905011611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124e56022913960400191505060405180910390fd5b826000018281548110611c0957fe5b9060005260206000200154905092915050565b60008082846000018054905011611c7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126146022913960400191505060405180910390fd5b6000846000018481548110611c8f57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390611d7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d41578082015181840152602081019050611d26565b50505050905090810190601f168015611d6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110611d8f57fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b6000611ddd8473ffffffffffffffffffffffffffffffffffffffff16612258565b611dea5760019050611ff9565b6060611f8063150b7a0260e01b611dff6114bd565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611eaf578082015181840152602081019050611e94565b50505050905090810190601f168015611edc5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001612507603291398773ffffffffffffffffffffffffffffffffffffffff166122a39092919063ffffffff16565b90506000818060200190516020811015611f9957600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612100576000600182039050600060018660000180549050039050600086600001828154811061206f57fe5b906000526020600020015490508087600001848154811061208c57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806120c457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612106565b60009150505b92915050565b600061211883836122bb565b612171578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612176565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561222357846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612251565b8285600001600183038154811061223657fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561229a57506000801b8214155b92505050919050565b60606122b284846000856122de565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b60606122e985612258565b61235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106123ab5780518252602082019150602081019050602083039250612388565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461240d576040519150601f19603f3d011682016040523d82523d6000602084013e612412565b606091505b509150915081156124275780925050506124dc565b60008151111561243a5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124a1578082015181840152602081019050612486565b50505050905090810190601f1680156124ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b94935050505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ba984c624a79e5235f1eb9986e1732ae01a312de8816819de1bb49fd30a5f86c64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Burnable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Burnable.json new file mode 100644 index 0000000..b6d0a0c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Burnable.json @@ -0,0 +1,831 @@ +{ + "fileName": "ERC721Burnable.sol", + "contractName": "ERC721Burnable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./ERC721.sol\";\n\n/**\n * @title ERC721 Burnable Token\n * @dev ERC721 Token that can be irreversibly burned (destroyed).\n */\nabstract contract ERC721Burnable is Context, ERC721 {\n /**\n * @dev Burns `tokenId`. See {ERC721-_burn}.\n *\n * Requirements:\n *\n * - The caller must own `tokenId` or be an approved operator.\n */\n function burn(uint256 tokenId) public virtual {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721Burnable: caller is not owner nor approved\");\n _burn(tokenId);\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Burnable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol", + "exportedSymbols": { + "ERC721Burnable": [ + 11055 + ] + }, + "id": 11056, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11027, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:93" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 11028, + "nodeType": "ImportDirective", + "scope": 11056, + "sourceUnit": 23, + "src": "58:31:93", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 11029, + "nodeType": "ImportDirective", + "scope": 11056, + "sourceUnit": 11026, + "src": "90:22:93", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11031, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "256:7:93", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 11032, + "nodeType": "InheritanceSpecifier", + "src": "256:7:93" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11033, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11025, + "src": "265:6:93", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11025", + "typeString": "contract ERC721" + } + }, + "id": 11034, + "nodeType": "InheritanceSpecifier", + "src": "265:6:93" + } + ], + "contractDependencies": [ + 22, + 1802, + 2048, + 11025, + 11235, + 11266, + 11293 + ], + "contractKind": "contract", + "documentation": { + "id": 11030, + "nodeType": "StructuredDocumentation", + "src": "114:105:93", + "text": " @title ERC721 Burnable Token\n @dev ERC721 Token that can be irreversibly burned (destroyed)." + }, + "fullyImplemented": false, + "id": 11055, + "linearizedBaseContracts": [ + 11055, + 11025, + 11266, + 11293, + 11235, + 1802, + 2048, + 22 + ], + "name": "ERC721Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11053, + "nodeType": "Block", + "src": "491:195:93", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11042, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "580:10:93", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "580:12:93", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 11044, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11037, + "src": "594:7:93", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11041, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10658, + "src": "561:18:93", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 11045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "561:41:93", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 11046, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "604:50:93", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ee6b7e810d7b317242d4688e6943ff4dd7897bb01d903b1a666812481b12a4f1", + "typeString": "literal_string \"ERC721Burnable: caller is not owner nor approved\"" + }, + "value": "ERC721Burnable: caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ee6b7e810d7b317242d4688e6943ff4dd7897bb01d903b1a666812481b12a4f1", + "typeString": "literal_string \"ERC721Burnable: caller is not owner nor approved\"" + } + ], + "id": 11040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "553:7:93", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "553:102:93", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11048, + "nodeType": "ExpressionStatement", + "src": "553:102:93" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11050, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11037, + "src": "671:7:93", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11049, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10829, + "src": "665:5:93", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 11051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "665:14:93", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11052, + "nodeType": "ExpressionStatement", + "src": "665:14:93" + } + ] + }, + "documentation": { + "id": 11035, + "nodeType": "StructuredDocumentation", + "src": "278:162:93", + "text": " @dev Burns `tokenId`. See {ERC721-_burn}.\n Requirements:\n - The caller must own `tokenId` or be an approved operator." + }, + "functionSelector": "42966c68", + "id": 11054, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11037, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11054, + "src": "459:15:93", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "459:7:93", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "458:17:93" + }, + "returnParameters": { + "id": 11039, + "nodeType": "ParameterList", + "parameters": [], + "src": "491:0:93" + }, + "scope": 11055, + "src": "445:241:93", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 11056, + "src": "220:468:93" + } + ], + "src": "33:656:93" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721BurnableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721BurnableMock.json new file mode 100644 index 0000000..b3c318f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721BurnableMock.json @@ -0,0 +1,859 @@ +{ + "fileName": "ERC721BurnableMock.sol", + "contractName": "ERC721BurnableMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC721/ERC721Burnable.sol\";\n\ncontract ERC721BurnableMock is ERC721Burnable {\n constructor(string memory name, string memory symbol) public ERC721(name, symbol) { }\n\n function mint(address to, uint256 tokenId) public {\n _mint(to, tokenId);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721BurnableMock.sol", + "sourceMap": "104:230:39:-:0;;;156:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;224:4;230:6;751:40:11;418:10;770:20;;751:18;;;:40;;:::i;:::-;3532:4:79;3524:5;:12;;;;;;;;;;;;:::i;:::-;;3556:6;3546:7;:16;;;;;;;;;;;;:::i;:::-;;3650:40;2730:10;3669:20;;3650:18;;;:40;;:::i;:::-;3700:49;3062:10;3719:29;;3700:18;;;:49;;:::i;:::-;3759:51;3435:10;3778:31;;3759:18;;;:51;;:::i;:::-;3452:365;;156:85:39;;104:230;;1482:198:11;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;104:230:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "104:230:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4723:90:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9383:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8717:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7597:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11094:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7292:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;247:85:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12043:149:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;404:241:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8135:161:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4451:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6831:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4021:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4922:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9891:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12915:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5859:740;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10503:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;948:140:11;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;4723:90:79:-;4769:13;4801:5;4794:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:90;:::o;9383:209::-;9451:7;9478:16;9486:7;9478;:16::i;:::-;9470:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9561:15;:24;9577:7;9561:24;;;;;;;;;;;;;;;;;;;;;9554:31;;9383:209;;;:::o;8717:381::-;8797:13;8813:16;8821:7;8813;:16::i;:::-;8797:32;;8853:5;8847:11;;:2;:11;;;;8839:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8931:5;8915:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8940:37;8957:5;8964:12;:10;:12::i;:::-;8940:16;:37::i;:::-;8915:62;8907:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9070:21;9079:2;9083:7;9070:8;:21::i;:::-;8717:381;;;:::o;7597:200::-;7650:7;7769:21;:12;:19;:21::i;:::-;7762:28;;7597:200;:::o;11094:300::-;11253:41;11272:12;:10;:12::i;:::-;11286:7;11253:18;:41::i;:::-;11245:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11359:28;11369:4;11375:2;11379:7;11359:9;:28::i;:::-;11094:300;;;:::o;7292:152::-;7381:7;7407:30;7431:5;7407:13;:20;7421:5;7407:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;7400:37;;7292:152;;;;:::o;247:85:39:-;307:18;313:2;317:7;307:5;:18::i;:::-;247:85;;:::o;12043:149:79:-;12146:39;12163:4;12169:2;12173:7;12146:39;;;;;;;;;;;;:16;:39::i;:::-;12043:149;;;:::o;404:241:80:-;520:41;539:12;:10;:12::i;:::-;553:7;520:18;:41::i;:::-;512:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;624:14;630:7;624:5;:14::i;:::-;404:241;:::o;8135:161:79:-;8202:7;8222:15;8243:22;8259:5;8243:12;:15;;:22;;;;:::i;:::-;8221:44;;;8282:7;8275:14;;;8135:161;;;:::o;4451:167::-;4515:7;4541:70;4558:7;4541:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4534:77;;4451:167;;;:::o;6831:87::-;6871:13;6903:8;6896:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:87;:::o;4021:211::-;4085:7;4129:1;4112:19;;:5;:19;;;;4104:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4196:29;:13;:20;4210:5;4196:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4189:36;;4021:211;;;:::o;4922:94::-;4970:13;5002:7;4995:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:94;:::o;9891:290::-;10005:12;:10;:12::i;:::-;9993:24;;:8;:24;;;;9985:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10103:8;10058:18;:32;10077:12;:10;:12::i;:::-;10058:32;;;;;;;;;;;;;;;:42;10091:8;10058:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;10155:8;10126:48;;10141:12;:10;:12::i;:::-;10126:48;;;10165:8;10126:48;;;;;;;;;;;;;;;;;;;;;;9891:290;;:::o;12915:282::-;13046:41;13065:12;:10;:12::i;:::-;13079:7;13046:18;:41::i;:::-;13038:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13151:39;13165:4;13171:2;13175:7;13184:5;13151:13;:39::i;:::-;12915:282;;;;:::o;5859:740::-;5924:13;5957:16;5965:7;5957;:16::i;:::-;5949:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6036:23;6062:10;:19;6073:7;6062:19;;;;;;;;;;;6036:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6180:1;6160:8;6154:22;;;;;;;;;;;;;;;;:27;6150:74;;;6204:9;6197:16;;;;;6150:74;6352:1;6332:9;6326:23;:27;6322:110;;;6400:8;6410:9;6383:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6369:52;;;;;6322:110;6562:8;6572:18;:7;:16;:18::i;:::-;6545:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6531:61;;;5859:740;;;;:::o;10503:154::-;10592:4;10615:18;:25;10634:5;10615:25;;;;;;;;;;;;;;;:35;10641:8;10615:35;;;;;;;;;;;;;;;;;;;;;;;;;10608:42;;10503:154;;;;:::o;14366:117::-;14423:4;14446:30;14468:7;14446:12;:21;;:30;;;;:::i;:::-;14439:37;;14366:117;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;21390:155:79:-;21482:2;21455:15;:24;21471:7;21455:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21530:7;21526:2;21499:39;;21508:16;21516:7;21508;:16::i;:::-;21499:39;;;;;;;;;;;;21390:155;;:::o;7023:121:95:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;14844:329:79:-;14929:4;14953:16;14961:7;14953;:16::i;:::-;14945:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15028:13;15044:16;15052:7;15044;:16::i;:::-;15028:32;;15089:5;15078:16;;:7;:16;;;:51;;;;15122:7;15098:31;;:20;15110:7;15098:11;:20::i;:::-;:31;;;15078:51;:87;;;;15133:32;15150:5;15157:7;15133:16;:32::i;:::-;15078:87;15070:96;;;14844:329;;;;:::o;18356:559::-;18473:4;18453:24;;:16;18461:7;18453;:16::i;:::-;:24;;;18445:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18555:1;18541:16;;:2;:16;;;;18533:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18609:39;18630:4;18636:2;18640:7;18609:20;:39::i;:::-;18710:29;18727:1;18731:7;18710:8;:29::i;:::-;18750:35;18777:7;18750:13;:19;18764:4;18750:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;18795:30;18817:7;18795:13;:17;18809:2;18795:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;18836:29;18853:7;18862:2;18836:12;:16;;:29;;;;;:::i;:::-;;18900:7;18896:2;18881:27;;18890:4;18881:27;;;;;;;;;;;;18356:559;;;:::o;7649:135:96:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;16903:393:79:-;16996:1;16982:16;;:2;:16;;;;16974:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:16;17062:7;17054;:16::i;:::-;17053:17;17045:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17114:45;17143:1;17147:2;17151:7;17114:20;:45::i;:::-;17170:30;17192:7;17170:13;:17;17184:2;17170:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;17211:29;17228:7;17237:2;17211:12;:16;;:29;;;;;:::i;:::-;;17281:7;17277:2;17256:33;;17273:1;17256:33;;;;;;;;;;;;16903:393;;:::o;17477:502::-;17536:13;17552:16;17560:7;17552;:16::i;:::-;17536:32;;17579:48;17600:5;17615:1;17619:7;17579:20;:48::i;:::-;17665:29;17682:1;17686:7;17665:8;:29::i;:::-;17781:1;17750:10;:19;17761:7;17750:19;;;;;;;;;;;17744:33;;;;;;;;;;;;;;;;:38;17740:95;;17805:10;:19;17816:7;17805:19;;;;;;;;;;;;17798:26;;;;:::i;:::-;17740:95;17845:36;17873:7;17845:13;:20;17859:5;17845:20;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;;17892:28;17912:7;17892:12;:19;;:28;;;;:::i;:::-;;17964:7;17960:1;17936:36;;17945:5;17936:36;;;;;;;;;;;;17477:502;;:::o;7472:224:95:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:96:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;13902:269:79:-;14015:28;14025:4;14031:2;14035:7;14015:9;:28::i;:::-;14061:48;14084:4;14090:2;14094:7;14103:5;14061:22;:48::i;:::-;14053:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:269;;;;:::o;202:723:100:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;6791:149:95:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;22101:93:79:-;;;;:::o;6764:135:96:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:95:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:96:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;6572:140:95:-;6649:4;6672:33;6680:3;:10;;6700:3;6692:12;;6672:7;:33::i;:::-;6665:40;;6572:140;;;;:::o;4934:274::-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:96:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;20334:1050:79:-;20454:4;20479:15;:2;:13;;;:15::i;:::-;20474:58;;20517:4;20510:11;;;;20474:58;20601:12;20615:23;20642:2;:7;;20686:45;;;20745:12;:10;:12::i;:::-;20771:4;20789:7;20810:5;20650:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20642:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20600:226;;;;20841:7;20836:542;;20888:1;20868:10;:17;:21;20864:376;;;21033:10;21027:17;21093:15;21080:10;21076:2;21072:19;21065:44;20982:145;21165:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20836:542;21270:13;21297:10;21286:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21270:48;;1068:10;21350:16;;21340:26;;;:6;:26;;;;21332:35;;;;;20334:1050;;;;;;;:::o;4270:123:95:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:96:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:95:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;2674:1517::-;2738:4;2852:16;2871:3;:12;;:17;2884:3;2871:17;;;;;;;;;;;;2852:36;;2915:1;2903:8;:13;2899:1286;;3259:21;3294:1;3283:8;:12;3259:36;;3309:17;3351:1;3329:3;:12;;:19;;;;:23;3309:43;;3592:26;3621:3;:12;;3634:9;3621:23;;;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;3888:1;3872:13;:17;3841:3;:12;;:28;3854:9;:14;;;3841:28;;;;;;;;;;;:48;;;;3995:3;:12;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:3;:12;;:17;4101:3;4088:17;;;;;;;;;;;4081:24;;;4127:4;4120:11;;;;;;;;2899:1286;4169:5;4162:12;;;2674:1517;;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3776:127:96:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721BurnableMock.sol", + "exportedSymbols": { + "ERC721BurnableMock": [ + 3853 + ] + }, + "id": 3854, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3824, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:39" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol", + "file": "../token/ERC721/ERC721Burnable.sol", + "id": 3825, + "nodeType": "ImportDirective", + "scope": 3854, + "sourceUnit": 9284, + "src": "58:44:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3826, + "name": "ERC721Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9283, + "src": "135:14:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Burnable_$9283", + "typeString": "contract ERC721Burnable" + } + }, + "id": 3827, + "nodeType": "InheritanceSpecifier", + "src": "135:14:39" + } + ], + "contractDependencies": [ + 26, + 2190, + 2436, + 9253, + 9283, + 9461, + 9492, + 9519 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3853, + "linearizedBaseContracts": [ + 3853, + 9283, + 9253, + 9492, + 9519, + 9461, + 2190, + 2436, + 26 + ], + "name": "ERC721BurnableMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3838, + "nodeType": "Block", + "src": "238:3:39", + "statements": [] + }, + "documentation": null, + "id": 3839, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3834, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "224:4:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3835, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3831, + "src": "230:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3836, + "modifierName": { + "argumentTypes": null, + "id": 3833, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9253, + "src": "217:6:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$9253_$", + "typeString": "type(contract ERC721)" + } + }, + "nodeType": "ModifierInvocation", + "src": "217:20:39" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3829, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3839, + "src": "168:18:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3828, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "168:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3831, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3839, + "src": "188:20:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3830, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "188:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "167:42:39" + }, + "returnParameters": { + "id": 3837, + "nodeType": "ParameterList", + "parameters": [], + "src": "238:0:39" + }, + "scope": 3853, + "src": "156:85:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3851, + "nodeType": "Block", + "src": "297:35:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3847, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3841, + "src": "313:2:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3848, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3843, + "src": "317:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3846, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8971, + "src": "307:5:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "307:18:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3850, + "nodeType": "ExpressionStatement", + "src": "307:18:39" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 3852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3841, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3852, + "src": "261:10:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3840, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "261:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3843, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3852, + "src": "273:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "273:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "260:29:39" + }, + "returnParameters": { + "id": 3845, + "nodeType": "ParameterList", + "parameters": [], + "src": "297:0:39" + }, + "scope": 3853, + "src": "247:85:39", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3854, + "src": "104:230:39" + } + ], + "src": "33:302:39" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200302c3803806200302c833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508181620001cf6301ffc9a760e01b6200025360201b60201c565b8160069080519060200190620001e79291906200035c565b508060079080519060200190620002009291906200035c565b50620002196380ac58cd60e01b6200025360201b60201c565b62000231635b5e139f60e01b6200025360201b60201c565b6200024963780e9d6360e01b6200025360201b60201c565b505050506200040b565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039f57805160ff1916838001178555620003d0565b82800160010185558215620003d0579182015b82811115620003cf578251825591602001919060010190620003b2565b5b509050620003df9190620003e3565b5090565b6200040891905b8082111562000404576000816000905550600101620003ea565b5090565b90565b612c11806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b411461062d578063a22cb465146106b0578063b88d4fde14610700578063c87b56dd14610805578063e985e9c5146108ac57610121565b806342966c68146104745780634f6ccce7146104a25780636352211e146104e45780636c0360eb1461055257806370a08231146105d557610121565b806318160ddd116100f457806318160ddd146102ca57806323b872dd146102e85780632f745c591461035657806340c10f19146103b857806342842e0e1461040657610121565b806301ffc9a71461012657806306fdde031461018b578063081812fc1461020e578063095ea7b31461027c575b600080fd5b6101716004803603602081101561013c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610928565b604051808215151515815260200191505060405180910390f35b61019361098f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d35780820151818401526020810190506101b8565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023a6004803603602081101561022457600080fd5b8101908080359060200190929190505050610a31565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c86004803603604081101561029257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610acc565b005b6102d2610c10565b6040518082815260200191505060405180910390f35b610354600480360360608110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c21565b005b6103a26004803603604081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c97565b6040518082815260200191505060405180910390f35b610404600480360360408110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf2565b005b6104726004803603606081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d00565b005b6104a06004803603602081101561048a57600080fd5b8101908080359060200190929190505050610d20565b005b6104ce600480360360208110156104b857600080fd5b8101908080359060200190929190505050610d92565b6040518082815260200191505060405180910390f35b610510600480360360208110156104fa57600080fd5b8101908080359060200190929190505050610db5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055a610dec565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561059a57808201518184015260208101905061057f565b50505050905090810190601f1680156105c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610617600480360360208110156105eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e8e565b6040518082815260200191505060405180910390f35b610635610f63565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561067557808201518184015260208101905061065a565b50505050905090810190601f1680156106a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106fe600480360360408110156106c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611005565b005b6108036004803603608081101561071657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111bd565b005b6108316004803603602081101561081b57600080fd5b8101908080359060200190929190505050611235565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610871578082015181840152602081019050610856565b50505050905090810190601f16801561089e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61090e600480360360408110156108c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b6000610a3c826115b2565b610a91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612ad6602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad782610db5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b5a6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b7d6115cf565b73ffffffffffffffffffffffffffffffffffffffff161480610bac5750610bab81610ba66115cf565b61151e565b5b610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612a296038913960400191505060405180910390fd5b610c0b83836115d7565b505050565b6000610c1c6002611690565b905090565b610c32610c2c6115cf565b826116a5565b610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612b7b6031913960400191505060405180910390fd5b610c92838383611799565b505050565b6000610cea82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206119dc90919063ffffffff16565b905092915050565b610cfc82826119f6565b5050565b610d1b838383604051806020016040528060008152506111bd565b505050565b610d31610d2b6115cf565b826116a5565b610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612bac6030913960400191505060405180910390fd5b610d8f81611bea565b50565b600080610da9836002611d2490919063ffffffff16565b50905080915050919050565b6000610de582604051806060016040528060298152602001612a8b602991396002611d539092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e845780601f10610e5957610100808354040283529160200191610e84565b820191906000526020600020905b815481529060010190602001808311610e6757829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612a61602a913960400191505060405180910390fd5b610f5c600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d72565b9050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b5050505050905090565b61100d6115cf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006110bb6115cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111686115cf565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6111ce6111c86115cf565b836116a5565b611223576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612b7b6031913960400191505060405180910390fd5b61122f84848484611d87565b50505050565b6060611240826115b2565b611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612b2b602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561133e5780601f106113135761010080835404028352916020019161133e565b820191906000526020600020905b81548152906001019060200180831161132157829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561136d5780915050611519565b6000815111156114465760098160405160200180838054600181600116156101000203166002900480156113d85780601f106113b65761010080835404028352918201916113d8565b820191906000526020600020905b8154815290600101906020018083116113c4575b505082805190602001908083835b6020831061140957805182526020820191506020810190506020830392506113e6565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611519565b600961145184611df9565b60405160200180838054600181600116156101000203166002900480156114af5780601f1061148d5761010080835404028352918201916114af565b820191906000526020600020905b81548152906001019060200180831161149b575b505082805190602001908083835b602083106114e057805182526020820191506020810190506020830392506114bd565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006115c8826002611f4090919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661164a83610db5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061169e82600001611f5a565b9050919050565b60006116b0826115b2565b611705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806129fd602c913960400191505060405180910390fd5b600061171083610db5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061177f57508373ffffffffffffffffffffffffffffffffffffffff1661176784610a31565b73ffffffffffffffffffffffffffffffffffffffff16145b80611790575061178f818561151e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117b982610db5565b73ffffffffffffffffffffffffffffffffffffffff1614611825576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612b026029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806129d96024913960400191505060405180910390fd5b6118b6838383611f6b565b6118c16000826115d7565b61191281600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f7090919063ffffffff16565b5061196481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f8a90919063ffffffff16565b5061197b81836002611fa49092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006119eb8360000183611fd9565b60001c905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611aa2816115b2565b15611b15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b611b2160008383611f6b565b611b7281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f8a90919063ffffffff16565b50611b8981836002611fa49092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611bf582610db5565b9050611c0381600084611f6b565b611c0e6000836115d7565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014611c5d57600860008381526020019081526020016000206000611c5c9190612917565b5b611cae82600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f7090919063ffffffff16565b50611cc382600261205c90919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080600080611d378660000186612076565b915091508160001c8160001c8090509350935050509250929050565b6000611d66846000018460001b8461210f565b60001c90509392505050565b6000611d8082600001612205565b9050919050565b611d92848484611799565b611d9e84848484612216565b611df3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806129a76032913960400191505060405180910390fd5b50505050565b60606000821415611e41576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f3b565b600082905060005b60008214611e6b578080600101915050600a8281611e6357fe5b049150611e49565b60608167ffffffffffffffff81118015611e8457600080fd5b506040519080825280601f01601f191660200182016040528015611eb75781602001600182028036833780820191505090505b50905060006001830390508593505b60008414611f3357600a8481611ed857fe5b0660300160f81b82828060019003935081518110611ef257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481611f2b57fe5b049350611ec6565b819450505050505b919050565b6000611f52836000018360001b612539565b905092915050565b600081600001805490509050919050565b505050565b6000611f82836000018360001b61255c565b905092915050565b6000611f9c836000018360001b612644565b905092915050565b6000611fd0846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6126b4565b90509392505050565b60008183600001805490501161203a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806129856022913960400191505060405180910390fd5b82600001828154811061204957fe5b9060005260206000200154905092915050565b600061206e836000018360001b612790565b905092915050565b600080828460000180549050116120d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ab46022913960400191505060405180910390fd5b60008460000184815481106120e957fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561219b578082015181840152602081019050612180565b50505050905090810190601f1680156121c85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106121e957fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b60006122378473ffffffffffffffffffffffffffffffffffffffff166128a9565b6122445760019050612531565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b61226f6115cf565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561231f578082015181840152602081019050612304565b50505050905090810190601f16801561234c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106123e457805182526020820191506020810190506020830392506123c1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150816124b9576000815111156124685780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806129a76032913960400191505060405180910390fd5b60008180602001905160208110156124d057600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461263857600060018203905060006001866000018054905003905060008660000182815481106125a757fe5b90600052602060002001549050808760000184815481106125c457fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806125fc57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061263e565b60009150505b92915050565b600061265083836128f4565b6126a95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506126ae565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561275b57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612789565b8285600001600183038154811061276e57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b6000808360010160008481526020019081526020016000205490506000811461289d57600060018203905060006001866000018054905003905060008660000182815481106127db57fe5b90600052602060002090600202019050808760000184815481106127fb57fe5b906000526020600020906002020160008201548160000155600182015481600101559050506001830187600101600083600001548152602001908152602001600020819055508660000180548061284e57fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558660010160008781526020019081526020016000206000905560019450505050506128a3565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156128eb57506000801b8214155b92505050919050565b600080836001016000848152602001908152602001600020541415905092915050565b50805460018160011615610100020316600290046000825580601f1061293d575061295c565b601f01602090049060005260206000209081019061295b919061295f565b5b50565b61298191905b8082111561297d576000816000905550600101612965565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220b6f622a4cdf2138cd3b01dec5e7c7d5c8f29a075db58a5fa3d2635c35c0deee164736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b411461062d578063a22cb465146106b0578063b88d4fde14610700578063c87b56dd14610805578063e985e9c5146108ac57610121565b806342966c68146104745780634f6ccce7146104a25780636352211e146104e45780636c0360eb1461055257806370a08231146105d557610121565b806318160ddd116100f457806318160ddd146102ca57806323b872dd146102e85780632f745c591461035657806340c10f19146103b857806342842e0e1461040657610121565b806301ffc9a71461012657806306fdde031461018b578063081812fc1461020e578063095ea7b31461027c575b600080fd5b6101716004803603602081101561013c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610928565b604051808215151515815260200191505060405180910390f35b61019361098f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d35780820151818401526020810190506101b8565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023a6004803603602081101561022457600080fd5b8101908080359060200190929190505050610a31565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c86004803603604081101561029257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610acc565b005b6102d2610c10565b6040518082815260200191505060405180910390f35b610354600480360360608110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c21565b005b6103a26004803603604081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c97565b6040518082815260200191505060405180910390f35b610404600480360360408110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf2565b005b6104726004803603606081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d00565b005b6104a06004803603602081101561048a57600080fd5b8101908080359060200190929190505050610d20565b005b6104ce600480360360208110156104b857600080fd5b8101908080359060200190929190505050610d92565b6040518082815260200191505060405180910390f35b610510600480360360208110156104fa57600080fd5b8101908080359060200190929190505050610db5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055a610dec565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561059a57808201518184015260208101905061057f565b50505050905090810190601f1680156105c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610617600480360360208110156105eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e8e565b6040518082815260200191505060405180910390f35b610635610f63565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561067557808201518184015260208101905061065a565b50505050905090810190601f1680156106a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106fe600480360360408110156106c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611005565b005b6108036004803603608081101561071657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111bd565b005b6108316004803603602081101561081b57600080fd5b8101908080359060200190929190505050611235565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610871578082015181840152602081019050610856565b50505050905090810190601f16801561089e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61090e600480360360408110156108c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b6000610a3c826115b2565b610a91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612ad6602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad782610db5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b5a6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b7d6115cf565b73ffffffffffffffffffffffffffffffffffffffff161480610bac5750610bab81610ba66115cf565b61151e565b5b610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612a296038913960400191505060405180910390fd5b610c0b83836115d7565b505050565b6000610c1c6002611690565b905090565b610c32610c2c6115cf565b826116a5565b610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612b7b6031913960400191505060405180910390fd5b610c92838383611799565b505050565b6000610cea82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206119dc90919063ffffffff16565b905092915050565b610cfc82826119f6565b5050565b610d1b838383604051806020016040528060008152506111bd565b505050565b610d31610d2b6115cf565b826116a5565b610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612bac6030913960400191505060405180910390fd5b610d8f81611bea565b50565b600080610da9836002611d2490919063ffffffff16565b50905080915050919050565b6000610de582604051806060016040528060298152602001612a8b602991396002611d539092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e845780601f10610e5957610100808354040283529160200191610e84565b820191906000526020600020905b815481529060010190602001808311610e6757829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612a61602a913960400191505060405180910390fd5b610f5c600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d72565b9050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b5050505050905090565b61100d6115cf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006110bb6115cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111686115cf565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6111ce6111c86115cf565b836116a5565b611223576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612b7b6031913960400191505060405180910390fd5b61122f84848484611d87565b50505050565b6060611240826115b2565b611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612b2b602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561133e5780601f106113135761010080835404028352916020019161133e565b820191906000526020600020905b81548152906001019060200180831161132157829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561136d5780915050611519565b6000815111156114465760098160405160200180838054600181600116156101000203166002900480156113d85780601f106113b65761010080835404028352918201916113d8565b820191906000526020600020905b8154815290600101906020018083116113c4575b505082805190602001908083835b6020831061140957805182526020820191506020810190506020830392506113e6565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611519565b600961145184611df9565b60405160200180838054600181600116156101000203166002900480156114af5780601f1061148d5761010080835404028352918201916114af565b820191906000526020600020905b81548152906001019060200180831161149b575b505082805190602001908083835b602083106114e057805182526020820191506020810190506020830392506114bd565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006115c8826002611f4090919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661164a83610db5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061169e82600001611f5a565b9050919050565b60006116b0826115b2565b611705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806129fd602c913960400191505060405180910390fd5b600061171083610db5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061177f57508373ffffffffffffffffffffffffffffffffffffffff1661176784610a31565b73ffffffffffffffffffffffffffffffffffffffff16145b80611790575061178f818561151e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166117b982610db5565b73ffffffffffffffffffffffffffffffffffffffff1614611825576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612b026029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806129d96024913960400191505060405180910390fd5b6118b6838383611f6b565b6118c16000826115d7565b61191281600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f7090919063ffffffff16565b5061196481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f8a90919063ffffffff16565b5061197b81836002611fa49092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006119eb8360000183611fd9565b60001c905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611aa2816115b2565b15611b15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b611b2160008383611f6b565b611b7281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f8a90919063ffffffff16565b50611b8981836002611fa49092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611bf582610db5565b9050611c0381600084611f6b565b611c0e6000836115d7565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014611c5d57600860008381526020019081526020016000206000611c5c9190612917565b5b611cae82600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f7090919063ffffffff16565b50611cc382600261205c90919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080600080611d378660000186612076565b915091508160001c8160001c8090509350935050509250929050565b6000611d66846000018460001b8461210f565b60001c90509392505050565b6000611d8082600001612205565b9050919050565b611d92848484611799565b611d9e84848484612216565b611df3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806129a76032913960400191505060405180910390fd5b50505050565b60606000821415611e41576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f3b565b600082905060005b60008214611e6b578080600101915050600a8281611e6357fe5b049150611e49565b60608167ffffffffffffffff81118015611e8457600080fd5b506040519080825280601f01601f191660200182016040528015611eb75781602001600182028036833780820191505090505b50905060006001830390508593505b60008414611f3357600a8481611ed857fe5b0660300160f81b82828060019003935081518110611ef257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481611f2b57fe5b049350611ec6565b819450505050505b919050565b6000611f52836000018360001b612539565b905092915050565b600081600001805490509050919050565b505050565b6000611f82836000018360001b61255c565b905092915050565b6000611f9c836000018360001b612644565b905092915050565b6000611fd0846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6126b4565b90509392505050565b60008183600001805490501161203a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806129856022913960400191505060405180910390fd5b82600001828154811061204957fe5b9060005260206000200154905092915050565b600061206e836000018360001b612790565b905092915050565b600080828460000180549050116120d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ab46022913960400191505060405180910390fd5b60008460000184815481106120e957fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561219b578082015181840152602081019050612180565b50505050905090810190601f1680156121c85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106121e957fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b60006122378473ffffffffffffffffffffffffffffffffffffffff166128a9565b6122445760019050612531565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b61226f6115cf565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561231f578082015181840152602081019050612304565b50505050905090810190601f16801561234c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106123e457805182526020820191506020810190506020830392506123c1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150816124b9576000815111156124685780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806129a76032913960400191505060405180910390fd5b60008180602001905160208110156124d057600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461263857600060018203905060006001866000018054905003905060008660000182815481106125a757fe5b90600052602060002001549050808760000184815481106125c457fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806125fc57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061263e565b60009150505b92915050565b600061265083836128f4565b6126a95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506126ae565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561275b57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612789565b8285600001600183038154811061276e57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b6000808360010160008481526020019081526020016000205490506000811461289d57600060018203905060006001866000018054905003905060008660000182815481106127db57fe5b90600052602060002090600202019050808760000184815481106127fb57fe5b906000526020600020906002020160008201548160000155600182015481600101559050506001830187600101600083600001548152602001908152602001600020819055508660000180548061284e57fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558660010160008781526020019081526020016000206000905560019450505050506128a3565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156128eb57506000801b8214155b92505050919050565b600080836001016000848152602001908152602001600020541415905092915050565b50805460018160011615610100020316600290046000825580601f1061293d575061295c565b601f01602090049060005260206000209081019061295b919061295f565b5b50565b61298191905b8082111561297d576000816000905550600101612965565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220b6f622a4cdf2138cd3b01dec5e7c7d5c8f29a075db58a5fa3d2635c35c0deee164736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Enumerable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Enumerable.json new file mode 100644 index 0000000..988909f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Enumerable.json @@ -0,0 +1,4600 @@ +{ + "fileName": "ERC721Enumerable.sol", + "contractName": "ERC721Enumerable", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./ERC721.sol\";\nimport \"../../introspection/ERC165.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token with optional enumeration extension logic\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ncontract ERC721Enumerable is Context, ERC165, ERC721, IERC721Enumerable {\n // Mapping from owner to list of owned token IDs\n mapping(address => uint256[]) private _ownedTokens;\n\n // Mapping from token ID to index of the owner tokens list\n mapping(uint256 => uint256) private _ownedTokensIndex;\n\n // Array with all token ids, used for enumeration\n uint256[] private _allTokens;\n\n // Mapping from token id to position in the allTokens array\n mapping(uint256 => uint256) private _allTokensIndex;\n\n /*\n * bytes4(keccak256('totalSupply()')) == 0x18160ddd\n * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59\n * bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7\n *\n * => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63\n */\n bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;\n\n /**\n * @dev Constructor function.\n */\n constructor () public {\n // register the supported interface to conform to ERC721Enumerable via ERC165\n _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);\n }\n\n /**\n * @dev Gets the token ID at a given index of the tokens list of the requested owner.\n * @param owner address owning the tokens list to be accessed\n * @param index uint256 representing the index to be accessed of the requested tokens list\n * @return uint256 token ID at the given index of the tokens list owned by the requested address\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {\n require(index < balanceOf(owner), \"ERC721Enumerable: owner index out of bounds\");\n return _ownedTokens[owner][index];\n }\n\n /**\n * @dev Gets the total amount of tokens stored by the contract.\n * @return uint256 representing the total amount of tokens\n */\n function totalSupply() public view returns (uint256) {\n return _allTokens.length;\n }\n\n /**\n * @dev Gets the token ID at a given index of all the tokens in this contract\n * Reverts if the index is greater or equal to the total number of tokens.\n * @param index uint256 representing the index to be accessed of the tokens list\n * @return uint256 token ID at the given index of the tokens list\n */\n function tokenByIndex(uint256 index) public view returns (uint256) {\n require(index < totalSupply(), \"ERC721Enumerable: global index out of bounds\");\n return _allTokens[index];\n }\n\n /**\n * @dev Internal function to transfer ownership of a given token ID to another address.\n * As opposed to transferFrom, this imposes no restrictions on msg.sender.\n * @param from current owner of the token\n * @param to address to receive the ownership of the given token ID\n * @param tokenId uint256 ID of the token to be transferred\n */\n function _transferFrom(address from, address to, uint256 tokenId) internal {\n super._transferFrom(from, to, tokenId);\n\n _removeTokenFromOwnerEnumeration(from, tokenId);\n\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n\n /**\n * @dev Internal function to mint a new token.\n * Reverts if the given token ID already exists.\n * @param to address the beneficiary that will own the minted token\n * @param tokenId uint256 ID of the token to be minted\n */\n function _mint(address to, uint256 tokenId) internal {\n super._mint(to, tokenId);\n\n _addTokenToOwnerEnumeration(to, tokenId);\n\n _addTokenToAllTokensEnumeration(tokenId);\n }\n\n /**\n * @dev Internal function to burn a specific token.\n * Reverts if the token does not exist.\n * Deprecated, use {ERC721-_burn} instead.\n * @param owner owner of the token to burn\n * @param tokenId uint256 ID of the token being burned\n */\n function _burn(address owner, uint256 tokenId) internal {\n super._burn(owner, tokenId);\n\n _removeTokenFromOwnerEnumeration(owner, tokenId);\n // Since tokenId will be deleted, we can clear its slot in _ownedTokensIndex to trigger a gas refund\n _ownedTokensIndex[tokenId] = 0;\n\n _removeTokenFromAllTokensEnumeration(tokenId);\n }\n\n /**\n * @dev Gets the list of token IDs of the requested owner.\n * @param owner address owning the tokens\n * @return uint256[] List of token IDs owned by the requested address\n */\n function _tokensOfOwner(address owner) internal view returns (uint256[] storage) {\n return _ownedTokens[owner];\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n _ownedTokensIndex[tokenId] = _ownedTokens[to].length;\n _ownedTokens[to].push(tokenId);\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n _allTokensIndex[tokenId] = _allTokens.length;\n _allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n _ownedTokens[from].length--;\n\n // Note that _ownedTokensIndex[tokenId] hasn't been cleared: it still points to the old slot (now occupied by\n // lastTokenId, or just over the end of the array if the token was the last one).\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _allTokens.length.sub(1);\n uint256 tokenIndex = _allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = _allTokens[lastTokenIndex];\n\n _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n _allTokens.length--;\n _allTokensIndex[tokenId] = 0;\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Enumerable.sol", + "sourceMap": "294:8472:130:-;;;1239:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;1239:176:130;718:40:37;385:10;737:20;;718:18;;;:40;;:::i;:::-;2262::128;2136:10;2281:20;;2262:18;;;:40;;:::i;:::-;1357:51:130;1172:10;1376:31;;1357:18;;;:51;;:::i;:::-;294:8472;;1442:190:37;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;294:8472:130:-;;;;;;;", + "deployedSourceMap": "294:8472:130:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;294:8472:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4283:200:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:200:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3583:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3583:415:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2171:94:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5929:287:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5929:287:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1789:229:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1789:229:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6865:132:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6865:132:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2603:196:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2603:196:130;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2939:223:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:223:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2513:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2513:207:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4776:249;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4776:249:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7720:269;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7720:269:128;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7720:269:128;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7720:269:128;;;;;;;;;;;;;;;:::i;:::-;;5347:145;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5347:145:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:133:37;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;4283:200:128:-;4342:7;4369:16;4377:7;4369;:16::i;:::-;4361:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:15;:24;4468:7;4452:24;;;;;;;;;;;;;;;;;;;;;4445:31;;4283:200;;;:::o;3583:415::-;3646:13;3662:16;3670:7;3662;:16::i;:::-;3646:32;;3702:5;3696:11;;:2;:11;;;;3688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:5;3764:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3789:37;3806:5;3813:12;:10;:12::i;:::-;3789:16;:37::i;:::-;3764:62;3756:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:2;3919:15;:24;3935:7;3919:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3983:7;3979:2;3963:28;;3972:5;3963:28;;;;;;;;;;;;3583:415;;;:::o;2171:94:130:-;2215:7;2241:10;:17;;;;2234:24;;2171:94;:::o;5929:287:128:-;6071:41;6090:12;:10;:12::i;:::-;6104:7;6071:18;:41::i;:::-;6063:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:32;6191:4;6197:2;6201:7;6177:13;:32::i;:::-;5929:287;;;:::o;1789:229:130:-;1869:7;1904:16;1914:5;1904:9;:16::i;:::-;1896:5;:24;1888:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1985:12;:19;1998:5;1985:19;;;;;;;;;;;;;;;2005:5;1985:26;;;;;;;;;;;;;;;;1978:33;;1789:229;;;;:::o;6865:132:128:-;6951:39;6968:4;6974:2;6978:7;6951:39;;;;;;;;;;;;:16;:39::i;:::-;6865:132;;;:::o;2603:196:130:-;2661:7;2696:13;:11;:13::i;:::-;2688:5;:21;2680:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:10;2786:5;2775:17;;;;;;;;;;;;;;;;2768:24;;2603:196;;;:::o;2939:223:128:-;2994:7;3013:13;3029:11;:20;3041:7;3029:20;;;;;;;;;;;;;;;;;;;;;3013:36;;3084:1;3067:19;;:5;:19;;;;3059:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:5;3143:12;;;2939:223;;;:::o;2513:207::-;2568:7;2612:1;2595:19;;:5;:19;;;;2587:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:34;:17;:24;2697:5;2679:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2672:41;;2513:207;;;:::o;4776:249::-;4861:12;:10;:12::i;:::-;4855:18;;:2;:18;;;;4847:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:8;4914:18;:32;4933:12;:10;:12::i;:::-;4914:32;;;;;;;;;;;;;;;:36;4947:2;4914:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5005:2;4976:42;;4991:12;:10;:12::i;:::-;4976:42;;;5009:8;4976:42;;;;;;;;;;;;;;;;;;;;;;4776:249;;:::o;7720:269::-;7834:41;7853:12;:10;:12::i;:::-;7867:7;7834:18;:41::i;:::-;7826:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:43;7957:4;7963:2;7967:7;7976:5;7939:17;:43::i;:::-;7720:269;;;;:::o;5347:145::-;5427:4;5450:18;:25;5469:5;5450:25;;;;;;;;;;;;;;;:35;5476:8;5450:35;;;;;;;;;;;;;;;;;;;;;;;;;5443:42;;5347:145;;;;:::o;9158:152::-;9215:4;9231:13;9247:11;:20;9259:7;9247:20;;;;;;;;;;;;;;;;;;;;;9231:36;;9301:1;9284:19;;:5;:19;;;;9277:26;;;9158:152;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;9671:329:128:-;9756:4;9780:16;9788:7;9780;:16::i;:::-;9772:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:13;9871:16;9879:7;9871;:16::i;:::-;9855:32;;9916:5;9905:16;;:7;:16;;;:51;;;;9949:7;9925:31;;:20;9937:7;9925:11;:20::i;:::-;:31;;;9905:51;:87;;;;9960:32;9977:5;9984:7;9960:16;:32::i;:::-;9905:87;9897:96;;;9671:329;;;;:::o;3174:239:130:-;3259:38;3279:4;3285:2;3289:7;3259:19;:38::i;:::-;3308:47;3341:4;3347:7;3308:32;:47::i;:::-;3366:40;3394:2;3398:7;3366:27;:40::i;:::-;3174:239;;;:::o;1065:112:28:-;1130:7;1156;:14;;;1149:21;;1065:112;;;:::o;8694:269:128:-;8803:32;8817:4;8823:2;8827:7;8803:13;:32::i;:::-;8853:48;8876:4;8882:2;8886:7;8895:5;8853:22;:48::i;:::-;8845:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8694:269;;;;:::o;13281:447::-;13394:4;13374:24;;:16;13382:7;13374;:16::i;:::-;:24;;;13366:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:1;13462:16;;:2;:16;;;;13454:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:23;13545:7;13530:14;:23::i;:::-;13564:35;:17;:23;13582:4;13564:23;;;;;;;;;;;;;;;:33;:35::i;:::-;13609:33;:17;:21;13627:2;13609:21;;;;;;;;;;;;;;;:31;:33::i;:::-;13676:2;13653:11;:20;13665:7;13653:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13713:7;13709:2;13694:27;;13703:4;13694:27;;;;;;;;;;;;13281:447;;;:::o;6284:1128:130:-;6546:22;6571:32;6601:1;6571:12;:18;6584:4;6571:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;6546:57;;6613:18;6634:17;:26;6652:7;6634:26;;;;;;;;;;;;6613:47;;6778:14;6764:10;:28;6760:323;;6808:19;6830:12;:18;6843:4;6830:18;;;;;;;;;;;;;;;6849:14;6830:34;;;;;;;;;;;;;;;;6808:56;;6912:11;6879:12;:18;6892:4;6879:18;;;;;;;;;;;;;;;6898:10;6879:30;;;;;;;;;;;;;;;:44;;;;7028:10;6995:17;:30;7013:11;6995:30;;;;;;;;;;;:43;;;;6760:323;;7169:12;:18;7182:4;7169:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;6284:1128;;;;:::o;5128:183::-;5241:12;:16;5254:2;5241:16;;;;;;;;;;;;;;;:23;;;;5212:17;:26;5230:7;5212:26;;;;;;;;;;;:52;;;;5274:12;:16;5287:2;5274:16;;;;;;;;;;;;;;;5296:7;5274:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5274:30:130;;;;;;;;;;;;;;;;;;;;;;5128:183;;:::o;14367:1051:128:-;14488:4;14513:15;:2;:13;;;:15::i;:::-;14508:58;;14551:4;14544:11;;;;14508:58;14635:12;14649:23;14676:2;:7;;14736:2;14720:36;;;:45;;;;14779:12;:10;:12::i;:::-;14805:4;14823:7;14844:5;14684:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14684:175:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14684:175:128;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;14684:175:128;14676:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14676:184:128;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14634:226:128;;;;14875:7;14870:542;;14922:1;14902:10;:17;:21;14898:376;;;15067:10;15061:17;15127:15;15114:10;15110:2;15106:19;15099:44;15016:145;15199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14870:542;15304:13;15331:10;15320:32;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:32:128;;;;;;;;;;;;;;;;15304:48;;754:10;15384:16;;15374:26;;;:6;:26;;;;15366:35;;;;;14367:1051;;;;;;;:::o;15580:171::-;15679:1;15643:38;;:15;:24;15659:7;15643:24;;;;;;;;;;;;;;;;;;;;;:38;;;15639:106;;15732:1;15697:15;:24;15713:7;15697:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15639:106;15580:171;:::o;1367:108:28:-;1447:21;1466:1;1447:7;:14;;;:18;;:21;;;;:::i;:::-;1430:7;:14;;:38;;;;1367:108;:::o;1183:178::-;1353:1;1335:7;:14;;;:19;;;;;;;;;;;1183:178;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;294:8472:130:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Enumerable.sol", + "exportedSymbols": { + "ERC721Enumerable": [ + 11577 + ] + }, + "id": 11578, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11239, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:130" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 11240, + "nodeType": "ImportDirective", + "scope": 11578, + "sourceUnit": 27, + "src": "25:31:130", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 11241, + "nodeType": "ImportDirective", + "scope": 11578, + "sourceUnit": 12098, + "src": "57:33:130", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 11242, + "nodeType": "ImportDirective", + "scope": 11578, + "sourceUnit": 11210, + "src": "91:22:130", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 11243, + "nodeType": "ImportDirective", + "scope": 11578, + "sourceUnit": 4630, + "src": "114:40:130", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11244, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "323:7:130", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 11245, + "nodeType": "InheritanceSpecifier", + "src": "323:7:130" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11246, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4629, + "src": "332:6:130", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$4629", + "typeString": "contract ERC165" + } + }, + "id": 11247, + "nodeType": "InheritanceSpecifier", + "src": "332:6:130" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11248, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11209, + "src": "340:6:130", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11209", + "typeString": "contract ERC721" + } + }, + "id": 11249, + "nodeType": "InheritanceSpecifier", + "src": "340:6:130" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11250, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12097, + "src": "348:17:130", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$12097", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 11251, + "nodeType": "InheritanceSpecifier", + "src": "348:17:130" + } + ], + "contractDependencies": [ + 26, + 4629, + 4862, + 11209, + 12070, + 12097 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token with optional enumeration extension logic\n@dev See https://eips.ethereum.org/EIPS/eip-721", + "fullyImplemented": true, + "id": 11577, + "linearizedBaseContracts": [ + 11577, + 12097, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 11256, + "name": "_ownedTokens", + "nodeType": "VariableDeclaration", + "scope": 11577, + "src": "425:50:130", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 11255, + "keyType": { + "id": 11252, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "433:7:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "425:29:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 11253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "444:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11254, + "length": null, + "nodeType": "ArrayTypeName", + "src": "444:9:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11260, + "name": "_ownedTokensIndex", + "nodeType": "VariableDeclaration", + "scope": 11577, + "src": "545:53:130", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 11259, + "keyType": { + "id": 11257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "553:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "545:27:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 11258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "564:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11263, + "name": "_allTokens", + "nodeType": "VariableDeclaration", + "scope": 11577, + "src": "659:28:130", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 11261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "659:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11262, + "length": null, + "nodeType": "ArrayTypeName", + "src": "659:9:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11267, + "name": "_allTokensIndex", + "nodeType": "VariableDeclaration", + "scope": 11577, + "src": "758:51:130", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 11266, + "keyType": { + "id": 11264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "766:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "758:27:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 11265, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "777:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 11270, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "VariableDeclaration", + "scope": 11577, + "src": "1114:68:130", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 11268, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1114:6:130", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783738306539643633", + "id": 11269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1172:10:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2014223715_by_1", + "typeString": "int_const 2014223715" + }, + "value": "0x780e9d63" + }, + "visibility": "private" + }, + { + "body": { + "id": 11277, + "nodeType": "Block", + "src": "1261:154:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11274, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "1376:31:130", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 11273, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4628, + "src": "1357:18:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 11275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1357:51:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11276, + "nodeType": "ExpressionStatement", + "src": "1357:51:130" + } + ] + }, + "documentation": "@dev Constructor function.", + "id": 11278, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11271, + "nodeType": "ParameterList", + "parameters": [], + "src": "1251:2:130" + }, + "returnParameters": { + "id": 11272, + "nodeType": "ParameterList", + "parameters": [], + "src": "1261:0:130" + }, + "scope": 11577, + "src": "1239:176:130", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11302, + "nodeType": "Block", + "src": "1878:140:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11288, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11282, + "src": "1896:5:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11290, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11280, + "src": "1914:5:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11289, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10617 + ], + "referencedDeclaration": 10617, + "src": "1904:9:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 11291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1904:16:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1896:24:130", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e6473", + "id": 11293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1922:45:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c", + "typeString": "literal_string \"ERC721Enumerable: owner index out of bounds\"" + }, + "value": "ERC721Enumerable: owner index out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c", + "typeString": "literal_string \"ERC721Enumerable: owner index out of bounds\"" + } + ], + "id": 11287, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1888:7:130", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1888:80:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11295, + "nodeType": "ExpressionStatement", + "src": "1888:80:130" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11296, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "1985:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11298, + "indexExpression": { + "argumentTypes": null, + "id": 11297, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11280, + "src": "1998:5:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1985:19:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11300, + "indexExpression": { + "argumentTypes": null, + "id": 11299, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11282, + "src": "2005:5:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1985:26:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11286, + "id": 11301, + "nodeType": "Return", + "src": "1978:33:130" + } + ] + }, + "documentation": "@dev Gets the token ID at a given index of the tokens list of the requested owner.\n@param owner address owning the tokens list to be accessed\n@param index uint256 representing the index to be accessed of the requested tokens list\n@return uint256 token ID at the given index of the tokens list owned by the requested address", + "id": 11303, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11280, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 11303, + "src": "1818:13:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1818:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11282, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 11303, + "src": "1833:13:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1833:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1817:30:130" + }, + "returnParameters": { + "id": 11286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11285, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11303, + "src": "1869:7:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1869:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1868:9:130" + }, + "scope": 11577, + "src": "1789:229:130", + "stateMutability": "view", + "superFunction": 12089, + "visibility": "public" + }, + { + "body": { + "id": 11311, + "nodeType": "Block", + "src": "2224:41:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11308, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "2241:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11309, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2241:17:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11307, + "id": 11310, + "nodeType": "Return", + "src": "2234:24:130" + } + ] + }, + "documentation": "@dev Gets the total amount of tokens stored by the contract.\n@return uint256 representing the total amount of tokens", + "id": 11312, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11304, + "nodeType": "ParameterList", + "parameters": [], + "src": "2191:2:130" + }, + "returnParameters": { + "id": 11307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11312, + "src": "2215:7:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2214:9:130" + }, + "scope": 11577, + "src": "2171:94:130", + "stateMutability": "view", + "superFunction": 12080, + "visibility": "public" + }, + { + "body": { + "id": 11331, + "nodeType": "Block", + "src": "2670:129:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11320, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11314, + "src": "2688:5:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11321, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11312 + ], + "referencedDeclaration": 11312, + "src": "2696:11:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 11322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2696:13:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2688:21:130", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473", + "id": 11324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2711:46:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc", + "typeString": "literal_string \"ERC721Enumerable: global index out of bounds\"" + }, + "value": "ERC721Enumerable: global index out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc", + "typeString": "literal_string \"ERC721Enumerable: global index out of bounds\"" + } + ], + "id": 11319, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2680:7:130", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2680:78:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11326, + "nodeType": "ExpressionStatement", + "src": "2680:78:130" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11327, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "2775:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11329, + "indexExpression": { + "argumentTypes": null, + "id": 11328, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11314, + "src": "2786:5:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2775:17:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11318, + "id": 11330, + "nodeType": "Return", + "src": "2768:24:130" + } + ] + }, + "documentation": "@dev Gets the token ID at a given index of all the tokens in this contract\nReverts if the index is greater or equal to the total number of tokens.\n@param index uint256 representing the index to be accessed of the tokens list\n@return uint256 token ID at the given index of the tokens list", + "id": 11332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11314, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 11332, + "src": "2625:13:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2625:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2624:15:130" + }, + "returnParameters": { + "id": 11318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11317, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11332, + "src": "2661:7:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2661:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2660:9:130" + }, + "scope": 11577, + "src": "2603:196:130", + "stateMutability": "view", + "superFunction": 12096, + "visibility": "public" + }, + { + "body": { + "id": 11359, + "nodeType": "Block", + "src": "3249:164:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11344, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11334, + "src": "3279:4:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11345, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11336, + "src": "3285:2:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11346, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11338, + "src": "3289:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11341, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14150, + "src": "3259:5:130", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$11577", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 11343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 11111, + "src": "3259:19:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3259:38:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11348, + "nodeType": "ExpressionStatement", + "src": "3259:38:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11350, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11334, + "src": "3341:4:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11351, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11338, + "src": "3347:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11349, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11527, + "src": "3308:32:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3308:47:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11353, + "nodeType": "ExpressionStatement", + "src": "3308:47:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11355, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11336, + "src": "3394:2:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11356, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11338, + "src": "3398:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11354, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11451, + "src": "3366:27:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3366:40:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11358, + "nodeType": "ExpressionStatement", + "src": "3366:40:130" + } + ] + }, + "documentation": "@dev Internal function to transfer ownership of a given token ID to another address.\nAs opposed to transferFrom, this imposes no restrictions on msg.sender.\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 11360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11334, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 11360, + "src": "3197:12:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3197:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11336, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11360, + "src": "3211:10:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3211:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11338, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11360, + "src": "3223:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11337, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3223:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3196:43:130" + }, + "returnParameters": { + "id": 11340, + "nodeType": "ParameterList", + "parameters": [], + "src": "3249:0:130" + }, + "scope": 11577, + "src": "3174:239:130", + "stateMutability": "nonpayable", + "superFunction": 11111, + "visibility": "internal" + }, + { + "body": { + "id": 11383, + "nodeType": "Block", + "src": "3723:143:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11370, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11362, + "src": "3745:2:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11371, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11364, + "src": "3749:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11367, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14150, + "src": "3733:5:130", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$11577", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 11369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 10999, + "src": "3733:11:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3733:24:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11373, + "nodeType": "ExpressionStatement", + "src": "3733:24:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11375, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11362, + "src": "3796:2:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11376, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11364, + "src": "3800:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11374, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11451, + "src": "3768:27:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3768:40:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11378, + "nodeType": "ExpressionStatement", + "src": "3768:40:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11380, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11364, + "src": "3851:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11379, + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11470, + "src": "3819:31:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 11381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3819:40:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11382, + "nodeType": "ExpressionStatement", + "src": "3819:40:130" + } + ] + }, + "documentation": "@dev Internal function to mint a new token.\nReverts if the given token ID already exists.\n@param to address the beneficiary that will own the minted token\n@param tokenId uint256 ID of the token to be minted", + "id": 11384, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11362, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11384, + "src": "3685:10:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3685:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11364, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11384, + "src": "3697:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11363, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3697:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3684:29:130" + }, + "returnParameters": { + "id": 11366, + "nodeType": "ParameterList", + "parameters": [], + "src": "3723:0:130" + }, + "scope": 11577, + "src": "3670:196:130", + "stateMutability": "nonpayable", + "superFunction": 10999, + "visibility": "internal" + }, + { + "body": { + "id": 11413, + "nodeType": "Block", + "src": "4197:308:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11394, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11386, + "src": "4219:5:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11395, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11388, + "src": "4226:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11391, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14150, + "src": "4207:5:130", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$11577", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 11393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 11042, + "src": "4207:11:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4207:27:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11397, + "nodeType": "ExpressionStatement", + "src": "4207:27:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11399, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11386, + "src": "4278:5:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11400, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11388, + "src": "4285:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11398, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11527, + "src": "4245:32:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4245:48:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11402, + "nodeType": "ExpressionStatement", + "src": "4245:48:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11403, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11260, + "src": "4412:17:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11405, + "indexExpression": { + "argumentTypes": null, + "id": 11404, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11388, + "src": "4430:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4412:26:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 11406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4441:1:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4412:30:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11408, + "nodeType": "ExpressionStatement", + "src": "4412:30:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11410, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11388, + "src": "4490:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11409, + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11576, + "src": "4453:36:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 11411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4453:45:130", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11412, + "nodeType": "ExpressionStatement", + "src": "4453:45:130" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token.\nReverts if the token does not exist.\nDeprecated, use {ERC721-_burn} instead.\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned", + "id": 11414, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11386, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 11414, + "src": "4156:13:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11385, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4156:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11388, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11414, + "src": "4171:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4171:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4155:32:130" + }, + "returnParameters": { + "id": 11390, + "nodeType": "ParameterList", + "parameters": [], + "src": "4197:0:130" + }, + "scope": 11577, + "src": "4141:364:130", + "stateMutability": "nonpayable", + "superFunction": 11042, + "visibility": "internal" + }, + { + "body": { + "id": 11426, + "nodeType": "Block", + "src": "4791:43:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11422, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "4808:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11424, + "indexExpression": { + "argumentTypes": null, + "id": 11423, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11416, + "src": "4821:5:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4808:19:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 11421, + "id": 11425, + "nodeType": "Return", + "src": "4801:26:130" + } + ] + }, + "documentation": "@dev Gets the list of token IDs of the requested owner.\n@param owner address owning the tokens\n@return uint256[] List of token IDs owned by the requested address", + "id": 11427, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_tokensOfOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11416, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 11427, + "src": "4734:13:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4734:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4733:15:130" + }, + "returnParameters": { + "id": 11421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11420, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11427, + "src": "4772:17:130", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 11418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4772:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11419, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4772:9:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4771:19:130" + }, + "scope": 11577, + "src": "4710:124:130", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 11450, + "nodeType": "Block", + "src": "5202:109:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11434, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11260, + "src": "5212:17:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11436, + "indexExpression": { + "argumentTypes": null, + "id": 11435, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11431, + "src": "5230:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5212:26:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11437, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "5241:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11439, + "indexExpression": { + "argumentTypes": null, + "id": 11438, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11429, + "src": "5254:2:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5241:16:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11440, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5241:23:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5212:52:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11442, + "nodeType": "ExpressionStatement", + "src": "5212:52:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11447, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11431, + "src": "5296:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11443, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "5274:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11445, + "indexExpression": { + "argumentTypes": null, + "id": 11444, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11429, + "src": "5287:2:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5274:16:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5274:21:130", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 11448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5274:30:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11449, + "nodeType": "ExpressionStatement", + "src": "5274:30:130" + } + ] + }, + "documentation": "@dev Private function to add a token to this extension's ownership-tracking data structures.\n@param to address representing the new owner of the given token ID\n@param tokenId uint256 ID of the token to be added to the tokens list of the given address", + "id": 11451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnerEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11429, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11451, + "src": "5165:10:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11428, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5165:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11431, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11451, + "src": "5177:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5177:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5164:29:130" + }, + "returnParameters": { + "id": 11433, + "nodeType": "ParameterList", + "parameters": [], + "src": "5202:0:130" + }, + "scope": 11577, + "src": "5128:183:130", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 11469, + "nodeType": "Block", + "src": "5572:95:130", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11456, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "5582:15:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11458, + "indexExpression": { + "argumentTypes": null, + "id": 11457, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11453, + "src": "5598:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5582:24:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11459, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "5609:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11460, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5609:17:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5582:44:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11462, + "nodeType": "ExpressionStatement", + "src": "5582:44:130" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11466, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11453, + "src": "5652:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11463, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "5636:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5636:15:130", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 11467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5636:24:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11468, + "nodeType": "ExpressionStatement", + "src": "5636:24:130" + } + ] + }, + "documentation": "@dev Private function to add a token to this extension's token tracking data structures.\n@param tokenId uint256 ID of the token to be added to the tokens list", + "id": 11470, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11453, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11470, + "src": "5547:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5547:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5546:17:130" + }, + "returnParameters": { + "id": 11455, + "nodeType": "ParameterList", + "parameters": [], + "src": "5572:0:130" + }, + "scope": 11577, + "src": "5506:161:130", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 11526, + "nodeType": "Block", + "src": "6365:1047:130", + "statements": [ + { + "assignments": [ + 11478 + ], + "declarations": [ + { + "constant": false, + "id": 11478, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 11526, + "src": "6546:22:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6546:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11486, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 11484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6601:1:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11479, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "6571:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11481, + "indexExpression": { + "argumentTypes": null, + "id": 11480, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11472, + "src": "6584:4:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6571:18:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11482, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6571:25:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "6571:29:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6571:32:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6546:57:130" + }, + { + "assignments": [ + 11488 + ], + "declarations": [ + { + "constant": false, + "id": 11488, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 11526, + "src": "6613:18:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6613:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11492, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11489, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11260, + "src": "6634:17:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11491, + "indexExpression": { + "argumentTypes": null, + "id": 11490, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11474, + "src": "6652:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6634:26:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6613:47:130" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11493, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11488, + "src": "6764:10:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 11494, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11478, + "src": "6778:14:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6764:28:130", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 11519, + "nodeType": "IfStatement", + "src": "6760:323:130", + "trueBody": { + "id": 11518, + "nodeType": "Block", + "src": "6794:289:130", + "statements": [ + { + "assignments": [ + 11497 + ], + "declarations": [ + { + "constant": false, + "id": 11497, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 11518, + "src": "6808:19:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6808:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11503, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11498, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "6830:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11500, + "indexExpression": { + "argumentTypes": null, + "id": 11499, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11472, + "src": "6843:4:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6830:18:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11502, + "indexExpression": { + "argumentTypes": null, + "id": 11501, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11478, + "src": "6849:14:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6830:34:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6808:56:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11504, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "6879:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11507, + "indexExpression": { + "argumentTypes": null, + "id": 11505, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11472, + "src": "6892:4:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6879:18:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11508, + "indexExpression": { + "argumentTypes": null, + "id": 11506, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11488, + "src": "6898:10:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6879:30:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11509, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11497, + "src": "6912:11:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6879:44:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11511, + "nodeType": "ExpressionStatement", + "src": "6879:44:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11512, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11260, + "src": "6995:17:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11514, + "indexExpression": { + "argumentTypes": null, + "id": 11513, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11497, + "src": "7013:11:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6995:30:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11515, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11488, + "src": "7028:10:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6995:43:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11517, + "nodeType": "ExpressionStatement", + "src": "6995:43:130" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 11524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "7169:27:130", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11520, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "7169:12:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 11522, + "indexExpression": { + "argumentTypes": null, + "id": 11521, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11472, + "src": "7182:4:130", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7169:18:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11523, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7169:25:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11525, + "nodeType": "ExpressionStatement", + "src": "7169:27:130" + } + ] + }, + "documentation": "@dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\nwhile the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\ngas optimizations e.g. when performing a transfer operation (avoiding double writes).\nThis has O(1) time complexity, but alters the order of the _ownedTokens array.\n@param from address representing the previous owner of the given token ID\n@param tokenId uint256 ID of the token to be removed from the tokens list of the given address", + "id": 11527, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11472, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 11527, + "src": "6326:12:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6326:7:130", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11474, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11527, + "src": "6340:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6340:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6325:31:130" + }, + "returnParameters": { + "id": 11476, + "nodeType": "ParameterList", + "parameters": [], + "src": "6365:0:130" + }, + "scope": 11577, + "src": "6284:1128:130", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 11575, + "nodeType": "Block", + "src": "7771:993:130", + "statements": [ + { + "assignments": [ + 11533 + ], + "declarations": [ + { + "constant": false, + "id": 11533, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 11575, + "src": "7949:22:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7949:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11539, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 11537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7996:1:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11534, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "7974:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11535, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7974:17:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "7974:21:130", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7974:24:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7949:49:130" + }, + { + "assignments": [ + 11541 + ], + "declarations": [ + { + "constant": false, + "id": 11541, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 11575, + "src": "8008:18:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11540, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8008:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11545, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11542, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "8029:15:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11544, + "indexExpression": { + "argumentTypes": null, + "id": 11543, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11529, + "src": "8045:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8029:24:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8008:45:130" + }, + { + "assignments": [ + 11547 + ], + "declarations": [ + { + "constant": false, + "id": 11547, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 11575, + "src": "8375:19:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8375:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11551, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11548, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "8397:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11550, + "indexExpression": { + "argumentTypes": null, + "id": 11549, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11533, + "src": "8408:14:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8397:26:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8375:48:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11552, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "8434:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11554, + "indexExpression": { + "argumentTypes": null, + "id": 11553, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11541, + "src": "8445:10:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8434:22:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11555, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11547, + "src": "8459:11:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8434:36:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11557, + "nodeType": "ExpressionStatement", + "src": "8434:36:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11558, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "8538:15:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11560, + "indexExpression": { + "argumentTypes": null, + "id": 11559, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11547, + "src": "8554:11:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8538:28:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11561, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11541, + "src": "8569:10:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8538:41:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11563, + "nodeType": "ExpressionStatement", + "src": "8538:41:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "8700:19:130", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11564, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11263, + "src": "8700:10:130", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 11566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8700:17:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11568, + "nodeType": "ExpressionStatement", + "src": "8700:19:130" + }, + { + "expression": { + "argumentTypes": null, + "id": 11573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11569, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11267, + "src": "8729:15:130", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 11571, + "indexExpression": { + "argumentTypes": null, + "id": 11570, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11529, + "src": "8745:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8729:24:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 11572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8756:1:130", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8729:28:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11574, + "nodeType": "ExpressionStatement", + "src": "8729:28:130" + } + ] + }, + "documentation": "@dev Private function to remove a token from this extension's token tracking data structures.\nThis has O(1) time complexity, but alters the order of the _allTokens array.\n@param tokenId uint256 ID of the token to be removed from the tokens list", + "id": 11576, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11529, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11576, + "src": "7746:15:130", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7746:7:130", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7745:17:130" + }, + "returnParameters": { + "id": 11531, + "nodeType": "ParameterList", + "parameters": [], + "src": "7771:0:130" + }, + "scope": 11577, + "src": "7700:1064:130", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 11578, + "src": "294:8472:130" + } + ], + "src": "0:8767:130" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506200002a6301ffc9a760e01b6200006060201b60201c565b620000426380ac58cd60e01b6200006060201b60201c565b6200005a63780e9d6360e01b6200006060201b60201c565b62000169565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620000fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611e4180620001796000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610401578063a22cb46514610459578063b88d4fde146104a9578063e985e9c5146105ae576100cf565b806342842e0e146102e35780634f6ccce7146103515780636352211e14610393576100cf565b806301ffc9a7146100d4578063081812fc14610139578063095ea7b3146101a757806318160ddd146101f557806323b872dd146102135780632f745c5914610281575b600080fd5b61011f600480360360208110156100ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061062a565b604051808215151515815260200191505060405180910390f35b6101656004803603602081101561014f57600080fd5b8101908080359060200190929190505050610691565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f3600480360360408110156101bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072c565b005b6101fd610913565b6040518082815260200191505060405180910390f35b61027f6004803603606081101561022957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610920565b005b6102cd6004803603604081101561029757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610996565b6040518082815260200191505060405180910390f35b61034f600480360360608110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a55565b005b61037d6004803603602081101561036757600080fd5b8101908080359060200190929190505050610a75565b6040518082815260200191505060405180910390f35b6103bf600480360360208110156103a957600080fd5b8101908080359060200190929190505050610af5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104436004803603602081101561041757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bbd565b6040518082815260200191505060405180910390f35b6104a76004803603604081101561046f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610c92565b005b6105ac600480360360808110156104bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e4a565b005b610610600480360360408110156105c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec2565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061069c82610f56565b6106f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611d3a602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061073782610af5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611d8f6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107dd610fc8565b73ffffffffffffffffffffffffffffffffffffffff16148061080c575061080b81610806610fc8565b610ec2565b5b610861576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611caf6038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b61093161092b610fc8565b82610fd0565b610986576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611db06031913960400191505060405180910390fd5b6109918383836110c4565b505050565b60006109a183610bbd565b82106109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611c02602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610a4257fe5b9060005260206000200154905092915050565b610a7083838360405180602001604052806000815250610e4a565b505050565b6000610a7f610913565b8210610ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611de1602c913960400191505060405180910390fd5b60078281548110610ae357fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611d116029913960400191505060405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611ce7602a913960400191505060405180910390fd5b610c8b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206110e8565b9050919050565b610c9a610fc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000610d48610fc8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610df5610fc8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610e5b610e55610fc8565b83610fd0565b610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611db06031913960400191505060405180910390fd5b610ebc848484846110f6565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000610fdb82610f56565b611030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611c83602c913960400191505060405180910390fd5b600061103b83610af5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110aa57508373ffffffffffffffffffffffffffffffffffffffff1661109284610691565b73ffffffffffffffffffffffffffffffffffffffff16145b806110bb57506110ba8185610ec2565b5b91505092915050565b6110cf838383611168565b6110d983826113c3565b6110e38282611561565b505050565b600081600001549050919050565b6111018484846110c4565b61110d84848484611628565b611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611c2d6032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff1661118882610af5565b73ffffffffffffffffffffffffffffffffffffffff16146111f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611d666029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611c5f6024913960400191505060405180910390fd5b61128381611964565b6112ca600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611a22565b611311600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611a45565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061141b6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611a5b90919063ffffffff16565b9050600060066000848152602001908152602001600020549050818114611508576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061148857fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106114e057fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361155a9190611bb0565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b60006116498473ffffffffffffffffffffffffffffffffffffffff16611aa5565b611656576001905061195c565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b61169a610fc8565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561174a57808201518184015260208101905061172f565b50505050905090810190601f1680156117775780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061180f57805182526020820191506020810190506020830392506117ec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611871576040519150601f19603f3d011682016040523d82523d6000602084013e611876565b606091505b5091509150816118e4576000815111156118935780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611c2d6032913960400191505060405180910390fd5b60008180602001905160208110156118fb57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b611a3a60018260000154611a5b90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000611a9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af0565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611ae757506000801b8214155b92505050919050565b6000838311158290611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b62578082015181840152602081019050611b47565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b815481835581811115611bd757818360005260206000209182019101611bd69190611bdc565b5b505050565b611bfe91905b80821115611bfa576000816000905550600101611be2565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a723158205b05b28f1a455dbb946f41bee7022524cea7c1e762cbcf3ab5f447fe5ab5937a64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610401578063a22cb46514610459578063b88d4fde146104a9578063e985e9c5146105ae576100cf565b806342842e0e146102e35780634f6ccce7146103515780636352211e14610393576100cf565b806301ffc9a7146100d4578063081812fc14610139578063095ea7b3146101a757806318160ddd146101f557806323b872dd146102135780632f745c5914610281575b600080fd5b61011f600480360360208110156100ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061062a565b604051808215151515815260200191505060405180910390f35b6101656004803603602081101561014f57600080fd5b8101908080359060200190929190505050610691565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101f3600480360360408110156101bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072c565b005b6101fd610913565b6040518082815260200191505060405180910390f35b61027f6004803603606081101561022957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610920565b005b6102cd6004803603604081101561029757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610996565b6040518082815260200191505060405180910390f35b61034f600480360360608110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a55565b005b61037d6004803603602081101561036757600080fd5b8101908080359060200190929190505050610a75565b6040518082815260200191505060405180910390f35b6103bf600480360360208110156103a957600080fd5b8101908080359060200190929190505050610af5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104436004803603602081101561041757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bbd565b6040518082815260200191505060405180910390f35b6104a76004803603604081101561046f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610c92565b005b6105ac600480360360808110156104bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561052657600080fd5b82018360208201111561053857600080fd5b8035906020019184600183028401116401000000008311171561055a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e4a565b005b610610600480360360408110156105c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec2565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061069c82610f56565b6106f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611d3a602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061073782610af5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611d8f6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107dd610fc8565b73ffffffffffffffffffffffffffffffffffffffff16148061080c575061080b81610806610fc8565b610ec2565b5b610861576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611caf6038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b61093161092b610fc8565b82610fd0565b610986576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611db06031913960400191505060405180910390fd5b6109918383836110c4565b505050565b60006109a183610bbd565b82106109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611c02602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610a4257fe5b9060005260206000200154905092915050565b610a7083838360405180602001604052806000815250610e4a565b505050565b6000610a7f610913565b8210610ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611de1602c913960400191505060405180910390fd5b60078281548110610ae357fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611d116029913960400191505060405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611ce7602a913960400191505060405180910390fd5b610c8b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206110e8565b9050919050565b610c9a610fc8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000610d48610fc8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610df5610fc8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610e5b610e55610fc8565b83610fd0565b610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611db06031913960400191505060405180910390fd5b610ebc848484846110f6565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000610fdb82610f56565b611030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611c83602c913960400191505060405180910390fd5b600061103b83610af5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110aa57508373ffffffffffffffffffffffffffffffffffffffff1661109284610691565b73ffffffffffffffffffffffffffffffffffffffff16145b806110bb57506110ba8185610ec2565b5b91505092915050565b6110cf838383611168565b6110d983826113c3565b6110e38282611561565b505050565b600081600001549050919050565b6111018484846110c4565b61110d84848484611628565b611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611c2d6032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff1661118882610af5565b73ffffffffffffffffffffffffffffffffffffffff16146111f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611d666029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611c5f6024913960400191505060405180910390fd5b61128381611964565b6112ca600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611a22565b611311600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611a45565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061141b6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611a5b90919063ffffffff16565b9050600060066000848152602001908152602001600020549050818114611508576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061148857fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106114e057fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361155a9190611bb0565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b60006116498473ffffffffffffffffffffffffffffffffffffffff16611aa5565b611656576001905061195c565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b61169a610fc8565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561174a57808201518184015260208101905061172f565b50505050905090810190601f1680156117775780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061180f57805182526020820191506020810190506020830392506117ec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611871576040519150601f19603f3d011682016040523d82523d6000602084013e611876565b606091505b5091509150816118e4576000815111156118935780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611c2d6032913960400191505060405180910390fd5b60008180602001905160208110156118fb57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b611a3a60018260000154611a5b90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000611a9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af0565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611ae757506000801b8214155b92505050919050565b6000838311158290611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b62578082015181840152602081019050611b47565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b815481835581811115611bd757818360005260206000209182019101611bd69190611bdc565b5b505050565b611bfe91905b80821115611bfa576000816000905550600101611be2565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a723158205b05b28f1a455dbb946f41bee7022524cea7c1e762cbcf3ab5f447fe5ab5937a64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Full.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Full.json new file mode 100644 index 0000000..8679308 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Full.json @@ -0,0 +1,751 @@ +{ + "fileName": "ERC721Full.sol", + "contractName": "ERC721Full", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\nimport \"./ERC721Enumerable.sol\";\nimport \"./ERC721Metadata.sol\";\n\n/**\n * @title Full ERC721 Token\n * @dev This implementation includes all the required and some optional functionality of the ERC721 standard\n * Moreover, it includes approve all functionality using operator terminology.\n *\n * See https://eips.ethereum.org/EIPS/eip-721\n */\ncontract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata {\n constructor (string memory name, string memory symbol) public ERC721Metadata(name, symbol) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Full.sol", + "sourceMap": "386:227:131:-;;;456:155;8:9:-1;5:2;;;30:1;27;20:12;5:2;456:155:131;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;456:155:131;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;456:155:131;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;456:155:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;456:155:131;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;456:155:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;533:4;539:6;718:40:37;385:10;737:20;;718:18;;;:40;;:::i;:::-;2262::128;2136:10;2281:20;;2262:18;;;:40;;:::i;:::-;1357:51:130;1172:10;1376:31;;1357:18;;;:51;;:::i;:::-;920:4:133;912:5;:12;;;;;;;;;;;;:::i;:::-;;944:6;934:7;:16;;;;;;;;;;;;:::i;:::-;;1038:49;774:10;1057:29;;1038:18;;;:49;;:::i;:::-;840:254;;456:155:131;;386:227;;1442:190:37;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;386:227:131:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "386:227:131:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;386:227:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1199:83:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1199:83:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:200:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:200:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3583:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3583:415:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2171:94:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5929:287:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5929:287:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1789:229:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1789:229:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6865:132:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6865:132:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2603:196:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2603:196:130;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2939:223:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:223:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3387:89:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3387:89:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:207:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2513:207:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1391:87:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1391:87:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4776:249:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4776:249:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7720:269;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7720:269:128;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7720:269:128;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7720:269:128;;;;;;;;;;;;;;;:::i;:::-;;1781:545:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1781:545:133;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1781:545:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:145:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5347:145:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:133:37;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;1199:83:133:-;1238:13;1270:5;1263:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:83;:::o;4283:200:128:-;4342:7;4369:16;4377:7;4369;:16::i;:::-;4361:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:15;:24;4468:7;4452:24;;;;;;;;;;;;;;;;;;;;;4445:31;;4283:200;;;:::o;3583:415::-;3646:13;3662:16;3670:7;3662;:16::i;:::-;3646:32;;3702:5;3696:11;;:2;:11;;;;3688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:5;3764:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3789:37;3806:5;3813:12;:10;:12::i;:::-;3789:16;:37::i;:::-;3764:62;3756:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:2;3919:15;:24;3935:7;3919:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3983:7;3979:2;3963:28;;3972:5;3963:28;;;;;;;;;;;;3583:415;;;:::o;2171:94:130:-;2215:7;2241:10;:17;;;;2234:24;;2171:94;:::o;5929:287:128:-;6071:41;6090:12;:10;:12::i;:::-;6104:7;6071:18;:41::i;:::-;6063:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:32;6191:4;6197:2;6201:7;6177:13;:32::i;:::-;5929:287;;;:::o;1789:229:130:-;1869:7;1904:16;1914:5;1904:9;:16::i;:::-;1896:5;:24;1888:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1985:12;:19;1998:5;1985:19;;;;;;;;;;;;;;;2005:5;1985:26;;;;;;;;;;;;;;;;1978:33;;1789:229;;;;:::o;6865:132:128:-;6951:39;6968:4;6974:2;6978:7;6951:39;;;;;;;;;;;;:16;:39::i;:::-;6865:132;;;:::o;2603:196:130:-;2661:7;2696:13;:11;:13::i;:::-;2688:5;:21;2680:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:10;2786:5;2775:17;;;;;;;;;;;;;;;;2768:24;;2603:196;;;:::o;2939:223:128:-;2994:7;3013:13;3029:11;:20;3041:7;3029:20;;;;;;;;;;;;;;;;;;;;;3013:36;;3084:1;3067:19;;:5;:19;;;;3059:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:5;3143:12;;;2939:223;;;:::o;3387:89:133:-;3429:13;3461:8;3454:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:89;:::o;2513:207:128:-;2568:7;2612:1;2595:19;;:5;:19;;;;2587:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:34;:17;:24;2697:5;2679:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2672:41;;2513:207;;;:::o;1391:87:133:-;1432:13;1464:7;1457:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:87;:::o;4776:249:128:-;4861:12;:10;:12::i;:::-;4855:18;;:2;:18;;;;4847:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:8;4914:18;:32;4933:12;:10;:12::i;:::-;4914:32;;;;;;;;;;;;;;;:36;4947:2;4914:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5005:2;4976:42;;4991:12;:10;:12::i;:::-;4976:42;;;5009:8;4976:42;;;;;;;;;;;;;;;;;;;;;;4776:249;;:::o;7720:269::-;7834:41;7853:12;:10;:12::i;:::-;7867:7;7834:18;:41::i;:::-;7826:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:43;7957:4;7963:2;7967:7;7976:5;7939:17;:43::i;:::-;7720:269;;;;:::o;1781:545:133:-;1839:13;1872:16;1880:7;1872;:16::i;:::-;1864:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:23;1977:10;:19;1988:7;1977:19;;;;;;;;;;;1951:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:1;2110:9;2104:23;:28;2100:220;;;2148:9;;;;;;;;;;;;;;;;;2100:220;2288:8;2298:9;2271:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2271:37:133;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2271:37:133;;;2257:52;;;1781:545;;;;:::o;5347:145:128:-;5427:4;5450:18;:25;5469:5;5450:25;;;;;;;;;;;;;;;:35;5476:8;5450:35;;;;;;;;;;;;;;;;;;;;;;;;;5443:42;;5347:145;;;;:::o;9158:152::-;9215:4;9231:13;9247:11;:20;9259:7;9247:20;;;;;;;;;;;;;;;;;;;;;9231:36;;9301:1;9284:19;;:5;:19;;;;9277:26;;;9158:152;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;9671:329:128:-;9756:4;9780:16;9788:7;9780;:16::i;:::-;9772:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:13;9871:16;9879:7;9871;:16::i;:::-;9855:32;;9916:5;9905:16;;:7;:16;;;:51;;;;9949:7;9925:31;;:20;9937:7;9925:11;:20::i;:::-;:31;;;9905:51;:87;;;;9960:32;9977:5;9984:7;9960:16;:32::i;:::-;9905:87;9897:96;;;9671:329;;;;:::o;3174:239:130:-;3259:38;3279:4;3285:2;3289:7;3259:19;:38::i;:::-;3308:47;3341:4;3347:7;3308:32;:47::i;:::-;3366:40;3394:2;3398:7;3366:27;:40::i;:::-;3174:239;;;:::o;1065:112:28:-;1130:7;1156;:14;;;1149:21;;1065:112;;;:::o;8694:269:128:-;8803:32;8817:4;8823:2;8827:7;8803:13;:32::i;:::-;8853:48;8876:4;8882:2;8886:7;8895:5;8853:22;:48::i;:::-;8845:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8694:269;;;;:::o;13281:447::-;13394:4;13374:24;;:16;13382:7;13374;:16::i;:::-;:24;;;13366:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:1;13462:16;;:2;:16;;;;13454:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:23;13545:7;13530:14;:23::i;:::-;13564:35;:17;:23;13582:4;13564:23;;;;;;;;;;;;;;;:33;:35::i;:::-;13609:33;:17;:21;13627:2;13609:21;;;;;;;;;;;;;;;:31;:33::i;:::-;13676:2;13653:11;:20;13665:7;13653:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13713:7;13709:2;13694:27;;13703:4;13694:27;;;;;;;;;;;;13281:447;;;:::o;6284:1128:130:-;6546:22;6571:32;6601:1;6571:12;:18;6584:4;6571:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;6546:57;;6613:18;6634:17;:26;6652:7;6634:26;;;;;;;;;;;;6613:47;;6778:14;6764:10;:28;6760:323;;6808:19;6830:12;:18;6843:4;6830:18;;;;;;;;;;;;;;;6849:14;6830:34;;;;;;;;;;;;;;;;6808:56;;6912:11;6879:12;:18;6892:4;6879:18;;;;;;;;;;;;;;;6898:10;6879:30;;;;;;;;;;;;;;;:44;;;;7028:10;6995:17;:30;7013:11;6995:30;;;;;;;;;;;:43;;;;6760:323;;7169:12;:18;7182:4;7169:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;6284:1128;;;;:::o;5128:183::-;5241:12;:16;5254:2;5241:16;;;;;;;;;;;;;;;:23;;;;5212:17;:26;5230:7;5212:26;;;;;;;;;;;:52;;;;5274:12;:16;5287:2;5274:16;;;;;;;;;;;;;;;5296:7;5274:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5274:30:130;;;;;;;;;;;;;;;;;;;;;;5128:183;;:::o;14367:1051:128:-;14488:4;14513:15;:2;:13;;;:15::i;:::-;14508:58;;14551:4;14544:11;;;;14508:58;14635:12;14649:23;14676:2;:7;;14736:2;14720:36;;;:45;;;;14779:12;:10;:12::i;:::-;14805:4;14823:7;14844:5;14684:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14684:175:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14684:175:128;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;14684:175:128;14676:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14676:184:128;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14634:226:128;;;;14875:7;14870:542;;14922:1;14902:10;:17;:21;14898:376;;;15067:10;15061:17;15127:15;15114:10;15110:2;15106:19;15099:44;15016:145;15199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14870:542;15304:13;15331:10;15320:32;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:32:128;;;;;;;;;;;;;;;;15304:48;;754:10;15384:16;;15374:26;;;:6;:26;;;;15366:35;;;;;14367:1051;;;;;;;:::o;15580:171::-;15679:1;15643:38;;:15;:24;15659:7;15643:24;;;;;;;;;;;;;;;;;;;;;:38;;;15639:106;;15732:1;15697:15;:24;15713:7;15697:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15639:106;15580:171;:::o;1367:108:28:-;1447:21;1466:1;1447:7;:14;;;:18;;:21;;;;:::i;:::-;1430:7;:14;;:38;;;;1367:108;:::o;1183:178::-;1353:1;1335:7;:14;;;:19;;;;;;;;;;;1183:178;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;386:227:131:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Full.sol", + "exportedSymbols": { + "ERC721Full": [ + 11601 + ] + }, + "id": 11602, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11579, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:131" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 11580, + "nodeType": "ImportDirective", + "scope": 11602, + "sourceUnit": 11210, + "src": "25:22:131", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Enumerable.sol", + "file": "./ERC721Enumerable.sol", + "id": 11581, + "nodeType": "ImportDirective", + "scope": 11602, + "sourceUnit": 11578, + "src": "48:32:131", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Metadata.sol", + "file": "./ERC721Metadata.sol", + "id": 11582, + "nodeType": "ImportDirective", + "scope": 11602, + "sourceUnit": 11799, + "src": "81:30:131", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11583, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11209, + "src": "409:6:131", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11209", + "typeString": "contract ERC721" + } + }, + "id": 11584, + "nodeType": "InheritanceSpecifier", + "src": "409:6:131" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11585, + "name": "ERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11577, + "src": "417:16:131", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Enumerable_$11577", + "typeString": "contract ERC721Enumerable" + } + }, + "id": 11586, + "nodeType": "InheritanceSpecifier", + "src": "417:16:131" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11587, + "name": "ERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11798, + "src": "435:14:131", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Metadata_$11798", + "typeString": "contract ERC721Metadata" + } + }, + "id": 11588, + "nodeType": "InheritanceSpecifier", + "src": "435:14:131" + } + ], + "contractDependencies": [ + 26, + 4629, + 4862, + 11209, + 11577, + 11798, + 12070, + 12097, + 12132 + ], + "contractKind": "contract", + "documentation": "@title Full ERC721 Token\n@dev This implementation includes all the required and some optional functionality of the ERC721 standard\nMoreover, it includes approve all functionality using operator terminology.\n * See https://eips.ethereum.org/EIPS/eip-721", + "fullyImplemented": true, + "id": 11601, + "linearizedBaseContracts": [ + 11601, + 11798, + 12132, + 11577, + 12097, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721Full", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11599, + "nodeType": "Block", + "src": "547:64:131", + "statements": [] + }, + "documentation": null, + "id": 11600, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 11595, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11590, + "src": "533:4:131", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 11596, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11592, + "src": "539:6:131", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 11597, + "modifierName": { + "argumentTypes": null, + "id": 11594, + "name": "ERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11798, + "src": "518:14:131", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Metadata_$11798_$", + "typeString": "type(contract ERC721Metadata)" + } + }, + "nodeType": "ModifierInvocation", + "src": "518:28:131" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11590, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 11600, + "src": "469:18:131", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11589, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "469:6:131", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11592, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 11600, + "src": "489:20:131", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11591, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "489:6:131", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "468:42:131" + }, + "returnParameters": { + "id": 11598, + "nodeType": "ParameterList", + "parameters": [], + "src": "547:0:131" + }, + "scope": 11601, + "src": "456:155:131", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 11602, + "src": "386:227:131" + } + ], + "src": "0:614:131" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620028df380380620028df833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508181620001cf6301ffc9a760e01b6200025360201b60201c565b620001e76380ac58cd60e01b6200025360201b60201c565b620001ff63780e9d6360e01b6200025360201b60201c565b8160099080519060200190620002179291906200035c565b5080600a9080519060200190620002309291906200035c565b5062000249635b5e139f60e01b6200025360201b60201c565b505050506200040b565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039f57805160ff1916838001178555620003d0565b82800160010185558215620003d0579182015b82811115620003cf578251825591602001919060010190620003b2565b5b509050620003df9190620003e3565b5090565b6200040891905b8082111562000404576000816000905550600101620003ea565b5090565b90565b6124c4806200041b6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b411461059b578063a22cb4651461061e578063b88d4fde1461066e578063c87b56dd14610773578063e985e9c51461081a5761010b565b80634f6ccce7146104105780636352211e146104525780636c0360eb146104c057806370a08231146105435761010b565b806318160ddd116100de57806318160ddd146102b457806323b872dd146102d25780632f745c591461034057806342842e0e146103a25761010b565b806301ffc9a71461011057806306fdde0314610175578063081812fc146101f8578063095ea7b314610266575b600080fd5b61015b6004803603602081101561012657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610896565b604051808215151515815260200191505060405180910390f35b61017d6108fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bd5780820151818401526020810190506101a2565b50505050905090810190601f1680156101ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102246004803603602081101561020e57600080fd5b810190808035906020019092919050505061099f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b26004803603604081101561027c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a3a565b005b6102bc610c21565b6040518082815260200191505060405180910390f35b61033e600480360360608110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2e565b005b61038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca4565b6040518082815260200191505060405180910390f35b61040e600480360360608110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d63565b005b61043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050610d83565b6040518082815260200191505060405180910390f35b61047e6004803603602081101561046857600080fd5b8101908080359060200190929190505050610e03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c8610ecb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105085780820151818401526020810190506104ed565b50505050905090810190601f1680156105355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105856004803603602081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6d565b6040518082815260200191505060405180910390f35b6105a3611042565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e35780820151818401526020810190506105c8565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066c6004803603604081101561063457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506110e4565b005b6107716004803603608081101561068457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106eb57600080fd5b8201836020820111156106fd57600080fd5b8035906020019184600183028401116401000000008311171561071f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061129c565b005b61079f6004803603602081101561078957600080fd5b8101908080359060200190929190505050611314565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107df5780820151818401526020810190506107c4565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61087c6004803603604081101561083057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611516565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b60006109aa826115aa565b6109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061238e602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4582610e03565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610acc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124126021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aeb61161c565b73ffffffffffffffffffffffffffffffffffffffff161480610b1a5750610b1981610b1461161c565b611516565b5b610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806123036038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610c3f610c3961161c565b82611624565b610c94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806124336031913960400191505060405180910390fd5b610c9f838383611718565b505050565b6000610caf83610f6d565b8210610d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612256602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d5057fe5b9060005260206000200154905092915050565b610d7e8383836040518060200160405280600081525061129c565b505050565b6000610d8d610c21565b8210610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612464602c913960400191505060405180910390fd5b60078281548110610df157fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ec2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806123656029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061233b602a913960400191505060405180910390fd5b61103b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061173c565b9050919050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b5050505050905090565b6110ec61161c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561118d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061119a61161c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661124761161c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6112ad6112a761161c565b83611624565b611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806124336031913960400191505060405180910390fd5b61130e8484848461174a565b50505050565b606061131f826115aa565b611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806123e3602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561141d5780601f106113f25761010080835404028352916020019161141d565b820191906000526020600020905b81548152906001019060200180831161140057829003601f168201915b505050505090506000815114156114465760405180602001604052806000815250915050611511565b600b8160405160200180838054600181600116156101000203166002900480156114a75780601f106114855761010080835404028352918201916114a7565b820191906000526020600020905b815481529060010190602001808311611493575b505082805190602001908083835b602083106114d857805182526020820191506020810190506020830392506114b5565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b600061162f826115aa565b611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806122d7602c913960400191505060405180910390fd5b600061168f83610e03565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116fe57508373ffffffffffffffffffffffffffffffffffffffff166116e68461099f565b73ffffffffffffffffffffffffffffffffffffffff16145b8061170f575061170e8185611516565b5b91505092915050565b6117238383836117bc565b61172d8382611a17565b6117378282611bb5565b505050565b600081600001549050919050565b611755848484611718565b61176184848484611c7c565b6117b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122816032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff166117dc82610e03565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806123ba6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806122b36024913960400191505060405180910390fd5b6118d781611fb8565b61191e600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612076565b611965600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612099565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611a6f6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506120af90919063ffffffff16565b9050600060066000848152602001908152602001600020549050818114611b5c576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611adc57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611b3457fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003611bae9190612204565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b6000611c9d8473ffffffffffffffffffffffffffffffffffffffff166120f9565b611caa5760019050611fb0565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b611cee61161c565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d9e578082015181840152602081019050611d83565b50505050905090810190601f168015611dcb5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611e635780518252602082019150602081019050602083039250611e40565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ec5576040519150601f19603f3d011682016040523d82523d6000602084013e611eca565b606091505b509150915081611f3857600081511115611ee75780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122816032913960400191505060405180910390fd5b6000818060200190516020811015611f4f57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120735760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b61208e600182600001546120af90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006120f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612144565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561213b57506000801b8214155b92505050919050565b60008383111582906121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121b657808201518184015260208101905061219b565b50505050905090810190601f1680156121e35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b81548183558181111561222b5781836000526020600020918201910161222a9190612230565b5b505050565b61225291905b8082111561224e576000816000905550600101612236565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a72315820eb66e02d69ad496d42fa2a8d61b51e031b5a78a2f2d25c66dca671fe2e2f646664736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b411461059b578063a22cb4651461061e578063b88d4fde1461066e578063c87b56dd14610773578063e985e9c51461081a5761010b565b80634f6ccce7146104105780636352211e146104525780636c0360eb146104c057806370a08231146105435761010b565b806318160ddd116100de57806318160ddd146102b457806323b872dd146102d25780632f745c591461034057806342842e0e146103a25761010b565b806301ffc9a71461011057806306fdde0314610175578063081812fc146101f8578063095ea7b314610266575b600080fd5b61015b6004803603602081101561012657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610896565b604051808215151515815260200191505060405180910390f35b61017d6108fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bd5780820151818401526020810190506101a2565b50505050905090810190601f1680156101ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102246004803603602081101561020e57600080fd5b810190808035906020019092919050505061099f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b26004803603604081101561027c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a3a565b005b6102bc610c21565b6040518082815260200191505060405180910390f35b61033e600480360360608110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2e565b005b61038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca4565b6040518082815260200191505060405180910390f35b61040e600480360360608110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d63565b005b61043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050610d83565b6040518082815260200191505060405180910390f35b61047e6004803603602081101561046857600080fd5b8101908080359060200190929190505050610e03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c8610ecb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105085780820151818401526020810190506104ed565b50505050905090810190601f1680156105355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105856004803603602081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6d565b6040518082815260200191505060405180910390f35b6105a3611042565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e35780820151818401526020810190506105c8565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066c6004803603604081101561063457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506110e4565b005b6107716004803603608081101561068457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106eb57600080fd5b8201836020820111156106fd57600080fd5b8035906020019184600183028401116401000000008311171561071f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061129c565b005b61079f6004803603602081101561078957600080fd5b8101908080359060200190929190505050611314565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107df5780820151818401526020810190506107c4565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61087c6004803603604081101561083057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611516565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b60006109aa826115aa565b6109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061238e602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4582610e03565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610acc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124126021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610aeb61161c565b73ffffffffffffffffffffffffffffffffffffffff161480610b1a5750610b1981610b1461161c565b611516565b5b610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806123036038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610c3f610c3961161c565b82611624565b610c94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806124336031913960400191505060405180910390fd5b610c9f838383611718565b505050565b6000610caf83610f6d565b8210610d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612256602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d5057fe5b9060005260206000200154905092915050565b610d7e8383836040518060200160405280600081525061129c565b505050565b6000610d8d610c21565b8210610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612464602c913960400191505060405180910390fd5b60078281548110610df157fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ec2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806123656029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061233b602a913960400191505060405180910390fd5b61103b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061173c565b9050919050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b5050505050905090565b6110ec61161c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561118d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061119a61161c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661124761161c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6112ad6112a761161c565b83611624565b611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806124336031913960400191505060405180910390fd5b61130e8484848461174a565b50505050565b606061131f826115aa565b611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806123e3602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561141d5780601f106113f25761010080835404028352916020019161141d565b820191906000526020600020905b81548152906001019060200180831161140057829003601f168201915b505050505090506000815114156114465760405180602001604052806000815250915050611511565b600b8160405160200180838054600181600116156101000203166002900480156114a75780601f106114855761010080835404028352918201916114a7565b820191906000526020600020905b815481529060010190602001808311611493575b505082805190602001908083835b602083106114d857805182526020820191506020810190506020830392506114b5565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b600061162f826115aa565b611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806122d7602c913960400191505060405180910390fd5b600061168f83610e03565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116fe57508373ffffffffffffffffffffffffffffffffffffffff166116e68461099f565b73ffffffffffffffffffffffffffffffffffffffff16145b8061170f575061170e8185611516565b5b91505092915050565b6117238383836117bc565b61172d8382611a17565b6117378282611bb5565b505050565b600081600001549050919050565b611755848484611718565b61176184848484611c7c565b6117b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122816032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff166117dc82610e03565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806123ba6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806122b36024913960400191505060405180910390fd5b6118d781611fb8565b61191e600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612076565b611965600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612099565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611a6f6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506120af90919063ffffffff16565b9050600060066000848152602001908152602001600020549050818114611b5c576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611adc57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611b3457fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003611bae9190612204565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b6000611c9d8473ffffffffffffffffffffffffffffffffffffffff166120f9565b611caa5760019050611fb0565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b611cee61161c565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d9e578082015181840152602081019050611d83565b50505050905090810190601f168015611dcb5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611e635780518252602082019150602081019050602083039250611e40565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ec5576040519150601f19603f3d011682016040523d82523d6000602084013e611eca565b606091505b509150915081611f3857600081511115611ee75780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806122816032913960400191505060405180910390fd5b6000818060200190516020811015611f4f57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120735760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b61208e600182600001546120af90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006120f183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612144565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561213b57506000801b8214155b92505050919050565b60008383111582906121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121b657808201518184015260208101905061219b565b50505050905090810190601f1680156121e35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b81548183558181111561222b5781836000526020600020918201910161222a9190612230565b5b505050565b61225291905b8082111561224e576000816000905550600101612236565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a72315820eb66e02d69ad496d42fa2a8d61b51e031b5a78a2f2d25c66dca671fe2e2f646664736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721FullMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721FullMock.json new file mode 100644 index 0000000..6d8b3c0 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721FullMock.json @@ -0,0 +1,1652 @@ +{ + "fileName": "ERC721FullMock.sol", + "contractName": "ERC721FullMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC721/ERC721Full.sol\";\nimport \"../token/ERC721/ERC721Mintable.sol\";\nimport \"../token/ERC721/ERC721MetadataMintable.sol\";\nimport \"../token/ERC721/ERC721Burnable.sol\";\n\n/**\n * @title ERC721FullMock\n * This mock just provides public functions for setting metadata URI, getting all tokens of an owner,\n * checking token existence, removal of a token from an address\n */\ncontract ERC721FullMock is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable {\n constructor (string memory name, string memory symbol) public ERC721Mintable() ERC721Full(name, symbol) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function exists(uint256 tokenId) public view returns (bool) {\n return _exists(tokenId);\n }\n\n function tokensOfOwner(address owner) public view returns (uint256[] memory) {\n return _tokensOfOwner(owner);\n }\n\n function setTokenURI(uint256 tokenId, string memory uri) public {\n _setTokenURI(tokenId, uri);\n }\n\n function setBaseURI(string memory baseURI) public {\n _setBaseURI(baseURI);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721FullMock.sol", + "sourceMap": "409:710:69:-;;;509:168;8:9:-1;5:2;;;30:1;27;20:12;5:2;509:168:69;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;509:168:69;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;509:168:69;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;509:168:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;509:168:69;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;509:168:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;599:4;605:6;533:4:131;539:6;718:40:37;385:10;737:20;;718:18;;;:40;;:::i;:::-;2262::128;2136:10;2281:20;;2262:18;;;:40;;:::i;:::-;1357:51:130;1172:10;1376:31;;1357:18;;;:51;;:::i;:::-;920:4:133;912:5;:12;;;;;;;;;;;;:::i;:::-;;944:6;934:7;:16;;;;;;;;;;;;:::i;:::-;;1038:49;774:10;1057:29;;1038:18;;;:49;;:::i;:::-;840:254;;456:155:131;;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;509:168:69;;409:710;;1442:190:37;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;409:710:69:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "409:710:69:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;409:710:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1199:83:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1199:83:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:200:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:200:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3583:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3583:415:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;917:107:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;917:107:69;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;917:107:69;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;917:107:69;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;917:107:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;917:107:69;;;;;;;;;;;;;;;:::i;:::-;;2171:94:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5929:287:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5929:287:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1789:229:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1789:229:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;443:132:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;443:132:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6865::128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6865:132:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;362:233:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;362:233:129;;;;;;;;;;;;;;;;;:::i;:::-;;683:100:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;683:100:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2603:196:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2603:196:130;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;557:209:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;557:209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;557:209:134;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;557:209:134;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;557:209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;557:209:134;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1030:87:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1030:87:69;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1030:87:69;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1030:87:69;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1030:87:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1030:87:69;;;;;;;;;;;;;;;:::i;:::-;;2939:223:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:223:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3387:89:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3387:89:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:207:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2513:207:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;789:122:69;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;789:122:69;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;789:122:69;;;;;;;;;;;;;;;;;1284:167:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1284:167:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1284:167:135;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1284:167:135;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1284:167:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1284:167:135;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1391:87:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1391:87:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;823:140:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;823:140:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4776:249:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4776:249:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;494:107:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7720:269:128;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7720:269:128;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7720:269:128;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7720:269:128;;;;;;;;;;;;;;;:::i;:::-;;1781:545:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1781:545:133;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1781:545:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:145:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5347:145:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:133:37;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;1199:83:133:-;1238:13;1270:5;1263:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:83;:::o;4283:200:128:-;4342:7;4369:16;4377:7;4369;:16::i;:::-;4361:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:15;:24;4468:7;4452:24;;;;;;;;;;;;;;;;;;;;;4445:31;;4283:200;;;:::o;3583:415::-;3646:13;3662:16;3670:7;3662;:16::i;:::-;3646:32;;3702:5;3696:11;;:2;:11;;;;3688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:5;3764:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3789:37;3806:5;3813:12;:10;:12::i;:::-;3789:16;:37::i;:::-;3764:62;3756:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:2;3919:15;:24;3935:7;3919:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3983:7;3979:2;3963:28;;3972:5;3963:28;;;;;;;;;;;;3583:415;;;:::o;917:107:69:-;991:26;1004:7;1013:3;991:12;:26::i;:::-;917:107;;:::o;2171:94:130:-;2215:7;2241:10;:17;;;;2234:24;;2171:94;:::o;5929:287:128:-;6071:41;6090:12;:10;:12::i;:::-;6104:7;6071:18;:41::i;:::-;6063:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:32;6191:4;6197:2;6201:7;6177:13;:32::i;:::-;5929:287;;;:::o;1789:229:130:-;1869:7;1904:16;1914:5;1904:9;:16::i;:::-;1896:5;:24;1888:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1985:12;:19;1998:5;1985:19;;;;;;;;;;;;;;;2005:5;1985:26;;;;;;;;;;;;;;;;1978:33;;1789:229;;;;:::o;443:132:135:-;513:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;529:18:135;535:2;539:7;529:5;:18::i;:::-;564:4;557:11;;443:132;;;;:::o;6865::128:-;6951:39;6968:4;6974:2;6978:7;6951:39;;;;;;;;;;;;:16;:39::i;:::-;6865:132;;;:::o;362:233:129:-;470:41;489:12;:10;:12::i;:::-;503:7;470:18;:41::i;:::-;462:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;574:14;580:7;574:5;:14::i;:::-;362:233;:::o;683:100:69:-;737:4;760:16;768:7;760;:16::i;:::-;753:23;;683:100;;;:::o;2603:196:130:-;2661:7;2696:13;:11;:13::i;:::-;2688:5;:21;2680:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:10;2786:5;2775:17;;;;;;;;;;;;;;;;2768:24;;2603:196;;;:::o;557:209:134:-;663:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;679:18:134;685:2;689:7;679:5;:18::i;:::-;707:31;720:7;729:8;707:12;:31::i;:::-;755:4;748:11;;557:209;;;;;:::o;1030:87:69:-;1090:20;1102:7;1090:11;:20::i;:::-;1030:87;:::o;2939:223:128:-;2994:7;3013:13;3029:11;:20;3041:7;3029:20;;;;;;;;;;;;;;;;;;;;;3013:36;;3084:1;3067:19;;:5;:19;;;;3059:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:5;3143:12;;;2939:223;;;:::o;3387:89:133:-;3429:13;3461:8;3454:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:89;:::o;2513:207:128:-;2568:7;2612:1;2595:19;;:5;:19;;;;2587:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:34;:17;:24;2697:5;2679:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2672:41;;2513:207;;;:::o;789:122:69:-;848:16;883:21;898:5;883:14;:21::i;:::-;876:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:122;;;:::o;1284:167:135:-;1378:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1394:29:135;1404:2;1408:7;1417:5;1394:9;:29::i;:::-;1440:4;1433:11;;1284:167;;;;;:::o;1391:87:133:-;1432:13;1464:7;1457:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:87;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;823:140:135:-;897:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:22:135;923:2;927:7;913:9;:22::i;:::-;952:4;945:11;;823:140;;;;:::o;4776:249:128:-;4861:12;:10;:12::i;:::-;4855:18;;:2;:18;;;;4847:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:8;4914:18;:32;4933:12;:10;:12::i;:::-;4914:32;;;;;;;;;;;;;;;:36;4947:2;4914:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5005:2;4976:42;;4991:12;:10;:12::i;:::-;4976:42;;;5009:8;4976:42;;;;;;;;;;;;;;;;;;;;;;4776:249;;:::o;494:107:8:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;7720:269:128:-;7834:41;7853:12;:10;:12::i;:::-;7867:7;7834:18;:41::i;:::-;7826:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:43;7957:4;7963:2;7967:7;7976:5;7939:17;:43::i;:::-;7720:269;;;;:::o;1781:545:133:-;1839:13;1872:16;1880:7;1872;:16::i;:::-;1864:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:23;1977:10;:19;1988:7;1977:19;;;;;;;;;;;1951:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:1;2110:9;2104:23;:28;2100:220;;;2148:9;;;;;;;;;;;;;;;;;2100:220;2288:8;2298:9;2271:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2271:37:133;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2271:37:133;;;2257:52;;;1781:545;;;;:::o;5347:145:128:-;5427:4;5450:18;:25;5469:5;5450:25;;;;;;;;;;;;;;;:35;5476:8;5450:35;;;;;;;;;;;;;;;;;;;;;;;;;5443:42;;5347:145;;;;:::o;9158:152::-;9215:4;9231:13;9247:11;:20;9259:7;9247:20;;;;;;;;;;;;;;;;;;;;;9231:36;;9301:1;9284:19;;:5;:19;;;;9277:26;;;9158:152;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;2650:204:133:-;2741:16;2749:7;2741;:16::i;:::-;2733:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:9;2816:10;:19;2827:7;2816:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;2650:204;;:::o;9671:329:128:-;9756:4;9780:16;9788:7;9780;:16::i;:::-;9772:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:13;9871:16;9879:7;9871;:16::i;:::-;9855:32;;9916:5;9905:16;;:7;:16;;;:51;;;;9949:7;9925:31;;:20;9937:7;9925:11;:20::i;:::-;:31;;;9905:51;:87;;;;9960:32;9977:5;9984:7;9960:16;:32::i;:::-;9905:87;9897:96;;;9671:329;;;;:::o;3174:239:130:-;3259:38;3279:4;3285:2;3289:7;3259:19;:38::i;:::-;3308:47;3341:4;3347:7;3308:32;:47::i;:::-;3366:40;3394:2;3398:7;3366:27;:40::i;:::-;3174:239;;;:::o;3670:196::-;3733:24;3745:2;3749:7;3733:11;:24::i;:::-;3768:40;3796:2;3800:7;3768:27;:40::i;:::-;3819;3851:7;3819:31;:40::i;:::-;3670:196;;:::o;12814:90:128:-;12865:32;12871:16;12879:7;12871;:16::i;:::-;12889:7;12865:5;:32::i;:::-;12814:90;:::o;3067:88:133:-;3141:7;3130:8;:18;;;;;;;;;;;;:::i;:::-;;3067:88;:::o;1065:112:28:-;1130:7;1156;:14;;;1149:21;;1065:112;;;:::o;4710:124:130:-;4772:17;4808:12;:19;4821:5;4808:19;;;;;;;;;;;;;;;4801:26;;4710:124;;;:::o;11230:239:128:-;11317:18;11323:2;11327:7;11317:5;:18::i;:::-;11353:54;11384:1;11388:2;11392:7;11401:5;11353:22;:54::i;:::-;11345:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11230:239;;;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;10529:100:128:-;10596:26;10606:2;10610:7;10596:26;;;;;;;;;;;;:9;:26::i;:::-;10529:100;;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;8694:269:128:-;8803:32;8817:4;8823:2;8827:7;8803:13;:32::i;:::-;8853:48;8876:4;8882:2;8886:7;8895:5;8853:22;:48::i;:::-;8845:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8694:269;;;;:::o;13281:447::-;13394:4;13374:24;;:16;13382:7;13374;:16::i;:::-;:24;;;13366:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:1;13462:16;;:2;:16;;;;13454:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:23;13545:7;13530:14;:23::i;:::-;13564:35;:17;:23;13582:4;13564:23;;;;;;;;;;;;;;;:33;:35::i;:::-;13609:33;:17;:21;13627:2;13609:21;;;;;;;;;;;;;;;:31;:33::i;:::-;13676:2;13653:11;:20;13665:7;13653:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13713:7;13709:2;13694:27;;13703:4;13694:27;;;;;;;;;;;;13281:447;;;:::o;6284:1128:130:-;6546:22;6571:32;6601:1;6571:12;:18;6584:4;6571:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;6546:57;;6613:18;6634:17;:26;6652:7;6634:26;;;;;;;;;;;;6613:47;;6778:14;6764:10;:28;6760:323;;6808:19;6830:12;:18;6843:4;6830:18;;;;;;;;;;;;;;;6849:14;6830:34;;;;;;;;;;;;;;;;6808:56;;6912:11;6879:12;:18;6892:4;6879:18;;;;;;;;;;;;;;;6898:10;6879:30;;;;;;;;;;;;;;;:44;;;;7028:10;6995:17;:30;7013:11;6995:30;;;;;;;;;;;:43;;;;6760:323;;7169:12;:18;7182:4;7169:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;6284:1128;;;;:::o;5128:183::-;5241:12;:16;5254:2;5241:16;;;;;;;;;;;;;;;:23;;;;5212:17;:26;5230:7;5212:26;;;;;;;;;;;:52;;;;5274:12;:16;5287:2;5274:16;;;;;;;;;;;;;;;5296:7;5274:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5274:30:130;;;;;;;;;;;;;;;;;;;;;;5128:183;;:::o;11714:327:128:-;11799:1;11785:16;;:2;:16;;;;11777:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11857:16;11865:7;11857;:16::i;:::-;11856:17;11848:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11940:2;11917:11;:20;11929:7;11917:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11952:33;:17;:21;11970:2;11952:21;;;;;;;;;;;;;;;:31;:33::i;:::-;12026:7;12022:2;12001:33;;12018:1;12001:33;;;;;;;;;;;;11714:327;;:::o;5506:161:130:-;5609:10;:17;;;;5582:15;:24;5598:7;5582:24;;;;;;;;;;;:44;;;;5636:10;5652:7;5636:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5636:24:130;;;;;;;;;;;;;;;;;;;;;;5506:161;:::o;3769:240:133:-;3835:27;3847:5;3854:7;3835:11;:27::i;:::-;3949:1;3918:10;:19;3929:7;3918:19;;;;;;;;;;;3912:33;;;;;;;;;;;;;;;;:38;3908:95;;3973:10;:19;3984:7;3973:19;;;;;;;;;;;;3966:26;;;;:::i;:::-;3908:95;3769:240;;:::o;14367:1051:128:-;14488:4;14513:15;:2;:13;;;:15::i;:::-;14508:58;;14551:4;14544:11;;;;14508:58;14635:12;14649:23;14676:2;:7;;14736:2;14720:36;;;:45;;;;14779:12;:10;:12::i;:::-;14805:4;14823:7;14844:5;14684:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14684:175:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14684:175:128;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;14684:175:128;14676:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14676:184:128;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14634:226:128;;;;14875:7;14870:542;;14922:1;14902:10;:17;:21;14898:376;;;15067:10;15061:17;15127:15;15114:10;15110:2;15106:19;15099:44;15016:145;15199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14870:542;15304:13;15331:10;15320:32;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:32:128;;;;;;;;;;;;;;;;15304:48;;754:10;15384:16;;15374:26;;;:6;:26;;;;15366:35;;;;;14367:1051;;;;;;;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o;15580:171:128:-;15679:1;15643:38;;:15;:24;15659:7;15643:24;;;;;;;;;;;;;;;;;;;;;:38;;;15639:106;;15732:1;15697:15;:24;15713:7;15697:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15639:106;15580:171;:::o;1367:108:28:-;1447:21;1466:1;1447:7;:14;;;:18;;:21;;;;:::i;:::-;1430:7;:14;;:38;;;;1367:108;:::o;1183:178::-;1353:1;1335:7;:14;;;:19;;;;;;;;;;;1183:178;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;4141:364:130:-;4207:27;4219:5;4226:7;4207:11;:27::i;:::-;4245:48;4278:5;4285:7;4245:32;:48::i;:::-;4441:1;4412:17;:26;4430:7;4412:26;;;;;;;;;;;:30;;;;4453:45;4490:7;4453:36;:45::i;:::-;4141:364;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;12309:324:128:-;12403:5;12383:25;;:16;12391:7;12383;:16::i;:::-;:25;;;12375:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12461:23;12476:7;12461:14;:23::i;:::-;12495:36;:17;:24;12513:5;12495:24;;;;;;;;;;;;;;;:34;:36::i;:::-;12572:1;12541:11;:20;12553:7;12541:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12618:7;12614:1;12590:36;;12599:5;12590:36;;;;;;;;;;;;12309:324;;:::o;7700:1064:130:-;7949:22;7974:24;7996:1;7974:10;:17;;;;:21;;:24;;;;:::i;:::-;7949:49;;8008:18;8029:15;:24;8045:7;8029:24;;;;;;;;;;;;8008:45;;8375:19;8397:10;8408:14;8397:26;;;;;;;;;;;;;;;;8375:48;;8459:11;8434:10;8445;8434:22;;;;;;;;;;;;;;;:36;;;;8569:10;8538:15;:28;8554:11;8538:28;;;;;;;;;;;:41;;;;8700:10;:19;;;;;;;;;;;;:::i;:::-;;8756:1;8729:15;:24;8745:7;8729:24;;;;;;;;;;;:28;;;;7700:1064;;;;:::o;409:710:69:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "mintWithTokenURI", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "baseURI", + "type": "string" + } + ], + "name": "setBaseURI", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "name": "setTokenURI", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "tokensOfOwner", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721FullMock.sol", + "exportedSymbols": { + "ERC721FullMock": [ + 6224 + ] + }, + "id": 6225, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6149, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:69" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Full.sol", + "file": "../token/ERC721/ERC721Full.sol", + "id": 6150, + "nodeType": "ImportDirective", + "scope": 6225, + "sourceUnit": 11602, + "src": "25:40:69", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Mintable.sol", + "file": "../token/ERC721/ERC721Mintable.sol", + "id": 6151, + "nodeType": "ImportDirective", + "scope": 6225, + "sourceUnit": 11905, + "src": "66:44:69", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721MetadataMintable.sol", + "file": "../token/ERC721/ERC721MetadataMintable.sol", + "id": 6152, + "nodeType": "ImportDirective", + "scope": 6225, + "sourceUnit": 11836, + "src": "111:52:69", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol", + "file": "../token/ERC721/ERC721Burnable.sol", + "id": 6153, + "nodeType": "ImportDirective", + "scope": 6225, + "sourceUnit": 11238, + "src": "164:44:69", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6154, + "name": "ERC721Full", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11601, + "src": "436:10:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Full_$11601", + "typeString": "contract ERC721Full" + } + }, + "id": 6155, + "nodeType": "InheritanceSpecifier", + "src": "436:10:69" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6156, + "name": "ERC721Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11904, + "src": "448:14:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Mintable_$11904", + "typeString": "contract ERC721Mintable" + } + }, + "id": 6157, + "nodeType": "InheritanceSpecifier", + "src": "448:14:69" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6158, + "name": "ERC721MetadataMintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11835, + "src": "464:22:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721MetadataMintable_$11835", + "typeString": "contract ERC721MetadataMintable" + } + }, + "id": 6159, + "nodeType": "InheritanceSpecifier", + "src": "464:22:69" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6160, + "name": "ERC721Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11237, + "src": "488:14:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Burnable_$11237", + "typeString": "contract ERC721Burnable" + } + }, + "id": 6161, + "nodeType": "InheritanceSpecifier", + "src": "488:14:69" + } + ], + "contractDependencies": [ + 26, + 1408, + 4629, + 4862, + 11209, + 11237, + 11577, + 11601, + 11798, + 11835, + 11904, + 12070, + 12097, + 12132 + ], + "contractKind": "contract", + "documentation": "@title ERC721FullMock\nThis mock just provides public functions for setting metadata URI, getting all tokens of an owner,\nchecking token existence, removal of a token from an address", + "fullyImplemented": true, + "id": 6224, + "linearizedBaseContracts": [ + 6224, + 11237, + 11835, + 11904, + 1408, + 11601, + 11798, + 12132, + 11577, + 12097, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721FullMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6174, + "nodeType": "Block", + "src": "613:64:69", + "statements": [] + }, + "documentation": null, + "id": 6175, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [], + "id": 6168, + "modifierName": { + "argumentTypes": null, + "id": 6167, + "name": "ERC721Mintable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11904, + "src": "571:14:69", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Mintable_$11904_$", + "typeString": "type(contract ERC721Mintable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "571:16:69" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 6170, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6163, + "src": "599:4:69", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 6171, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6165, + "src": "605:6:69", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 6172, + "modifierName": { + "argumentTypes": null, + "id": 6169, + "name": "ERC721Full", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11601, + "src": "588:10:69", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Full_$11601_$", + "typeString": "type(contract ERC721Full)" + } + }, + "nodeType": "ModifierInvocation", + "src": "588:24:69" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6163, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 6175, + "src": "522:18:69", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6162, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "522:6:69", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6165, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 6175, + "src": "542:20:69", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6164, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "542:6:69", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "521:42:69" + }, + "returnParameters": { + "id": 6173, + "nodeType": "ParameterList", + "parameters": [], + "src": "613:0:69" + }, + "scope": 6224, + "src": "509:168:69", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6186, + "nodeType": "Block", + "src": "743:40:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6183, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6177, + "src": "768:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6182, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10874, + "src": "760:7:69", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 6184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:16:69", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6181, + "id": 6185, + "nodeType": "Return", + "src": "753:23:69" + } + ] + }, + "documentation": null, + "id": 6187, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exists", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6177, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "699:15:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "698:17:69" + }, + "returnParameters": { + "id": 6181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6180, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "737:4:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6179, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "737:4:69", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "736:6:69" + }, + "scope": 6224, + "src": "683:100:69", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6199, + "nodeType": "Block", + "src": "866:45:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6196, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6189, + "src": "898:5:69", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6195, + "name": "_tokensOfOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11427, + "src": "883:14:69", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (address) view returns (uint256[] storage pointer)" + } + }, + "id": 6197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "883:21:69", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "functionReturnParameters": 6194, + "id": 6198, + "nodeType": "Return", + "src": "876:28:69" + } + ] + }, + "documentation": null, + "id": 6200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokensOfOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6189, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6200, + "src": "812:13:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6188, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "812:7:69", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "811:15:69" + }, + "returnParameters": { + "id": 6194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6193, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6200, + "src": "848:16:69", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "848:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6192, + "length": null, + "nodeType": "ArrayTypeName", + "src": "848:9:69", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "847:18:69" + }, + "scope": 6224, + "src": "789:122:69", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6212, + "nodeType": "Block", + "src": "981:43:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6208, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6202, + "src": "1004:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6209, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6204, + "src": "1013:3:69", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6207, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11749, + "src": "991:12:69", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 6210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "991:26:69", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6211, + "nodeType": "ExpressionStatement", + "src": "991:26:69" + } + ] + }, + "documentation": null, + "id": 6213, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6202, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "938:15:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "938:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6204, + "name": "uri", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "955:17:69", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6203, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "955:6:69", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "937:36:69" + }, + "returnParameters": { + "id": 6206, + "nodeType": "ParameterList", + "parameters": [], + "src": "981:0:69" + }, + "scope": 6224, + "src": "917:107:69", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6222, + "nodeType": "Block", + "src": "1080:37:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6219, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6215, + "src": "1102:7:69", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6218, + "name": "_setBaseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11759, + "src": "1090:11:69", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 6220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1090:20:69", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6221, + "nodeType": "ExpressionStatement", + "src": "1090:20:69" + } + ] + }, + "documentation": null, + "id": 6223, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setBaseURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6215, + "name": "baseURI", + "nodeType": "VariableDeclaration", + "scope": 6223, + "src": "1050:21:69", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6214, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1050:6:69", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1049:23:69" + }, + "returnParameters": { + "id": 6217, + "nodeType": "ParameterList", + "parameters": [], + "src": "1080:0:69" + }, + "scope": 6224, + "src": "1030:87:69", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6225, + "src": "409:710:69" + } + ], + "src": "0:1120:69" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200418638038062004186833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818181620001d16301ffc9a760e01b6200027760201b60201c565b620001e96380ac58cd60e01b6200027760201b60201c565b6200020163780e9d6360e01b6200027760201b60201c565b816009908051906020019062000219929190620005ad565b5080600a908051906020019062000232929190620005ad565b506200024b635b5e139f60e01b6200027760201b60201c565b505050506200026f620002636200038060201b60201c565b6200038860201b60201c565b50506200065c565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141562000314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b620003a381600d620003e960201b620030151790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620003fb8282620004cd60201b60201c565b156200046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000556576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620041646022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005f057805160ff191683800117855562000621565b8280016001018555821562000621579182015b828111156200062057825182559160200191906001019062000603565b5b50905062000630919062000634565b5090565b6200065991905b80821115620006555760008160009055506001016200063b565b5090565b90565b613af8806200066c6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806355f804b311610104578063983b2d56116100a2578063aa271e1a11610071578063aa271e1a14610cd3578063b88d4fde14610d2f578063c87b56dd14610e34578063e985e9c514610edb576101cf565b8063983b2d5614610bcf5780639865027514610c13578063a144819414610c1d578063a22cb46514610c83576101cf565b806370a08231116100de57806370a082311461095e5780638462151c146109b65780638832e6e314610a4f57806395d89b4114610b4c576101cf565b806355f804b3146107b25780636352211e1461086d5780636c0360eb146108db576101cf565b80632f745c591161017157806342966c681161014b57806342966c68146105ff5780634f558e791461062d5780634f6ccce71461067357806350bb4e7f146106b5576101cf565b80632f745c59146104c957806340c10f191461052b57806342842e0e14610591576101cf565b8063095ea7b3116101ad578063095ea7b31461032a578063162094c41461037857806318160ddd1461043d57806323b872dd1461045b576101cf565b806301ffc9a7146101d457806306fdde0314610239578063081812fc146102bc575b600080fd5b61021f600480360360208110156101ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f57565b604051808215151515815260200191505060405180910390f35b610241610fbe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610281578082015181840152602081019050610266565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e8600480360360208110156102d257600080fd5b8101908080359060200190929190505050611060565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103766004803603604081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110fb565b005b61043b6004803603604081101561038e57600080fd5b8101908080359060200190929190803590602001906401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112e2565b005b6104456112f0565b6040518082815260200191505060405180910390f35b6104c76004803603606081101561047157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112fd565b005b610515600480360360408110156104df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611373565b6040518082815260200191505060405180910390f35b6105776004803603604081101561054157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611432565b604051808215151515815260200191505060405180910390f35b6105fd600480360360608110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ad565b005b61062b6004803603602081101561061557600080fd5b81019080803590602001909291905050506114cd565b005b6106596004803603602081101561064357600080fd5b810190808035906020019092919050505061153f565b604051808215151515815260200191505060405180910390f35b61069f6004803603602081101561068957600080fd5b8101908080359060200190929190505050611551565b6040518082815260200191505060405180910390f35b610798600480360360608110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561071257600080fd5b82018360208201111561072457600080fd5b8035906020019184600183028401116401000000008311171561074657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115d1565b604051808215151515815260200191505060405180910390f35b61086b600480360360208110156107c857600080fd5b81019080803590602001906401000000008111156107e557600080fd5b8201836020820111156107f757600080fd5b8035906020019184600183028401116401000000008311171561081957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611657565b005b6108996004803603602081101561088357600080fd5b8101908080359060200190929190505050611663565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e361172b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610923578082015181840152602081019050610908565b50505050905090810190601f1680156109505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109a06004803603602081101561097457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117cd565b6040518082815260200191505060405180910390f35b6109f8600480360360208110156109cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a3b578082015181840152602081019050610a20565b505050509050019250505060405180910390f35b610b3260048036036060811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610aac57600080fd5b820183602082011115610abe57600080fd5b80359060200191846001830284011164010000000083111715610ae057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611903565b604051808215151515815260200191505060405180910390f35b610b54611980565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b94578082015181840152602081019050610b79565b50505050905090810190601f168015610bc15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c1160048036036020811015610be557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a22565b005b610c1b611a93565b005b610c6960048036036040811015610c3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aa5565b604051808215151515815260200191505060405180910390f35b610cd160048036036040811015610c9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611b20565b005b610d1560048036036020811015610ce957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd8565b604051808215151515815260200191505060405180910390f35b610e3260048036036080811015610d4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610dac57600080fd5b820183602082011115610dbe57600080fd5b80359060200191846001830284011164010000000083111715610de057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cf5565b005b610e6060048036036020811015610e4a57600080fd5b8101908080359060200190929190505050611d6d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ea0578082015181840152602081019050610e85565b50505050905090810190601f168015610ecd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f3d60048036036040811015610ef157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6f565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110565780601f1061102b57610100808354040283529160200191611056565b820191906000526020600020905b81548152906001019060200180831161103957829003601f168201915b5050505050905090565b600061106b82612003565b6110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061391f602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061110682611663565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561118d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139f16021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166111ac612075565b73ffffffffffffffffffffffffffffffffffffffff1614806111db57506111da816111d5612075565b611f6f565b5b611230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806138436038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6112ec828261207d565b5050565b6000600780549050905090565b61130e611308612075565b82612107565b611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a126031913960400191505060405180910390fd5b61136e8383836121fb565b505050565b600061137e836117cd565b82106113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613796602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061141f57fe5b9060005260206000200154905092915050565b600061144461143f612075565b611cd8565b611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b6114a3838361221f565b6001905092915050565b6114c883838360405180602001604052806000815250611cf5565b505050565b6114de6114d8612075565b82612107565b611533576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613a946030913960400191505060405180910390fd5b61153c81612240565b50565b600061154a82612003565b9050919050565b600061155b6112f0565b82106115b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613a43602c913960400191505060405180910390fd5b600782815481106115bf57fe5b90600052602060002001549050919050565b60006115e36115de612075565b611cd8565b611638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b611642848461221f565b61164c838361207d565b600190509392505050565b61166081612255565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611722576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138a56029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c35780601f10611798576101008083540402835291602001916117c3565b820191906000526020600020905b8154815290600101906020018083116117a657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061387b602a913960400191505060405180910390fd5b61189b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061226f565b9050919050565b60606118ad8261227d565b8054806020026020016040519081016040528092919081815260200182805480156118f757602002820191906000526020600020905b8154815260200190600101908083116118e3575b50505050509050919050565b6000611915611910612075565b611cd8565b61196a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b6119758484846122c5565b600190509392505050565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a185780601f106119ed57610100808354040283529160200191611a18565b820191906000526020600020905b8154815290600101906020018083116119fb57829003601f168201915b5050505050905090565b611a32611a2d612075565b611cd8565b611a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b611a9081612336565b50565b611aa3611a9e612075565b612390565b565b6000611ab7611ab2612075565b611cd8565b611b0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b611b1683836123ea565b6001905092915050565b611b28612075565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000611bd6612075565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c83612075565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000611cee82600d61240890919063ffffffff16565b9050919050565b611d06611d00612075565b83612107565b611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a126031913960400191505060405180910390fd5b611d67848484846124e6565b50505050565b6060611d7882612003565b611dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806139c2602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e765780601f10611e4b57610100808354040283529160200191611e76565b820191906000526020600020905b815481529060010190602001808311611e5957829003601f168201915b50505050509050600081511415611e9f5760405180602001604052806000815250915050611f6a565b600b816040516020018083805460018160011615610100020316600290048015611f005780601f10611ede576101008083540402835291820191611f00565b820191906000526020600020905b815481529060010190602001808311611eec575b505082805190602001908083835b60208310611f315780518252602082019150602081019050602083039250611f0e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b61208682612003565b6120db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061394b602c913960400191505060405180910390fd5b80600c6000848152602001908152602001600020908051906020019061210292919061367c565b505050565b600061211282612003565b612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613817602c913960400191505060405180910390fd5b600061217283611663565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806121e157508373ffffffffffffffffffffffffffffffffffffffff166121c984611060565b73ffffffffffffffffffffffffffffffffffffffff16145b806121f257506121f18185611f6f565b5b91505092915050565b612206838383612558565b61221083826127b3565b61221a8282612951565b505050565b6122298282612a18565b6122338282612951565b61223c81612c30565b5050565b61225261224c82611663565b82612c7c565b50565b80600b908051906020019061226b92919061367c565b5050565b600081600001549050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050919050565b6122cf838361221f565b6122dc6000848484612cd9565b612331576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137c16032913960400191505060405180910390fd5b505050565b61234a81600d61301590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6123a481600d6130f090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6124048282604051806020016040528060008152506122c5565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139776022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124f18484846121fb565b6124fd84848484612cd9565b612552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137c16032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff1661257882611663565b73ffffffffffffffffffffffffffffffffffffffff16146125e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806139996029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137f36024913960400191505060405180910390fd5b612673816131ad565b6126ba600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061326b565b612701600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061328e565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061280b6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506132a490919063ffffffff16565b90506000600660008481526020019081526020016000205490508181146128f8576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061287857fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106128d057fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361294a91906136fc565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612abb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612ac481612003565b15612b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612bd0600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061328e565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b612c8682826132ee565b6000600c600083815260200190815260200160002080546001816001161561010002031660029004905014612cd557600c60008281526020019081526020016000206000612cd49190613728565b5b5050565b6000612cfa8473ffffffffffffffffffffffffffffffffffffffff16613328565b612d07576001905061300d565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b612d4b612075565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612dfb578082015181840152602081019050612de0565b50505050905090810190601f168015612e285780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612ec05780518252602082019150602081019050602083039250612e9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f22576040519150601f19603f3d011682016040523d82523d6000602084013e612f27565b606091505b509150915081612f9557600081511115612f445780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137c16032913960400191505060405180910390fd5b6000818060200190516020811015612fac57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b61301f8282612408565b15613092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6130fa8282612408565b61314f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138fe6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132685760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b613283600182600001546132a490919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006132e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613373565b905092915050565b6132f88282613433565b61330282826127b3565b60006006600083815260200190815260200160002081905550613324816135c2565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561336a57506000801b8214155b92505050919050565b6000838311158290613420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133e55780820151818401526020810190506133ca565b50505050905090810190601f1680156134125780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff1661345382611663565b73ffffffffffffffffffffffffffffffffffffffff16146134bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a6f6025913960400191505060405180910390fd5b6134c8816131ad565b61350f600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061326b565b60006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006135dd60016007805490506132a490919063ffffffff16565b905060006008600084815260200190815260200160002054905060006007838154811061360657fe5b90600052602060002001549050806007838154811061362157fe5b9060005260206000200181905550816008600083815260200190815260200160002081905550600780548091906001900361365c91906136fc565b506000600860008681526020019081526020016000208190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136bd57805160ff19168380011785556136eb565b828001600101855582156136eb579182015b828111156136ea5782518255916020019190600101906136cf565b5b5090506136f89190613770565b5090565b815481835581811115613723578183600052602060002091820191016137229190613770565b5b505050565b50805460018160011615610100020316600290046000825580601f1061374e575061376d565b601f01602090049060005260206000209081019061376c9190613770565b5b50565b61379291905b8082111561378e576000816000905550600101613776565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a72315820bbfd85f907c3f91d208a81b2f9ef4c1d1ff6671cd9c82a5d2b6c33069b0522e964736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806355f804b311610104578063983b2d56116100a2578063aa271e1a11610071578063aa271e1a14610cd3578063b88d4fde14610d2f578063c87b56dd14610e34578063e985e9c514610edb576101cf565b8063983b2d5614610bcf5780639865027514610c13578063a144819414610c1d578063a22cb46514610c83576101cf565b806370a08231116100de57806370a082311461095e5780638462151c146109b65780638832e6e314610a4f57806395d89b4114610b4c576101cf565b806355f804b3146107b25780636352211e1461086d5780636c0360eb146108db576101cf565b80632f745c591161017157806342966c681161014b57806342966c68146105ff5780634f558e791461062d5780634f6ccce71461067357806350bb4e7f146106b5576101cf565b80632f745c59146104c957806340c10f191461052b57806342842e0e14610591576101cf565b8063095ea7b3116101ad578063095ea7b31461032a578063162094c41461037857806318160ddd1461043d57806323b872dd1461045b576101cf565b806301ffc9a7146101d457806306fdde0314610239578063081812fc146102bc575b600080fd5b61021f600480360360208110156101ea57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610f57565b604051808215151515815260200191505060405180910390f35b610241610fbe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610281578082015181840152602081019050610266565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e8600480360360208110156102d257600080fd5b8101908080359060200190929190505050611060565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103766004803603604081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110fb565b005b61043b6004803603604081101561038e57600080fd5b8101908080359060200190929190803590602001906401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112e2565b005b6104456112f0565b6040518082815260200191505060405180910390f35b6104c76004803603606081101561047157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112fd565b005b610515600480360360408110156104df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611373565b6040518082815260200191505060405180910390f35b6105776004803603604081101561054157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611432565b604051808215151515815260200191505060405180910390f35b6105fd600480360360608110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ad565b005b61062b6004803603602081101561061557600080fd5b81019080803590602001909291905050506114cd565b005b6106596004803603602081101561064357600080fd5b810190808035906020019092919050505061153f565b604051808215151515815260200191505060405180910390f35b61069f6004803603602081101561068957600080fd5b8101908080359060200190929190505050611551565b6040518082815260200191505060405180910390f35b610798600480360360608110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561071257600080fd5b82018360208201111561072457600080fd5b8035906020019184600183028401116401000000008311171561074657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115d1565b604051808215151515815260200191505060405180910390f35b61086b600480360360208110156107c857600080fd5b81019080803590602001906401000000008111156107e557600080fd5b8201836020820111156107f757600080fd5b8035906020019184600183028401116401000000008311171561081957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611657565b005b6108996004803603602081101561088357600080fd5b8101908080359060200190929190505050611663565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e361172b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610923578082015181840152602081019050610908565b50505050905090810190601f1680156109505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109a06004803603602081101561097457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117cd565b6040518082815260200191505060405180910390f35b6109f8600480360360208110156109cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a3b578082015181840152602081019050610a20565b505050509050019250505060405180910390f35b610b3260048036036060811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610aac57600080fd5b820183602082011115610abe57600080fd5b80359060200191846001830284011164010000000083111715610ae057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611903565b604051808215151515815260200191505060405180910390f35b610b54611980565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b94578082015181840152602081019050610b79565b50505050905090810190601f168015610bc15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c1160048036036020811015610be557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a22565b005b610c1b611a93565b005b610c6960048036036040811015610c3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aa5565b604051808215151515815260200191505060405180910390f35b610cd160048036036040811015610c9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611b20565b005b610d1560048036036020811015610ce957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd8565b604051808215151515815260200191505060405180910390f35b610e3260048036036080811015610d4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610dac57600080fd5b820183602082011115610dbe57600080fd5b80359060200191846001830284011164010000000083111715610de057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cf5565b005b610e6060048036036020811015610e4a57600080fd5b8101908080359060200190929190505050611d6d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ea0578082015181840152602081019050610e85565b50505050905090810190601f168015610ecd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f3d60048036036040811015610ef157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6f565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110565780601f1061102b57610100808354040283529160200191611056565b820191906000526020600020905b81548152906001019060200180831161103957829003601f168201915b5050505050905090565b600061106b82612003565b6110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061391f602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061110682611663565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561118d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139f16021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166111ac612075565b73ffffffffffffffffffffffffffffffffffffffff1614806111db57506111da816111d5612075565b611f6f565b5b611230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806138436038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6112ec828261207d565b5050565b6000600780549050905090565b61130e611308612075565b82612107565b611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a126031913960400191505060405180910390fd5b61136e8383836121fb565b505050565b600061137e836117cd565b82106113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613796602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061141f57fe5b9060005260206000200154905092915050565b600061144461143f612075565b611cd8565b611499576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b6114a3838361221f565b6001905092915050565b6114c883838360405180602001604052806000815250611cf5565b505050565b6114de6114d8612075565b82612107565b611533576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613a946030913960400191505060405180910390fd5b61153c81612240565b50565b600061154a82612003565b9050919050565b600061155b6112f0565b82106115b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613a43602c913960400191505060405180910390fd5b600782815481106115bf57fe5b90600052602060002001549050919050565b60006115e36115de612075565b611cd8565b611638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b611642848461221f565b61164c838361207d565b600190509392505050565b61166081612255565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611722576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138a56029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c35780601f10611798576101008083540402835291602001916117c3565b820191906000526020600020905b8154815290600101906020018083116117a657829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061387b602a913960400191505060405180910390fd5b61189b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061226f565b9050919050565b60606118ad8261227d565b8054806020026020016040519081016040528092919081815260200182805480156118f757602002820191906000526020600020905b8154815260200190600101908083116118e3575b50505050509050919050565b6000611915611910612075565b611cd8565b61196a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b6119758484846122c5565b600190509392505050565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a185780601f106119ed57610100808354040283529160200191611a18565b820191906000526020600020905b8154815290600101906020018083116119fb57829003601f168201915b5050505050905090565b611a32611a2d612075565b611cd8565b611a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b611a9081612336565b50565b611aa3611a9e612075565b612390565b565b6000611ab7611ab2612075565b611cd8565b611b0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138ce6030913960400191505060405180910390fd5b611b1683836123ea565b6001905092915050565b611b28612075565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000611bd6612075565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c83612075565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000611cee82600d61240890919063ffffffff16565b9050919050565b611d06611d00612075565b83612107565b611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a126031913960400191505060405180910390fd5b611d67848484846124e6565b50505050565b6060611d7882612003565b611dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806139c2602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e765780601f10611e4b57610100808354040283529160200191611e76565b820191906000526020600020905b815481529060010190602001808311611e5957829003601f168201915b50505050509050600081511415611e9f5760405180602001604052806000815250915050611f6a565b600b816040516020018083805460018160011615610100020316600290048015611f005780601f10611ede576101008083540402835291820191611f00565b820191906000526020600020905b815481529060010190602001808311611eec575b505082805190602001908083835b60208310611f315780518252602082019150602081019050602083039250611f0e565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b61208682612003565b6120db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061394b602c913960400191505060405180910390fd5b80600c6000848152602001908152602001600020908051906020019061210292919061367c565b505050565b600061211282612003565b612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613817602c913960400191505060405180910390fd5b600061217283611663565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806121e157508373ffffffffffffffffffffffffffffffffffffffff166121c984611060565b73ffffffffffffffffffffffffffffffffffffffff16145b806121f257506121f18185611f6f565b5b91505092915050565b612206838383612558565b61221083826127b3565b61221a8282612951565b505050565b6122298282612a18565b6122338282612951565b61223c81612c30565b5050565b61225261224c82611663565b82612c7c565b50565b80600b908051906020019061226b92919061367c565b5050565b600081600001549050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050919050565b6122cf838361221f565b6122dc6000848484612cd9565b612331576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137c16032913960400191505060405180910390fd5b505050565b61234a81600d61301590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6123a481600d6130f090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6124048282604051806020016040528060008152506122c5565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561248f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139776022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124f18484846121fb565b6124fd84848484612cd9565b612552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137c16032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff1661257882611663565b73ffffffffffffffffffffffffffffffffffffffff16146125e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806139996029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137f36024913960400191505060405180910390fd5b612673816131ad565b6126ba600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061326b565b612701600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061328e565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061280b6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506132a490919063ffffffff16565b90506000600660008481526020019081526020016000205490508181146128f8576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061287857fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106128d057fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361294a91906136fc565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612abb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612ac481612003565b15612b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612bd0600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061328e565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b612c8682826132ee565b6000600c600083815260200190815260200160002080546001816001161561010002031660029004905014612cd557600c60008281526020019081526020016000206000612cd49190613728565b5b5050565b6000612cfa8473ffffffffffffffffffffffffffffffffffffffff16613328565b612d07576001905061300d565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b612d4b612075565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612dfb578082015181840152602081019050612de0565b50505050905090810190601f168015612e285780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612ec05780518252602082019150602081019050602083039250612e9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f22576040519150601f19603f3d011682016040523d82523d6000602084013e612f27565b606091505b509150915081612f9557600081511115612f445780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137c16032913960400191505060405180910390fd5b6000818060200190516020811015612fac57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b61301f8282612408565b15613092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6130fa8282612408565b61314f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138fe6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132685760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b613283600182600001546132a490919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006132e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613373565b905092915050565b6132f88282613433565b61330282826127b3565b60006006600083815260200190815260200160002081905550613324816135c2565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561336a57506000801b8214155b92505050919050565b6000838311158290613420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133e55780820151818401526020810190506133ca565b50505050905090810190601f1680156134125780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff1661345382611663565b73ffffffffffffffffffffffffffffffffffffffff16146134bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a6f6025913960400191505060405180910390fd5b6134c8816131ad565b61350f600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061326b565b60006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006135dd60016007805490506132a490919063ffffffff16565b905060006008600084815260200190815260200160002054905060006007838154811061360657fe5b90600052602060002001549050806007838154811061362157fe5b9060005260206000200181905550816008600083815260200190815260200160002081905550600780548091906001900361365c91906136fc565b506000600860008681526020019081526020016000208190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136bd57805160ff19168380011785556136eb565b828001600101855582156136eb579182015b828111156136ea5782518255916020019190600101906136cf565b5b5090506136f89190613770565b5090565b815481835581811115613723578183600052602060002091820191016137229190613770565b5b505050565b50805460018160011615610100020316600290046000825580601f1061374e575061376d565b601f01602090049060005260206000209081019061376c9190613770565b5b50565b61379291905b8082111561378e576000816000905550600101613776565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a72315820bbfd85f907c3f91d208a81b2f9ef4c1d1ff6671cd9c82a5d2b6c33069b0522e964736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721GSNRecipientMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721GSNRecipientMock.json new file mode 100644 index 0000000..de6ce78 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721GSNRecipientMock.json @@ -0,0 +1,1423 @@ +{ + "fileName": "ERC721GSNRecipientMock.sol", + "contractName": "ERC721GSNRecipientMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC721/ERC721.sol\";\nimport \"../GSN/GSNRecipient.sol\";\nimport \"../GSN/GSNRecipientSignature.sol\";\n\n/**\n * @title ERC721GSNRecipientMock\n * A simple ERC721 mock that has GSN support enabled\n */\ncontract ERC721GSNRecipientMock is ERC721, GSNRecipient, GSNRecipientSignature {\n constructor(string memory name, string memory symbol, address trustedSigner)\n public\n ERC721(name, symbol)\n GSNRecipientSignature(trustedSigner)\n { }\n\n function mint(uint256 tokenId) public {\n _mint(_msgSender(), tokenId);\n }\n\n function _msgSender() internal view override(Context, GSNRecipient) returns (address payable) {\n return GSNRecipient._msgSender();\n }\n\n function _msgData() internal view override(Context, GSNRecipient) returns (bytes memory) {\n return GSNRecipient._msgData();\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721GSNRecipientMock.sol", + "sourceMap": "267:640:40:-:0;;;885:42:1;857:70;;;;;;;;;;;;;;;;;;;;352:173:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;503:13;459:4;465:6;751:40:11;418:10;770:20;;751:18;;;:40;;:::i;:::-;3532:4:79;3524:5;:12;;;;;;;;;;;;:::i;:::-;;3556:6;3546:7;:16;;;;;;;;;;;;:::i;:::-;;3650:40;2730:10;3669:20;;3650:18;;;:40;;:::i;:::-;3700:49;3062:10;3719:29;;3700:18;;;:49;;:::i;:::-;3759:51;3435:10;3778:31;;3759:18;;;:51;;:::i;:::-;3452:365;;957:1:3;932:27;;:13;:27;;;;924:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:13;1031:14;;:30;;;;;;;;;;;;;;;;;;872:196;352:173:40;;;267:640;;1482:198:11;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;267:640:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "267:640:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4723:90:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9383:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8717:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7597:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11094:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7292:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12043:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8135:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4451:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6831:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4021:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1451:94:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5087:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1190:1031:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:94:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;531:83:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9891:290:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2699:227:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12915:282:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5859:740;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5945:287:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10503:154:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;948:140:11;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;4723:90:79:-;4769:13;4801:5;4794:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:90;:::o;9383:209::-;9451:7;9478:16;9486:7;9478;:16::i;:::-;9470:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9561:15;:24;9577:7;9561:24;;;;;;;;;;;;;;;;;;;;;9554:31;;9383:209;;;:::o;8717:381::-;8797:13;8813:16;8821:7;8813;:16::i;:::-;8797:32;;8853:5;8847:11;;:2;:11;;;;8839:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8931:5;8915:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8940:37;8957:5;8964:12;:10;:12::i;:::-;8940:16;:37::i;:::-;8915:62;8907:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9070:21;9079:2;9083:7;9070:8;:21::i;:::-;8717:381;;;:::o;7597:200::-;7650:7;7769:21;:12;:19;:21::i;:::-;7762:28;;7597:200;:::o;11094:300::-;11253:41;11272:12;:10;:12::i;:::-;11286:7;11253:18;:41::i;:::-;11245:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11359:28;11369:4;11375:2;11379:7;11359:9;:28::i;:::-;11094:300;;;:::o;7292:152::-;7381:7;7407:30;7431:5;7407:13;:20;7421:5;7407:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;7400:37;;7292:152;;;;:::o;12043:149::-;12146:39;12163:4;12169:2;12173:7;12146:39;;;;;;;;;;;;:16;:39::i;:::-;12043:149;;;:::o;8135:161::-;8202:7;8222:15;8243:22;8259:5;8243:12;:15;;:22;;;;:::i;:::-;8221:44;;;8282:7;8275:14;;;8135:161;;;:::o;4451:167::-;4515:7;4541:70;4558:7;4541:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4534:77;;4451:167;;;:::o;6831:87::-;6871:13;6903:8;6896:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:87;:::o;4021:211::-;4085:7;4129:1;4112:19;;:5;:19;;;;4104:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4196:29;:13;:20;4210:5;4196:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4189:36;;4021:211;;;:::o;1451:94:1:-;1503:7;1529:9;;;;;;;;;;;1522:16;;1451:94;:::o;5087:221::-;5166:7;5207:12;:10;:12::i;:::-;5193:26;;:10;:26;;;5185:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:24;5293:7;5277:15;:24::i;:::-;5270:31;;5087:221;;;:::o;1190:1031:3:-;1543:7;1552:12;1580:17;1630:5;1649:4;1667:15;1696:14;1724:8;1746;1768:5;1819:12;:10;:12::i;:::-;1895:4;1600:353;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:373;;2033:14;;;;;;;;;;;1967:80;;:62;2016:12;1967:40;1977:4;1967:15;;;;;;:38;:40::i;:::-;:48;;:62;;;;:::i;:::-;:80;;;1963:252;;;2070:21;:19;:21::i;:::-;2063:28;;;;;;;1963:252;2129:75;2156:46;2148:55;;;;;;;;2129:18;:75::i;:::-;2122:82;;;;;1190:1031;;;;;;;;;;;;;:::o;4922:94:79:-;4970:13;5002:7;4995:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:94;:::o;531:83:40:-;579:28;585:12;:10;:12::i;:::-;599:7;579:5;:28::i;:::-;531:83;:::o;9891:290:79:-;10005:12;:10;:12::i;:::-;9993:24;;:8;:24;;;;9985:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10103:8;10058:18;:32;10077:12;:10;:12::i;:::-;10058:32;;;;;;;;;;;;;;;:42;10091:8;10058:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;10155:8;10126:48;;10141:12;:10;:12::i;:::-;10126:48;;;10165:8;10126:48;;;;;;;;;;;;;;;;;;;;;;9891:290;;:::o;2699:227:1:-;2747:13;2905:14;;;;;;;;;;;;;;;;;;;2699:227;:::o;12915:282:79:-;13046:41;13065:12;:10;:12::i;:::-;13079:7;13046:18;:41::i;:::-;13038:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13151:39;13165:4;13171:2;13175:7;13184:5;13151:13;:39::i;:::-;12915:282;;;;:::o;5859:740::-;5924:13;5957:16;5965:7;5957;:16::i;:::-;5949:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6036:23;6062:10;:19;6073:7;6062:19;;;;;;;;;;;6036:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6180:1;6160:8;6154:22;;;;;;;;;;;;;;;;:27;6150:74;;;6204:9;6197:16;;;;;6150:74;6352:1;6332:9;6326:23;:27;6322:110;;;6400:8;6410:9;6383:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6369:52;;;;;6322:110;6562:8;6572:18;:7;:16;:18::i;:::-;6545:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6531:61;;;5859:740;;;;:::o;5945:287:1:-;6103:12;:10;:12::i;:::-;6089:26;;:10;:26;;;6081:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6166:59;6183:7;6192;6201:12;6215:9;6166:16;:59::i;:::-;5945:287;;;;:::o;10503:154:79:-;10592:4;10615:18;:25;10634:5;10615:25;;;;;;;;;;;;;;;:35;10641:8;10615:35;;;;;;;;;;;;;;;;;;;;;;;;;10608:42;;10503:154;;;;:::o;14366:117::-;14423:4;14446:30;14468:7;14446:12;:21;;:30;;;;:::i;:::-;14439:37;;14366:117;;;:::o;620:143:40:-;697:15;731:25;:23;:25::i;:::-;724:32;;620:143;:::o;21390:155:79:-;21482:2;21455:15;:24;21471:7;21455:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21530:7;21526:2;21499:39;;21508:16;21516:7;21508;:16::i;:::-;21499:39;;;;;;;;;;;;21390:155;;:::o;7023:121:95:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;14844:329:79:-;14929:4;14953:16;14961:7;14953;:16::i;:::-;14945:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15028:13;15044:16;15052:7;15044;:16::i;:::-;15028:32;;15089:5;15078:16;;:7;:16;;;:51;;;;15122:7;15098:31;;:20;15110:7;15098:11;:20::i;:::-;:31;;;15078:51;:87;;;;15133:32;15150:5;15157:7;15133:16;:32::i;:::-;15078:87;15070:96;;;14844:329;;;;:::o;18356:559::-;18473:4;18453:24;;:16;18461:7;18453;:16::i;:::-;:24;;;18445:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18555:1;18541:16;;:2;:16;;;;18533:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18609:39;18630:4;18636:2;18640:7;18609:20;:39::i;:::-;18710:29;18727:1;18731:7;18710:8;:29::i;:::-;18750:35;18777:7;18750:13;:19;18764:4;18750:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;18795:30;18817:7;18795:13;:17;18809:2;18795:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;18836:29;18853:7;18862:2;18836:12;:16;;:29;;;;;:::i;:::-;;18900:7;18896:2;18881:27;;18890:4;18881:27;;;;;;;;;;;;18356:559;;;:::o;7649:135:96:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7472:224:95:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:96:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;2227:86:3:-;2301:7;2227:86;;;:::o;3396:265:8:-;3465:7;3648:4;3595:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3585:69;;;;;;3578:76;;3396:265;;;:::o;1064:2068::-;1142:7;1223:2;1203:9;:16;:22;1199:94;;1241:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:94;1359:9;1378;1397:7;1643:4;1632:9;1628:20;1622:27;1617:32;;1688:4;1677:9;1673:20;1667:27;1662:32;;1741:4;1730:9;1726:20;1720:27;1717:1;1712:36;1707:41;;2659:66;2654:1;2646:10;;:79;2642:154;;;2741:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:154;2815:2;2810:1;:7;;;;:18;;;;;2826:2;2821:1;:7;;;;2810:18;2806:93;;;2844:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:93;2993:14;3010:24;3020:4;3026:1;3029;3032;3010:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:41;;3070:1;3052:20;;:6;:20;;;;3044:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3119:6;3112:13;;;;;;1064:2068;;;;:::o;6834:124:1:-;6888:7;6897:12;6928:23;;;;;;;;;;;;;:19;:23::i;:::-;6921:30;;;;6834:124;;:::o;7405:157::-;7475:7;7484:12;7541:9;1041:2;7516:34;7508:47;;;;;;;;;;;;;;;;7405:157;;;:::o;16903:393:79:-;16996:1;16982:16;;:2;:16;;;;16974:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:16;17062:7;17054;:16::i;:::-;17053:17;17045:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17114:45;17143:1;17147:2;17151:7;17114:20;:45::i;:::-;17170:30;17192:7;17170:13;:17;17184:2;17170:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;17211:29;17228:7;17237:2;17211:12;:16;;:29;;;;;:::i;:::-;;17281:7;17277:2;17256:33;;17273:1;17256:33;;;;;;;;;;;;16903:393;;:::o;13902:269::-;14015:28;14025:4;14031:2;14035:7;14015:9;:28::i;:::-;14061:48;14084:4;14090:2;14094:7;14103:5;14061:22;:48::i;:::-;14053:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:269;;;;:::o;202:723:100:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;2319:93:3:-;;;;;:::o;6791:149:95:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;3884:227:1:-;3946:15;3991:9;;;;;;;;;;;3977:23;;:10;:23;;;3973:132;;4023:10;4016:17;;;;3973:132;4071:23;:21;:23::i;:::-;4064:30;;3884:227;;:::o;4483:108:95:-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;22101:93:79:-;;;;:::o;6764:135:96:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:95:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:96:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;4934:274:95:-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:96:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;7120:154:1:-;7194:7;7203:12;984:1;7259:7;7227:40;;;;7120:154;;;:::o;20334:1050:79:-;20454:4;20479:15;:2;:13;;;:15::i;:::-;20474:58;;20517:4;20510:11;;;;20474:58;20601:12;20615:23;20642:2;:7;;20686:45;;;20745:12;:10;:12::i;:::-;20771:4;20789:7;20810:5;20650:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20642:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20600:226;;;;20841:7;20836:542;;20888:1;20868:10;:17;:21;20864:376;;;21033:10;21027:17;21093:15;21080:10;21076:2;21072:19;21065:44;20982:145;21165:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20836:542;21270:13;21297:10;21286:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21270:48;;1068:10;21350:16;;21340:26;;;:6;:26;;;;21332:35;;;;;20334:1050;;;;;;;:::o;4270:123:95:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;8066:1250:1:-;8121:22;8928:18;8949:8;;8928:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8967:13;8983:8;;:15;;8967:31;;9234:42;9225:5;9218;9214:17;9208:24;9204:73;9194:83;;9303:6;9296:13;;;;8066:1250;:::o;2183:1512:96:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:95:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3776:127:96:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "trustedSigner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721GSNRecipientMock.sol", + "exportedSymbols": { + "ERC721GSNRecipientMock": [ + 3921 + ] + }, + "id": 3922, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3855, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:40" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "../token/ERC721/ERC721.sol", + "id": 3856, + "nodeType": "ImportDirective", + "scope": 3922, + "sourceUnit": 9254, + "src": "58:36:40", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "../GSN/GSNRecipient.sol", + "id": 3857, + "nodeType": "ImportDirective", + "scope": 3922, + "sourceUnit": 380, + "src": "95:33:40", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/GSNRecipientSignature.sol", + "file": "../GSN/GSNRecipientSignature.sol", + "id": 3858, + "nodeType": "ImportDirective", + "scope": 3922, + "sourceUnit": 855, + "src": "129:42:40", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3860, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9253, + "src": "302:6:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$9253", + "typeString": "contract ERC721" + } + }, + "id": 3861, + "nodeType": "InheritanceSpecifier", + "src": "302:6:40" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3862, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "310:12:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + }, + "id": 3863, + "nodeType": "InheritanceSpecifier", + "src": "310:12:40" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3864, + "name": "GSNRecipientSignature", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 854, + "src": "324:21:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientSignature_$854", + "typeString": "contract GSNRecipientSignature" + } + }, + "id": 3865, + "nodeType": "InheritanceSpecifier", + "src": "324:21:40" + } + ], + "contractDependencies": [ + 26, + 379, + 854, + 1188, + 2190, + 2436, + 9253, + 9461, + 9492, + 9519 + ], + "contractKind": "contract", + "documentation": { + "id": 3859, + "nodeType": "StructuredDocumentation", + "src": "173:93:40", + "text": " @title ERC721GSNRecipientMock\n A simple ERC721 mock that has GSN support enabled" + }, + "fullyImplemented": true, + "id": 3921, + "linearizedBaseContracts": [ + 3921, + 854, + 379, + 9253, + 9492, + 9519, + 9461, + 2190, + 2436, + 26, + 1188 + ], + "name": "ERC721GSNRecipientMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3881, + "nodeType": "Block", + "src": "522:3:40", + "statements": [] + }, + "documentation": null, + "id": 3882, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3874, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3867, + "src": "459:4:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3875, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3869, + "src": "465:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3876, + "modifierName": { + "argumentTypes": null, + "id": 3873, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9253, + "src": "452:6:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$9253_$", + "typeString": "type(contract ERC721)" + } + }, + "nodeType": "ModifierInvocation", + "src": "452:20:40" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 3878, + "name": "trustedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3871, + "src": "503:13:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 3879, + "modifierName": { + "argumentTypes": null, + "id": 3877, + "name": "GSNRecipientSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "481:21:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipientSignature_$854_$", + "typeString": "type(contract GSNRecipientSignature)" + } + }, + "nodeType": "ModifierInvocation", + "src": "481:36:40" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3867, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3882, + "src": "364:18:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3866, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "364:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3869, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3882, + "src": "384:20:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3868, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "384:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3871, + "mutability": "mutable", + "name": "trustedSigner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3882, + "src": "406:21:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3870, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "406:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "363:65:40" + }, + "returnParameters": { + "id": 3880, + "nodeType": "ParameterList", + "parameters": [], + "src": "522:0:40" + }, + "scope": 3921, + "src": "352:173:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3893, + "nodeType": "Block", + "src": "569:45:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3888, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3907 + ], + "referencedDeclaration": 3907, + "src": "585:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 3889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "585:12:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 3890, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3884, + "src": "599:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3887, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8971, + "src": "579:5:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "579:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3892, + "nodeType": "ExpressionStatement", + "src": "579:28:40" + } + ] + }, + "documentation": null, + "functionSelector": "a0712d68", + "id": 3894, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3884, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3894, + "src": "545:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "545:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "544:17:40" + }, + "returnParameters": { + "id": 3886, + "nodeType": "ParameterList", + "parameters": [], + "src": "569:0:40" + }, + "scope": 3921, + "src": "531:83:40", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 14, + 151 + ], + "body": { + "id": 3906, + "nodeType": "Block", + "src": "714:49:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3902, + "name": "GSNRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "731:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipient_$379_$", + "typeString": "type(contract GSNRecipient)" + } + }, + "id": 3903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_msgSender", + "nodeType": "MemberAccess", + "referencedDeclaration": 151, + "src": "731:23:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 3904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "731:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 3901, + "id": 3905, + "nodeType": "Return", + "src": "724:32:40" + } + ] + }, + "documentation": null, + "id": 3907, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3898, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 3896, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "665:7:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + { + "contractScope": null, + "id": 3897, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "674:12:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + } + ], + "src": "656:31:40" + }, + "parameters": { + "id": 3895, + "nodeType": "ParameterList", + "parameters": [], + "src": "639:2:40" + }, + "returnParameters": { + "id": 3901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3900, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3907, + "src": "697:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "696:17:40" + }, + "scope": 3921, + "src": "620:143:40", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 25, + 172 + ], + "body": { + "id": 3919, + "nodeType": "Block", + "src": "858:47:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3915, + "name": "GSNRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "875:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipient_$379_$", + "typeString": "type(contract GSNRecipient)" + } + }, + "id": 3916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_msgData", + "nodeType": "MemberAccess", + "referencedDeclaration": 172, + "src": "875:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () view returns (bytes memory)" + } + }, + "id": 3917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "875:23:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3914, + "id": 3918, + "nodeType": "Return", + "src": "868:30:40" + } + ] + }, + "documentation": null, + "id": 3920, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3911, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 3909, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "812:7:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + { + "contractScope": null, + "id": 3910, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "821:12:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + } + ], + "src": "803:31:40" + }, + "parameters": { + "id": 3908, + "nodeType": "ParameterList", + "parameters": [], + "src": "786:2:40" + }, + "returnParameters": { + "id": 3914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3913, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3920, + "src": "844:12:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3912, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "844:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "843:14:40" + }, + "scope": 3921, + "src": "769:136:40", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3922, + "src": "267:640:40" + } + ], + "src": "33:875:40" + }, + "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f494600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162003b2738038062003b27833981810160405260608110156200008c57600080fd5b8101908080516040519392919084640100000000821115620000ad57600080fd5b83820191506020820185811115620000c457600080fd5b8251866001820283011164010000000082111715620000e257600080fd5b8083526020830192505050908051906020019080838360005b8381101562000118578082015181840152602081019050620000fb565b50505050905090810190601f168015620001465780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200016a57600080fd5b838201915060208201858111156200018157600080fd5b82518660018202830111640100000000821117156200019f57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001d5578082015181840152602081019050620001b8565b50505050905090810190601f168015620002035780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190505050808383620002326301ffc9a760e01b6200038160201b60201c565b81600690805190602001906200024a9291906200048a565b508060079080519060200190620002639291906200048a565b506200027c6380ac58cd60e01b6200038160201b60201c565b62000294635b5e139f60e01b6200038160201b60201c565b620002ac63780e9d6360e01b6200038160201b60201c565b5050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018062003aee6039913960400191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000539565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156200041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cd57805160ff1916838001178555620004fe565b82800160010185558215620004fe579182015b82811115620004fd578251825591602001919060010190620004e0565b5b5090506200050d919062000511565b5090565b6200053691905b808211156200053257600081600090555060010162000518565b5090565b90565b6135a580620005496000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a22cb4651161007c578063a22cb465146109ec578063ad61ccd514610a3c578063b88d4fde14610abf578063c87b56dd14610bc4578063e06e0e2214610c6b578063e985e9c514610d465761014d565b806370a082311461058557806374e861d6146105dd57806380274db71461062757806383947ea0146106f657806395d89b411461093b578063a0712d68146109be5761014d565b806323b872dd1161011557806323b872dd146103145780632f745c591461038257806342842e0e146103e45780634f6ccce7146104525780636352211e146104945780636c0360eb146105025761014d565b806301ffc9a71461015257806306fdde03146101b7578063081812fc1461023a578063095ea7b3146102a857806318160ddd146102f6575b600080fd5b61019d6004803603602081101561016857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610dc2565b604051808215151515815260200191505060405180910390f35b6101bf610e29565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ff5780820151818401526020810190506101e4565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102666004803603602081101561025057600080fd5b8101908080359060200190929190505050610ecb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f4600480360360408110156102be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f66565b005b6102fe6110aa565b6040518082815260200191505060405180910390f35b6103806004803603606081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110bb565b005b6103ce6004803603604081101561039857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611131565b6040518082815260200191505060405180910390f35b610450600480360360608110156103fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061118c565b005b61047e6004803603602081101561046857600080fd5b81019080803590602001909291905050506111ac565b6040518082815260200191505060405180910390f35b6104c0600480360360208110156104aa57600080fd5b81019080803590602001909291905050506111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61050a611206565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561054a57808201518184015260208101905061052f565b50505050905090810190601f1680156105775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105c76004803603602081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a8565b6040518082815260200191505060405180910390f35b6105e561137d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106e06004803603602081101561063d57600080fd5b810190808035906020019064010000000081111561065a57600080fd5b82018360208201111561066c57600080fd5b8035906020019184600183028401116401000000008311171561068e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113a7565b6040518082815260200191505060405180910390f35b6108b9600480360361012081101561070d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561076a57600080fd5b82018360208201111561077c57600080fd5b8035906020019184600183028401116401000000008311171561079e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561082957600080fd5b82018360208201111561083b57600080fd5b8035906020019184600183028401116401000000008311171561085d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611444565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108ff5780820151818401526020810190506108e4565b50505050905090810190601f16801561092c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61094361166a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610983578082015181840152602081019050610968565b50505050905090810190601f1680156109b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109ea600480360360208110156109d457600080fd5b810190808035906020019092919050505061170c565b005b610a3a60048036036040811015610a0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611720565b005b610a446118d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a84578082015181840152602081019050610a69565b50505050905090810190601f168015610ab15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bc260048036036080811015610ad557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b3c57600080fd5b820183602082011115610b4e57600080fd5b80359060200191846001830284011164010000000083111715610b7057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611915565b005b610bf060048036036020811015610bda57600080fd5b810190808035906020019092919050505061198d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c30578082015181840152602081019050610c15565b50505050905090810190601f168015610c5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d4460048036036080811015610c8157600080fd5b8101908080359060200190640100000000811115610c9e57600080fd5b820183602082011115610cb057600080fd5b80359060200191846001830284011164010000000083111715610cd257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050611c76565b005b610da860048036036040811015610d5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d13565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ec15780601f10610e9657610100808354040283529160200191610ec1565b820191906000526020600020905b815481529060010190602001808311610ea457829003601f168201915b5050505050905090565b6000610ed682611da7565b610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613476602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610f71826111cf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ff8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134fa6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611017611dc4565b73ffffffffffffffffffffffffffffffffffffffff161480611046575061104581611040611dc4565b611d13565b5b61109b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806133a76038913960400191505060405180910390fd5b6110a58383611dd3565b505050565b60006110b66002611e8c565b905090565b6110cc6110c6611dc4565b82611ea1565b611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061353f6031913960400191505060405180910390fd5b61112c838383611f95565b505050565b600061118482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206121d890919063ffffffff16565b905092915050565b6111a783838360405180602001604052806000815250611915565b505050565b6000806111c38360026121f290919063ffffffff16565b50905080915050919050565b60006111ff826040518060600160405280602981526020016134096029913960026122219092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561129e5780601f106112735761010080835404028352916020019161129e565b820191906000526020600020905b81548152906001019060200180831161128157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806133df602a913960400191505060405180910390fd5b611376600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612240565b9050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006113b161137d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061351b6024913960400191505060405180910390fd5b61143d82612255565b9050919050565b60006060808b8b8b8b8b8b8b61145861137d565b30604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140188805190602001908083835b602083106114f957805182526020820191506020810190506020830392506114d6565b6001836020036101000a0380198251168184511680821785525050505050509050018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140199505050505050505050506040516020818303038152906040529050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161486611606848051906020012061225c565b6122b490919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614156116425761163861254f565b925092505061165c565b61165660008081111561165157fe5b612573565b92509250505b995099975050505050505050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117025780601f106116d757610100808354040283529160200191611702565b820191906000526020600020905b8154815290600101906020018083116116e557829003601f168201915b5050505050905090565b61171d611717611dc4565b82612594565b50565b611728611dc4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006117d6611dc4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611883611dc4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b611926611920611dc4565b83611ea1565b61197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061353f6031913960400191505060405180910390fd5b61198784848484612788565b50505050565b606061199882611da7565b6119ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806134cb602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a965780601f10611a6b57610100808354040283529160200191611a96565b820191906000526020600020905b815481529060010190602001808311611a7957829003601f168201915b50505050509050600060098054600181600116156101000203166002900490501415611ac55780915050611c71565b600081511115611b9e576009816040516020018083805460018160011615610100020316600290048015611b305780601f10611b0e576101008083540402835291820191611b30565b820191906000526020600020905b815481529060010190602001808311611b1c575b505082805190602001908083835b60208310611b615780518252602082019150602081019050602083039250611b3e565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611c71565b6009611ba9846127fa565b6040516020018083805460018160011615610100020316600290048015611c075780601f10611be5576101008083540402835291820191611c07565b820191906000526020600020905b815481529060010190602001808311611bf3575b505082805190602001908083835b60208310611c385780518252602082019150602081019050602083039250611c15565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b611c7e61137d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061351b6024913960400191505060405180910390fd5b611d0d84848484612941565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611dbd82600261294790919063ffffffff16565b9050919050565b6000611dce612961565b905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e46836111cf565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e9a826000016129ce565b9050919050565b6000611eac82611da7565b611f01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061337b602c913960400191505060405180910390fd5b6000611f0c836111cf565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f7b57508373ffffffffffffffffffffffffffffffffffffffff16611f6384610ecb565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f8c5750611f8b8185611d13565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611fb5826111cf565b73ffffffffffffffffffffffffffffffffffffffff1614612021576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806134a26029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133356024913960400191505060405180910390fd5b6120b28383836129df565b6120bd600082611dd3565b61210e81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129e490919063ffffffff16565b5061216081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129fe90919063ffffffff16565b5061217781836002612a189092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006121e78360000183612a4d565b60001c905092915050565b6000806000806122058660000186612ad0565b915091508160001c8160001c8090509350935050509250929050565b6000612234846000018460001b84612b69565b60001c90509392505050565b600061224e82600001612c5f565b9050919050565b6000919050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b6000604182511461232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133596022913960400191505060405180910390fd5b601b8160ff16141580156123de5750601c8160ff1614155b15612434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806134326022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612493573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b6000606061256b60405180602001604052806000815250612c70565b915091509091565b6000606082600b016040518060200160405280600081525091509150915091565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61264081611da7565b156126b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b6126bf600083836129df565b61271081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129fe90919063ffffffff16565b5061272781836002612a189092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612793848484611f95565b61279f84848484612c80565b6127f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806133036032913960400191505060405180910390fd5b50505050565b60606000821415612842576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061293c565b600082905060005b6000821461286c578080600101915050600a828161286457fe5b04915061284a565b60608167ffffffffffffffff8111801561288557600080fd5b506040519080825280601f01601f1916602001820160405280156128b85781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461293457600a84816128d957fe5b0660300160f81b828280600190039350815181106128f357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161292c57fe5b0493506128c7565b819450505050505b919050565b50505050565b6000612959836000018360001b612fa3565b905092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129c0573390506129cb565b6129c8612fc6565b90505b90565b600081600001805490509050919050565b505050565b60006129f6836000018360001b61303e565b905092915050565b6000612a10836000018360001b613126565b905092915050565b6000612a44846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613196565b90509392505050565b600081836000018054905011612aae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132e16022913960400191505060405180910390fd5b826000018281548110612abd57fe5b9060005260206000200154905092915050565b60008082846000018054905011612b32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806134546022913960400191505060405180910390fd5b6000846000018481548110612b4357fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390612c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bf5578082015181840152602081019050612bda565b50505050905090810190601f168015612c225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612c4357fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b6000606060008391509150915091565b6000612ca18473ffffffffffffffffffffffffffffffffffffffff16613272565b612cae5760019050612f9b565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b612cd9611dc4565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d89578082015181840152602081019050612d6e565b50505050905090810190601f168015612db65780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e4e5780518252602082019150602081019050602083039250612e2b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612eb0576040519150601f19603f3d011682016040523d82523d6000602084013e612eb5565b606091505b509150915081612f2357600081511115612ed25780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806133036032913960400191505060405180910390fd5b6000818060200190516020811015612f3a57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b600060606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff81830151169250829250505090565b6000808360010160008481526020019081526020016000205490506000811461311a576000600182039050600060018660000180549050039050600086600001828154811061308957fe5b90600052602060002001549050808760000184815481106130a657fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806130de57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613120565b60009150505b92915050565b600061313283836132bd565b61318b578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613190565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561323d5784600001604051806040016040528086815260200185815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050846000018054905085600101600086815260200190815260200160002081905550600191505061326b565b8285600001600183038154811061325057fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156132b457506000801b8214155b92505050919050565b60008083600101600084815260200190815260200160002054141590509291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c75654552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e45434453413a20696e76616c6964207369676e6174757265202776272076616c7565456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e657247534e526563697069656e743a2063616c6c6572206973206e6f742052656c61794875624552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122026c5c4921a3c052af124dd2757cde7f1c595470ca29faccaf6f05d4dd19ded8964736f6c6343000609003347534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a22cb4651161007c578063a22cb465146109ec578063ad61ccd514610a3c578063b88d4fde14610abf578063c87b56dd14610bc4578063e06e0e2214610c6b578063e985e9c514610d465761014d565b806370a082311461058557806374e861d6146105dd57806380274db71461062757806383947ea0146106f657806395d89b411461093b578063a0712d68146109be5761014d565b806323b872dd1161011557806323b872dd146103145780632f745c591461038257806342842e0e146103e45780634f6ccce7146104525780636352211e146104945780636c0360eb146105025761014d565b806301ffc9a71461015257806306fdde03146101b7578063081812fc1461023a578063095ea7b3146102a857806318160ddd146102f6575b600080fd5b61019d6004803603602081101561016857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610dc2565b604051808215151515815260200191505060405180910390f35b6101bf610e29565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ff5780820151818401526020810190506101e4565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102666004803603602081101561025057600080fd5b8101908080359060200190929190505050610ecb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f4600480360360408110156102be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f66565b005b6102fe6110aa565b6040518082815260200191505060405180910390f35b6103806004803603606081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110bb565b005b6103ce6004803603604081101561039857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611131565b6040518082815260200191505060405180910390f35b610450600480360360608110156103fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061118c565b005b61047e6004803603602081101561046857600080fd5b81019080803590602001909291905050506111ac565b6040518082815260200191505060405180910390f35b6104c0600480360360208110156104aa57600080fd5b81019080803590602001909291905050506111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61050a611206565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561054a57808201518184015260208101905061052f565b50505050905090810190601f1680156105775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105c76004803603602081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a8565b6040518082815260200191505060405180910390f35b6105e561137d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106e06004803603602081101561063d57600080fd5b810190808035906020019064010000000081111561065a57600080fd5b82018360208201111561066c57600080fd5b8035906020019184600183028401116401000000008311171561068e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113a7565b6040518082815260200191505060405180910390f35b6108b9600480360361012081101561070d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561076a57600080fd5b82018360208201111561077c57600080fd5b8035906020019184600183028401116401000000008311171561079e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561082957600080fd5b82018360208201111561083b57600080fd5b8035906020019184600183028401116401000000008311171561085d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611444565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108ff5780820151818401526020810190506108e4565b50505050905090810190601f16801561092c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61094361166a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610983578082015181840152602081019050610968565b50505050905090810190601f1680156109b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109ea600480360360208110156109d457600080fd5b810190808035906020019092919050505061170c565b005b610a3a60048036036040811015610a0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611720565b005b610a446118d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a84578082015181840152602081019050610a69565b50505050905090810190601f168015610ab15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bc260048036036080811015610ad557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b3c57600080fd5b820183602082011115610b4e57600080fd5b80359060200191846001830284011164010000000083111715610b7057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611915565b005b610bf060048036036020811015610bda57600080fd5b810190808035906020019092919050505061198d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c30578082015181840152602081019050610c15565b50505050905090810190601f168015610c5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d4460048036036080811015610c8157600080fd5b8101908080359060200190640100000000811115610c9e57600080fd5b820183602082011115610cb057600080fd5b80359060200191846001830284011164010000000083111715610cd257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050611c76565b005b610da860048036036040811015610d5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d13565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ec15780601f10610e9657610100808354040283529160200191610ec1565b820191906000526020600020905b815481529060010190602001808311610ea457829003601f168201915b5050505050905090565b6000610ed682611da7565b610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613476602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610f71826111cf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ff8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806134fa6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611017611dc4565b73ffffffffffffffffffffffffffffffffffffffff161480611046575061104581611040611dc4565b611d13565b5b61109b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806133a76038913960400191505060405180910390fd5b6110a58383611dd3565b505050565b60006110b66002611e8c565b905090565b6110cc6110c6611dc4565b82611ea1565b611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061353f6031913960400191505060405180910390fd5b61112c838383611f95565b505050565b600061118482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206121d890919063ffffffff16565b905092915050565b6111a783838360405180602001604052806000815250611915565b505050565b6000806111c38360026121f290919063ffffffff16565b50905080915050919050565b60006111ff826040518060600160405280602981526020016134096029913960026122219092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561129e5780601f106112735761010080835404028352916020019161129e565b820191906000526020600020905b81548152906001019060200180831161128157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806133df602a913960400191505060405180910390fd5b611376600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612240565b9050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006113b161137d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061351b6024913960400191505060405180910390fd5b61143d82612255565b9050919050565b60006060808b8b8b8b8b8b8b61145861137d565b30604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140188805190602001908083835b602083106114f957805182526020820191506020810190506020830392506114d6565b6001836020036101000a0380198251168184511680821785525050505050509050018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140199505050505050505050506040516020818303038152906040529050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161486611606848051906020012061225c565b6122b490919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614156116425761163861254f565b925092505061165c565b61165660008081111561165157fe5b612573565b92509250505b995099975050505050505050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117025780601f106116d757610100808354040283529160200191611702565b820191906000526020600020905b8154815290600101906020018083116116e557829003601f168201915b5050505050905090565b61171d611717611dc4565b82612594565b50565b611728611dc4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006117d6611dc4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611883611dc4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b611926611920611dc4565b83611ea1565b61197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061353f6031913960400191505060405180910390fd5b61198784848484612788565b50505050565b606061199882611da7565b6119ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806134cb602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a965780601f10611a6b57610100808354040283529160200191611a96565b820191906000526020600020905b815481529060010190602001808311611a7957829003601f168201915b50505050509050600060098054600181600116156101000203166002900490501415611ac55780915050611c71565b600081511115611b9e576009816040516020018083805460018160011615610100020316600290048015611b305780601f10611b0e576101008083540402835291820191611b30565b820191906000526020600020905b815481529060010190602001808311611b1c575b505082805190602001908083835b60208310611b615780518252602082019150602081019050602083039250611b3e565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611c71565b6009611ba9846127fa565b6040516020018083805460018160011615610100020316600290048015611c075780601f10611be5576101008083540402835291820191611c07565b820191906000526020600020905b815481529060010190602001808311611bf3575b505082805190602001908083835b60208310611c385780518252602082019150602081019050602083039250611c15565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b611c7e61137d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061351b6024913960400191505060405180910390fd5b611d0d84848484612941565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611dbd82600261294790919063ffffffff16565b9050919050565b6000611dce612961565b905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e46836111cf565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e9a826000016129ce565b9050919050565b6000611eac82611da7565b611f01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061337b602c913960400191505060405180910390fd5b6000611f0c836111cf565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f7b57508373ffffffffffffffffffffffffffffffffffffffff16611f6384610ecb565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f8c5750611f8b8185611d13565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611fb5826111cf565b73ffffffffffffffffffffffffffffffffffffffff1614612021576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806134a26029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133356024913960400191505060405180910390fd5b6120b28383836129df565b6120bd600082611dd3565b61210e81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129e490919063ffffffff16565b5061216081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129fe90919063ffffffff16565b5061217781836002612a189092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006121e78360000183612a4d565b60001c905092915050565b6000806000806122058660000186612ad0565b915091508160001c8160001c8090509350935050509250929050565b6000612234846000018460001b84612b69565b60001c90509392505050565b600061224e82600001612c5f565b9050919050565b6000919050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b6000604182511461232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133596022913960400191505060405180910390fd5b601b8160ff16141580156123de5750601c8160ff1614155b15612434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806134326022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612493573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b6000606061256b60405180602001604052806000815250612c70565b915091509091565b6000606082600b016040518060200160405280600081525091509150915091565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61264081611da7565b156126b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b6126bf600083836129df565b61271081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129fe90919063ffffffff16565b5061272781836002612a189092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612793848484611f95565b61279f84848484612c80565b6127f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806133036032913960400191505060405180910390fd5b50505050565b60606000821415612842576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061293c565b600082905060005b6000821461286c578080600101915050600a828161286457fe5b04915061284a565b60608167ffffffffffffffff8111801561288557600080fd5b506040519080825280601f01601f1916602001820160405280156128b85781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461293457600a84816128d957fe5b0660300160f81b828280600190039350815181106128f357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161292c57fe5b0493506128c7565b819450505050505b919050565b50505050565b6000612959836000018360001b612fa3565b905092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129c0573390506129cb565b6129c8612fc6565b90505b90565b600081600001805490509050919050565b505050565b60006129f6836000018360001b61303e565b905092915050565b6000612a10836000018360001b613126565b905092915050565b6000612a44846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613196565b90509392505050565b600081836000018054905011612aae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132e16022913960400191505060405180910390fd5b826000018281548110612abd57fe5b9060005260206000200154905092915050565b60008082846000018054905011612b32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806134546022913960400191505060405180910390fd5b6000846000018481548110612b4357fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390612c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bf5578082015181840152602081019050612bda565b50505050905090810190601f168015612c225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612c4357fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b6000606060008391509150915091565b6000612ca18473ffffffffffffffffffffffffffffffffffffffff16613272565b612cae5760019050612f9b565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b612cd9611dc4565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d89578082015181840152602081019050612d6e565b50505050905090810190601f168015612db65780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e4e5780518252602082019150602081019050602083039250612e2b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612eb0576040519150601f19603f3d011682016040523d82523d6000602084013e612eb5565b606091505b509150915081612f2357600081511115612ed25780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806133036032913960400191505060405180910390fd5b6000818060200190516020811015612f3a57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b600060606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff81830151169250829250505090565b6000808360010160008481526020019081526020016000205490506000811461311a576000600182039050600060018660000180549050039050600086600001828154811061308957fe5b90600052602060002001549050808760000184815481106130a657fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806130de57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613120565b60009150505b92915050565b600061313283836132bd565b61318b578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613190565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561323d5784600001604051806040016040528086815260200185815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050846000018054905085600101600086815260200190815260200160002081905550600191505061326b565b8285600001600183038154811061325057fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156132b457506000801b8214155b92505050919050565b60008083600101600084815260200190815260200160002054141590509291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c75654552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e45434453413a20696e76616c6964207369676e6174757265202776272076616c7565456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e657247534e526563697069656e743a2063616c6c6572206973206e6f742052656c61794875624552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122026c5c4921a3c052af124dd2757cde7f1c595470ca29faccaf6f05d4dd19ded8964736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Holder.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Holder.json new file mode 100644 index 0000000..6ea5dcf --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Holder.json @@ -0,0 +1,379 @@ +{ + "fileName": "ERC721Holder.sol", + "contractName": "ERC721Holder", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IERC721Receiver.sol\";\n\n /**\n * @dev Implementation of the {IERC721Receiver} interface.\n *\n * Accepts all token transfers. \n * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}.\n */\ncontract ERC721Holder is IERC721Receiver {\n\n /**\n * @dev See {IERC721Receiver-onERC721Received}.\n *\n * Always returns `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) {\n return this.onERC721Received.selector;\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Holder.sol", + "sourceMap": "340:354:94:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "340:354:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;630:6;655:30;;;648:37;;530:162;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Holder.sol", + "exportedSymbols": { + "ERC721Holder": [ + 11082 + ] + }, + "id": 11083, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11057, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:94" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 11058, + "nodeType": "ImportDirective", + "scope": 11083, + "sourceUnit": 11312, + "src": "58:31:94", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11060, + "name": "IERC721Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11311, + "src": "365:15:94", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$11311", + "typeString": "contract IERC721Receiver" + } + }, + "id": 11061, + "nodeType": "InheritanceSpecifier", + "src": "365:15:94" + } + ], + "contractDependencies": [ + 11311 + ], + "contractKind": "contract", + "documentation": { + "id": 11059, + "nodeType": "StructuredDocumentation", + "src": "93:246:94", + "text": " @dev Implementation of the {IERC721Receiver} interface.\n Accepts all token transfers. \n Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}." + }, + "fullyImplemented": true, + "id": 11082, + "linearizedBaseContracts": [ + 11082, + 11311 + ], + "name": "ERC721Holder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 11310 + ], + "body": { + "id": 11080, + "nodeType": "Block", + "src": "638:54:94", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11076, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "655:4:94", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Holder_$11082", + "typeString": "contract ERC721Holder" + } + }, + "id": 11077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 11081, + "src": "655:21:94", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 11078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "655:30:94", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 11075, + "id": 11079, + "nodeType": "Return", + "src": "648:37:94" + } + ] + }, + "documentation": { + "id": 11062, + "nodeType": "StructuredDocumentation", + "src": "388:137:94", + "text": " @dev See {IERC721Receiver-onERC721Received}.\n Always returns `IERC721Receiver.onERC721Received.selector`." + }, + "functionSelector": "150b7a02", + "id": 11081, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11072, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "612:8:94" + }, + "parameters": { + "id": 11071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11064, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11081, + "src": "556:7:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11063, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "556:7:94", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11066, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11081, + "src": "565:7:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "565:7:94", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11068, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11081, + "src": "574:7:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "574:7:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11070, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11081, + "src": "583:12:94", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11069, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "583:5:94", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "555:41:94" + }, + "returnParameters": { + "id": 11075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11074, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11081, + "src": "630:6:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 11073, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "630:6:94", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "629:8:94" + }, + "scope": 11082, + "src": "530:162:94", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 11083, + "src": "340:354:94" + } + ], + "src": "33:662:94" + }, + "bytecode": "0x608060405234801561001057600080fd5b506101d1806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b6101336004803603608081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100ad57600080fd5b8201836020820111156100bf57600080fd5b803590602001918460018302840111640100000000831117156100e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610187565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b600063150b7a0260e01b905094935050505056fea26469706673582212200114437e13d7bdb79291ffb34eb7702d54d26a1e83fd69ba58ff0ec72403868564736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b6101336004803603608081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100ad57600080fd5b8201836020820111156100bf57600080fd5b803590602001918460018302840111640100000000831117156100e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610187565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b600063150b7a0260e01b905094935050505056fea26469706673582212200114437e13d7bdb79291ffb34eb7702d54d26a1e83fd69ba58ff0ec72403868564736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Metadata.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Metadata.json new file mode 100644 index 0000000..07196b6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Metadata.json @@ -0,0 +1,2525 @@ +{ + "fileName": "ERC721Metadata.sol", + "contractName": "ERC721Metadata", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./ERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"../../introspection/ERC165.sol\";\n\ncontract ERC721Metadata is Context, ERC165, ERC721, IERC721Metadata {\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Base URI\n string private _baseURI;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n /*\n * bytes4(keccak256('name()')) == 0x06fdde03\n * bytes4(keccak256('symbol()')) == 0x95d89b41\n * bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd\n *\n * => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f\n */\n bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;\n\n /**\n * @dev Constructor function\n */\n constructor (string memory name, string memory symbol) public {\n _name = name;\n _symbol = symbol;\n\n // register the supported interfaces to conform to ERC721 via ERC165\n _registerInterface(_INTERFACE_ID_ERC721_METADATA);\n }\n\n /**\n * @dev Gets the token name.\n * @return string representing the token name\n */\n function name() external view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Gets the token symbol.\n * @return string representing the token symbol\n */\n function symbol() external view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the URI for a given token ID. May return an empty string.\n *\n * If the token's URI is non-empty and a base URI was set (via\n * {_setBaseURI}), it will be added to the token ID's URI as a prefix.\n *\n * Reverts if the token ID does not exist.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory) {\n require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n string memory _tokenURI = _tokenURIs[tokenId];\n\n // Even if there is a base URI, it is only appended to non-empty token-specific URIs\n if (bytes(_tokenURI).length == 0) {\n return \"\";\n } else {\n // abi.encodePacked is being used to concatenate strings\n return string(abi.encodePacked(_baseURI, _tokenURI));\n }\n }\n\n /**\n * @dev Internal function to set the token URI for a given token.\n *\n * Reverts if the token ID does not exist.\n *\n * TIP: if all token IDs share a prefix (e.g. if your URIs look like\n * `http://api.myproject.com/token/`), use {_setBaseURI} to store\n * it and save gas.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal {\n require(_exists(tokenId), \"ERC721Metadata: URI set of nonexistent token\");\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev Internal function to set the base URI for all token IDs. It is\n * automatically added as a prefix to the value returned in {tokenURI}.\n *\n * _Available since v2.5.0._\n */\n function _setBaseURI(string memory baseURI) internal {\n _baseURI = baseURI;\n }\n\n /**\n * @dev Returns the base URI set via {_setBaseURI}. This will be\n * automatically added as a preffix in {tokenURI} to each token's URI, when\n * they are non-empty.\n *\n * _Available since v2.5.0._\n */\n function baseURI() external view returns (string memory) {\n return _baseURI;\n }\n\n /**\n * @dev Internal function to burn a specific token.\n * Reverts if the token does not exist.\n * Deprecated, use _burn(uint256) instead.\n * @param owner owner of the token to burn\n * @param tokenId uint256 ID of the token being burned by the msg.sender\n */\n function _burn(address owner, uint256 tokenId) internal {\n super._burn(owner, tokenId);\n\n // Clear metadata (if any)\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Metadata.sol", + "sourceMap": "154:3857:133:-;;;840:254;8:9:-1;5:2;;;30:1;27;20:12;5:2;840:254:133;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;840:254:133;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;840:254:133;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;840:254:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;840:254:133;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;840:254:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;718:40:37;385:10;737:20;;718:18;;;:40;;:::i;:::-;2262::128;2136:10;2281:20;;2262:18;;;:40;;:::i;:::-;920:4:133;912:5;:12;;;;;;;;;;;;:::i;:::-;;944:6;934:7;:16;;;;;;;;;;;;:::i;:::-;;1038:49;774:10;1057:29;;1038:18;;;:49;;:::i;:::-;840:254;;154:3857;;1442:190:37;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;154:3857:133:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "154:3857:133:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;154:3857:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1199:83:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1199:83:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:200:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:200:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3583:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3583:415:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5929:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5929:287:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6865:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6865:132:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2939:223;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:223:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3387:89:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3387:89:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:207:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2513:207:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1391:87:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1391:87:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4776:249:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4776:249:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7720:269;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7720:269:128;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7720:269:128;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7720:269:128;;;;;;;;;;;;;;;:::i;:::-;;1781:545:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1781:545:133;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1781:545:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:145:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5347:145:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:133:37;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;1199:83:133:-;1238:13;1270:5;1263:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:83;:::o;4283:200:128:-;4342:7;4369:16;4377:7;4369;:16::i;:::-;4361:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:15;:24;4468:7;4452:24;;;;;;;;;;;;;;;;;;;;;4445:31;;4283:200;;;:::o;3583:415::-;3646:13;3662:16;3670:7;3662;:16::i;:::-;3646:32;;3702:5;3696:11;;:2;:11;;;;3688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:5;3764:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3789:37;3806:5;3813:12;:10;:12::i;:::-;3789:16;:37::i;:::-;3764:62;3756:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:2;3919:15;:24;3935:7;3919:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3983:7;3979:2;3963:28;;3972:5;3963:28;;;;;;;;;;;;3583:415;;;:::o;5929:287::-;6071:41;6090:12;:10;:12::i;:::-;6104:7;6071:18;:41::i;:::-;6063:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:32;6191:4;6197:2;6201:7;6177:13;:32::i;:::-;5929:287;;;:::o;6865:132::-;6951:39;6968:4;6974:2;6978:7;6951:39;;;;;;;;;;;;:16;:39::i;:::-;6865:132;;;:::o;2939:223::-;2994:7;3013:13;3029:11;:20;3041:7;3029:20;;;;;;;;;;;;;;;;;;;;;3013:36;;3084:1;3067:19;;:5;:19;;;;3059:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:5;3143:12;;;2939:223;;;:::o;3387:89:133:-;3429:13;3461:8;3454:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:89;:::o;2513:207:128:-;2568:7;2612:1;2595:19;;:5;:19;;;;2587:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:34;:17;:24;2697:5;2679:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2672:41;;2513:207;;;:::o;1391:87:133:-;1432:13;1464:7;1457:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:87;:::o;4776:249:128:-;4861:12;:10;:12::i;:::-;4855:18;;:2;:18;;;;4847:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:8;4914:18;:32;4933:12;:10;:12::i;:::-;4914:32;;;;;;;;;;;;;;;:36;4947:2;4914:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5005:2;4976:42;;4991:12;:10;:12::i;:::-;4976:42;;;5009:8;4976:42;;;;;;;;;;;;;;;;;;;;;;4776:249;;:::o;7720:269::-;7834:41;7853:12;:10;:12::i;:::-;7867:7;7834:18;:41::i;:::-;7826:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:43;7957:4;7963:2;7967:7;7976:5;7939:17;:43::i;:::-;7720:269;;;;:::o;1781:545:133:-;1839:13;1872:16;1880:7;1872;:16::i;:::-;1864:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:23;1977:10;:19;1988:7;1977:19;;;;;;;;;;;1951:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:1;2110:9;2104:23;:28;2100:220;;;2148:9;;;;;;;;;;;;;;;;;2100:220;2288:8;2298:9;2271:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2271:37:133;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2271:37:133;;;2257:52;;;1781:545;;;;:::o;5347:145:128:-;5427:4;5450:18;:25;5469:5;5450:25;;;;;;;;;;;;;;;:35;5476:8;5450:35;;;;;;;;;;;;;;;;;;;;;;;;;5443:42;;5347:145;;;;:::o;9158:152::-;9215:4;9231:13;9247:11;:20;9259:7;9247:20;;;;;;;;;;;;;;;;;;;;;9231:36;;9301:1;9284:19;;:5;:19;;;;9277:26;;;9158:152;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;9671:329:128:-;9756:4;9780:16;9788:7;9780;:16::i;:::-;9772:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:13;9871:16;9879:7;9871;:16::i;:::-;9855:32;;9916:5;9905:16;;:7;:16;;;:51;;;;9949:7;9925:31;;:20;9937:7;9925:11;:20::i;:::-;:31;;;9905:51;:87;;;;9960:32;9977:5;9984:7;9960:16;:32::i;:::-;9905:87;9897:96;;;9671:329;;;;:::o;13281:447::-;13394:4;13374:24;;:16;13382:7;13374;:16::i;:::-;:24;;;13366:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:1;13462:16;;:2;:16;;;;13454:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:23;13545:7;13530:14;:23::i;:::-;13564:35;:17;:23;13582:4;13564:23;;;;;;;;;;;;;;;:33;:35::i;:::-;13609:33;:17;:21;13627:2;13609:21;;;;;;;;;;;;;;;:31;:33::i;:::-;13676:2;13653:11;:20;13665:7;13653:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13713:7;13709:2;13694:27;;13703:4;13694:27;;;;;;;;;;;;13281:447;;;:::o;1065:112:28:-;1130:7;1156;:14;;;1149:21;;1065:112;;;:::o;8694:269:128:-;8803:32;8817:4;8823:2;8827:7;8803:13;:32::i;:::-;8853:48;8876:4;8882:2;8886:7;8895:5;8853:22;:48::i;:::-;8845:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8694:269;;;;:::o;15580:171::-;15679:1;15643:38;;:15;:24;15659:7;15643:24;;;;;;;;;;;;;;;;;;;;;:38;;;15639:106;;15732:1;15697:15;:24;15713:7;15697:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15639:106;15580:171;:::o;1367:108:28:-;1447:21;1466:1;1447:7;:14;;;:18;;:21;;;;:::i;:::-;1430:7;:14;;:38;;;;1367:108;:::o;1183:178::-;1353:1;1335:7;:14;;;:19;;;;;;;;;;;1183:178;:::o;14367:1051:128:-;14488:4;14513:15;:2;:13;;;:15::i;:::-;14508:58;;14551:4;14544:11;;;;14508:58;14635:12;14649:23;14676:2;:7;;14736:2;14720:36;;;:45;;;;14779:12;:10;:12::i;:::-;14805:4;14823:7;14844:5;14684:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14684:175:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14684:175:128;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;14684:175:128;14676:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14676:184:128;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14634:226:128;;;;14875:7;14870:542;;14922:1;14902:10;:17;:21;14898:376;;;15067:10;15061:17;15127:15;15114:10;15110:2;15106:19;15099:44;15016:145;15199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14870:542;15304:13;15331:10;15320:32;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:32:128;;;;;;;;;;;;;;;;15304:48;;754:10;15384:16;;15374:26;;;:6;:26;;;;15366:35;;;;;14367:1051;;;;;;;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Metadata.sol", + "exportedSymbols": { + "ERC721Metadata": [ + 11798 + ] + }, + "id": 11799, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11627, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:133" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 11628, + "nodeType": "ImportDirective", + "scope": 11799, + "sourceUnit": 27, + "src": "25:31:133", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 11629, + "nodeType": "ImportDirective", + "scope": 11799, + "sourceUnit": 11210, + "src": "57:22:133", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 11630, + "nodeType": "ImportDirective", + "scope": 11799, + "sourceUnit": 12133, + "src": "80:31:133", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 11631, + "nodeType": "ImportDirective", + "scope": 11799, + "sourceUnit": 4630, + "src": "112:40:133", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11632, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "181:7:133", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 11633, + "nodeType": "InheritanceSpecifier", + "src": "181:7:133" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11634, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4629, + "src": "190:6:133", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$4629", + "typeString": "contract ERC165" + } + }, + "id": 11635, + "nodeType": "InheritanceSpecifier", + "src": "190:6:133" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11636, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11209, + "src": "198:6:133", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11209", + "typeString": "contract ERC721" + } + }, + "id": 11637, + "nodeType": "InheritanceSpecifier", + "src": "198:6:133" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11638, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12132, + "src": "206:15:133", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$12132", + "typeString": "contract IERC721Metadata" + } + }, + "id": 11639, + "nodeType": "InheritanceSpecifier", + "src": "206:15:133" + } + ], + "contractDependencies": [ + 26, + 4629, + 4862, + 11209, + 12070, + 12132 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 11798, + "linearizedBaseContracts": [ + 11798, + 12132, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 11641, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 11798, + "src": "246:20:133", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 11640, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "246:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11643, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 11798, + "src": "293:22:133", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 11642, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "293:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11645, + "name": "_baseURI", + "nodeType": "VariableDeclaration", + "scope": 11798, + "src": "338:23:133", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 11644, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "338:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11649, + "name": "_tokenURIs", + "nodeType": "VariableDeclaration", + "scope": 11798, + "src": "407:45:133", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 11648, + "keyType": { + "id": 11646, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "415:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "407:26:133", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 11647, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "426:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 11652, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "VariableDeclaration", + "scope": 11798, + "src": "718:66:133", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 11650, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "718:6:133", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783562356531333966", + "id": 11651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "774:10:133", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "visibility": "private" + }, + { + "body": { + "id": 11671, + "nodeType": "Block", + "src": "902:192:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11659, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11641, + "src": "912:5:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11660, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11654, + "src": "920:4:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "912:12:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 11662, + "nodeType": "ExpressionStatement", + "src": "912:12:133" + }, + { + "expression": { + "argumentTypes": null, + "id": 11665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11663, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11643, + "src": "934:7:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11664, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11656, + "src": "944:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "934:16:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 11666, + "nodeType": "ExpressionStatement", + "src": "934:16:133" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11668, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11652, + "src": "1057:29:133", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 11667, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4628, + "src": "1038:18:133", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 11669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1038:49:133", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11670, + "nodeType": "ExpressionStatement", + "src": "1038:49:133" + } + ] + }, + "documentation": "@dev Constructor function", + "id": 11672, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11654, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 11672, + "src": "853:18:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11653, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "853:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11656, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 11672, + "src": "873:20:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11655, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "873:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "852:42:133" + }, + "returnParameters": { + "id": 11658, + "nodeType": "ParameterList", + "parameters": [], + "src": "902:0:133" + }, + "scope": 11798, + "src": "840:254:133", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11679, + "nodeType": "Block", + "src": "1253:29:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11677, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11641, + "src": "1270:5:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 11676, + "id": 11678, + "nodeType": "Return", + "src": "1263:12:133" + } + ] + }, + "documentation": "@dev Gets the token name.\n@return string representing the token name", + "id": 11680, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11673, + "nodeType": "ParameterList", + "parameters": [], + "src": "1212:2:133" + }, + "returnParameters": { + "id": 11676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11675, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11680, + "src": "1238:13:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11674, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1238:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1237:15:133" + }, + "scope": 11798, + "src": "1199:83:133", + "stateMutability": "view", + "superFunction": 12119, + "visibility": "external" + }, + { + "body": { + "id": 11687, + "nodeType": "Block", + "src": "1447:31:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11685, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11643, + "src": "1464:7:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 11684, + "id": 11686, + "nodeType": "Return", + "src": "1457:14:133" + } + ] + }, + "documentation": "@dev Gets the token symbol.\n@return string representing the token symbol", + "id": 11688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11681, + "nodeType": "ParameterList", + "parameters": [], + "src": "1406:2:133" + }, + "returnParameters": { + "id": 11684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11683, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11688, + "src": "1432:13:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11682, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1432:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1431:15:133" + }, + "scope": 11798, + "src": "1391:87:133", + "stateMutability": "view", + "superFunction": 12124, + "visibility": "external" + }, + { + "body": { + "id": 11727, + "nodeType": "Block", + "src": "1854:472:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11697, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11690, + "src": "1880:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11696, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10874, + "src": "1872:7:133", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1872:16:133", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 11699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1890:49:133", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", + "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" + }, + "value": "ERC721Metadata: URI query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", + "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" + } + ], + "id": 11695, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1864:7:133", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1864:76:133", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11701, + "nodeType": "ExpressionStatement", + "src": "1864:76:133" + }, + { + "assignments": [ + 11703 + ], + "declarations": [ + { + "constant": false, + "id": 11703, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 11727, + "src": "1951:23:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11702, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1951:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11707, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11704, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11649, + "src": "1977:10:133", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 11706, + "indexExpression": { + "argumentTypes": null, + "id": 11705, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11690, + "src": "1988:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1977:19:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1951:45:133" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11709, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "2110:9:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2104:5:133", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 11710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2104:16:133", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 11711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2104:23:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 11712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2131:1:133", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2104:28:133", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11725, + "nodeType": "Block", + "src": "2174:146:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11720, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11645, + "src": "2288:8:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + { + "argumentTypes": null, + "id": 11721, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "2298:9:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 11718, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13930, + "src": "2271:3:133", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 11719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2271:16:133", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 11722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2271:37:133", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2264:6:133", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": "string" + }, + "id": 11723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2264:45:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 11694, + "id": 11724, + "nodeType": "Return", + "src": "2257:52:133" + } + ] + }, + "id": 11726, + "nodeType": "IfStatement", + "src": "2100:220:133", + "trueBody": { + "id": 11716, + "nodeType": "Block", + "src": "2134:34:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "", + "id": 11714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2155:2:133", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "functionReturnParameters": 11694, + "id": 11715, + "nodeType": "Return", + "src": "2148:9:133" + } + ] + } + } + ] + }, + "documentation": "@dev Returns the URI for a given token ID. May return an empty string.\n * If the token's URI is non-empty and a base URI was set (via\n{_setBaseURI}), it will be added to the token ID's URI as a prefix.\n * Reverts if the token ID does not exist.", + "id": 11728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11690, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11728, + "src": "1799:15:133", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1799:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1798:17:133" + }, + "returnParameters": { + "id": 11694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11728, + "src": "1839:13:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11692, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1839:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1838:15:133" + }, + "scope": 11798, + "src": "1781:545:133", + "stateMutability": "view", + "superFunction": 12131, + "visibility": "external" + }, + { + "body": { + "id": 11748, + "nodeType": "Block", + "src": "2723:131:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11737, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11730, + "src": "2749:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11736, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10874, + "src": "2741:7:133", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 11738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2741:16:133", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", + "id": 11739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2759:46:133", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978", + "typeString": "literal_string \"ERC721Metadata: URI set of nonexistent token\"" + }, + "value": "ERC721Metadata: URI set of nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978", + "typeString": "literal_string \"ERC721Metadata: URI set of nonexistent token\"" + } + ], + "id": 11735, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2733:7:133", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2733:73:133", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11741, + "nodeType": "ExpressionStatement", + "src": "2733:73:133" + }, + { + "expression": { + "argumentTypes": null, + "id": 11746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11742, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11649, + "src": "2816:10:133", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 11744, + "indexExpression": { + "argumentTypes": null, + "id": 11743, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11730, + "src": "2827:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2816:19:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11745, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11732, + "src": "2838:9:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2816:31:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 11747, + "nodeType": "ExpressionStatement", + "src": "2816:31:133" + } + ] + }, + "documentation": "@dev Internal function to set the token URI for a given token.\n * Reverts if the token ID does not exist.\n * TIP: if all token IDs share a prefix (e.g. if your URIs look like\n`http://api.myproject.com/token/`), use {_setBaseURI} to store\nit and save gas.", + "id": 11749, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11730, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11749, + "src": "2672:15:133", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2672:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11732, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 11749, + "src": "2689:23:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11731, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2689:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2671:42:133" + }, + "returnParameters": { + "id": 11734, + "nodeType": "ParameterList", + "parameters": [], + "src": "2723:0:133" + }, + "scope": 11798, + "src": "2650:204:133", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 11758, + "nodeType": "Block", + "src": "3120:35:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11754, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11645, + "src": "3130:8:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11755, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11751, + "src": "3141:7:133", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3130:18:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 11757, + "nodeType": "ExpressionStatement", + "src": "3130:18:133" + } + ] + }, + "documentation": "@dev Internal function to set the base URI for all token IDs. It is\nautomatically added as a prefix to the value returned in {tokenURI}.\n * _Available since v2.5.0._", + "id": 11759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBaseURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11751, + "name": "baseURI", + "nodeType": "VariableDeclaration", + "scope": 11759, + "src": "3088:21:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11750, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3088:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3087:23:133" + }, + "returnParameters": { + "id": 11753, + "nodeType": "ParameterList", + "parameters": [], + "src": "3120:0:133" + }, + "scope": 11798, + "src": "3067:88:133", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 11766, + "nodeType": "Block", + "src": "3444:32:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11764, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11645, + "src": "3461:8:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 11763, + "id": 11765, + "nodeType": "Return", + "src": "3454:15:133" + } + ] + }, + "documentation": "@dev Returns the base URI set via {_setBaseURI}. This will be\nautomatically added as a preffix in {tokenURI} to each token's URI, when\nthey are non-empty.\n * _Available since v2.5.0._", + "id": 11767, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "baseURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11760, + "nodeType": "ParameterList", + "parameters": [], + "src": "3403:2:133" + }, + "returnParameters": { + "id": 11763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11762, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11767, + "src": "3429:13:133", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11761, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3429:6:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3428:15:133" + }, + "scope": 11798, + "src": "3387:89:133", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 11796, + "nodeType": "Block", + "src": "3825:184:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11777, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11769, + "src": "3847:5:133", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11778, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11771, + "src": "3854:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11774, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14154, + "src": "3835:5:133", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Metadata_$11798", + "typeString": "contract super ERC721Metadata" + } + }, + "id": 11776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 11042, + "src": "3835:11:133", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3835:27:133", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11780, + "nodeType": "ExpressionStatement", + "src": "3835:27:133" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11782, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11649, + "src": "3918:10:133", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 11784, + "indexExpression": { + "argumentTypes": null, + "id": 11783, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11771, + "src": "3929:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3918:19:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 11781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3912:5:133", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 11785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3912:26:133", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 11786, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3912:33:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 11787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3949:1:133", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3912:38:133", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 11795, + "nodeType": "IfStatement", + "src": "3908:95:133", + "trueBody": { + "id": 11794, + "nodeType": "Block", + "src": "3952:51:133", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3966:26:133", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11789, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11649, + "src": "3973:10:133", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 11791, + "indexExpression": { + "argumentTypes": null, + "id": 11790, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11771, + "src": "3984:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3973:19:133", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11793, + "nodeType": "ExpressionStatement", + "src": "3966:26:133" + } + ] + } + } + ] + }, + "documentation": "@dev Internal function to burn a specific token.\nReverts if the token does not exist.\nDeprecated, use _burn(uint256) instead.\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned by the msg.sender", + "id": 11797, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11769, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 11797, + "src": "3784:13:133", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11768, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3784:7:133", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11771, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11797, + "src": "3799:15:133", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3799:7:133", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3783:32:133" + }, + "returnParameters": { + "id": 11773, + "nodeType": "ParameterList", + "parameters": [], + "src": "3825:0:133" + }, + "scope": 11798, + "src": "3769:240:133", + "stateMutability": "nonpayable", + "superFunction": 11042, + "visibility": "internal" + } + ], + "scope": 11799, + "src": "154:3857:133" + } + ], + "src": "0:4012:133" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200236338038062002363833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052505050620001cd6301ffc9a760e01b6200023760201b60201c565b620001e56380ac58cd60e01b6200023760201b60201c565b8160059080519060200190620001fd92919062000340565b5080600690805190602001906200021692919062000340565b506200022f635b5e139f60e01b6200023760201b60201c565b5050620003ef565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200038357805160ff1916838001178555620003b4565b82800160010185558215620003b4579182015b82811115620003b357825182559160200191906001019062000396565b5b509050620003c39190620003c7565b5090565b620003ec91905b80821115620003e8576000816000905550600101620003ce565b5090565b90565b611f6480620003ff6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c0360eb1161008c578063a22cb46511610066578063a22cb4651461053b578063b88d4fde1461058b578063c87b56dd14610690578063e985e9c514610737576100ea565b80636c0360eb146103dd57806370a082311461046057806395d89b41146104b8576100ea565b8063095ea7b3116100c8578063095ea7b31461024557806323b872dd1461029357806342842e0e146103015780636352211e1461036f576100ea565b806301ffc9a7146100ef57806306fdde0314610154578063081812fc146101d7575b600080fd5b61013a6004803603602081101561010557600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506107b3565b604051808215151515815260200191505060405180910390f35b61015c61081a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019c578082015181840152602081019050610181565b50505050905090810190601f1680156101c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610203600480360360208110156101ed57600080fd5b81019080803590602001909291905050506108bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102916004803603604081101561025b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610957565b005b6102ff600480360360608110156102a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b005b61036d6004803603606081101561031757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb4565b005b61039b6004803603602081101561038557600080fd5b8101908080359060200190929190505050610bd4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e5610c9c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042557808201518184015260208101905061040a565b50505050905090810190601f1680156104525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104a26004803603602081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3e565b6040518082815260200191505060405180910390f35b6104c0610e13565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105005780820151818401526020810190506104e5565b50505050905090810190601f16801561052d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105896004803603604081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610eb5565b005b61068e600480360360808110156105a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561060857600080fd5b82018360208201111561061a57600080fd5b8035906020019184600183028401116401000000008311171561063c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061106d565b005b6106bc600480360360208110156106a657600080fd5b81019080803590602001909291905050506110e5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106fc5780820151818401526020810190506106e1565b50505050905090810190601f1680156107295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107996004803603604081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e7565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b25780601f10610887576101008083540402835291602001916108b2565b820191906000526020600020905b81548152906001019060200180831161089557829003601f168201915b5050505050905090565b60006108c78261137b565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611e5a602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061096282610bd4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611ede6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a086113ed565b73ffffffffffffffffffffffffffffffffffffffff161480610a375750610a3681610a316113ed565b6112e7565b5b610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611dcf6038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610b4f610b496113ed565b826113f5565b610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611eff6031913960400191505060405180910390fd5b610baf8383836114e9565b505050565b610bcf8383836040518060200160405280600081525061106d565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e316029913960400191505060405180910390fd5b80915050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e07602a913960400191505060405180910390fd5b610e0c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611744565b9050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eab5780601f10610e8057610100808354040283529160200191610eab565b820191906000526020600020905b815481529060010190602001808311610e8e57829003601f168201915b5050505050905090565b610ebd6113ed565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000610f6b6113ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110186113ed565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61107e6110786113ed565b836113f5565b6110d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611eff6031913960400191505060405180910390fd5b6110df84848484611752565b50505050565b60606110f08261137b565b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611eaf602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111ee5780601f106111c3576101008083540402835291602001916111ee565b820191906000526020600020905b8154815290600101906020018083116111d157829003601f168201915b5050505050905060008151141561121757604051806020016040528060008152509150506112e2565b60078160405160200180838054600181600116156101000203166002900480156112785780601f10611256576101008083540402835291820191611278565b820191906000526020600020905b815481529060010190602001808311611264575b505082805190602001908083835b602083106112a95780518252602082019150602081019050602083039250611286565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b60006114008261137b565b611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611da3602c913960400191505060405180910390fd5b600061146083610bd4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114cf57508373ffffffffffffffffffffffffffffffffffffffff166114b7846108bc565b73ffffffffffffffffffffffffffffffffffffffff16145b806114e057506114df81856112e7565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661150982610bd4565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e866029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d7f6024913960400191505060405180910390fd5b611604816117c4565b61164b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611882565b611692600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206118a5565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081600001549050919050565b61175d8484846114e9565b611769848484846118bb565b6117be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611d4d6032913960400191505060405180910390fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187f5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b61189a60018260000154611bf790919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006118dc8473ffffffffffffffffffffffffffffffffffffffff16611c41565b6118e95760019050611bef565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b61192d6113ed565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156119dd5780820151818401526020810190506119c2565b50505050905090810190601f168015611a0a5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611aa25780518252602082019150602081019050602083039250611a7f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b04576040519150601f19603f3d011682016040523d82523d6000602084013e611b09565b606091505b509150915081611b7757600081511115611b265780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611d4d6032913960400191505060405180910390fd5b6000818060200190516020811015611b8e57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b6000611c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8c565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611c8357506000801b8214155b92505050919050565b6000838311158290611d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cfe578082015181840152602081019050611ce3565b50505050905090810190601f168015611d2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a72315820b595291fa773495237e571f33a07b56c0d11d44b9cf2a85d9505ee20700417c264736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c0360eb1161008c578063a22cb46511610066578063a22cb4651461053b578063b88d4fde1461058b578063c87b56dd14610690578063e985e9c514610737576100ea565b80636c0360eb146103dd57806370a082311461046057806395d89b41146104b8576100ea565b8063095ea7b3116100c8578063095ea7b31461024557806323b872dd1461029357806342842e0e146103015780636352211e1461036f576100ea565b806301ffc9a7146100ef57806306fdde0314610154578063081812fc146101d7575b600080fd5b61013a6004803603602081101561010557600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506107b3565b604051808215151515815260200191505060405180910390f35b61015c61081a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019c578082015181840152602081019050610181565b50505050905090810190601f1680156101c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610203600480360360208110156101ed57600080fd5b81019080803590602001909291905050506108bc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102916004803603604081101561025b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610957565b005b6102ff600480360360608110156102a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b005b61036d6004803603606081101561031757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb4565b005b61039b6004803603602081101561038557600080fd5b8101908080359060200190929190505050610bd4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e5610c9c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042557808201518184015260208101905061040a565b50505050905090810190601f1680156104525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104a26004803603602081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3e565b6040518082815260200191505060405180910390f35b6104c0610e13565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105005780820151818401526020810190506104e5565b50505050905090810190601f16801561052d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105896004803603604081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610eb5565b005b61068e600480360360808110156105a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561060857600080fd5b82018360208201111561061a57600080fd5b8035906020019184600183028401116401000000008311171561063c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061106d565b005b6106bc600480360360208110156106a657600080fd5b81019080803590602001909291905050506110e5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106fc5780820151818401526020810190506106e1565b50505050905090810190601f1680156107295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107996004803603604081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e7565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b25780601f10610887576101008083540402835291602001916108b2565b820191906000526020600020905b81548152906001019060200180831161089557829003601f168201915b5050505050905090565b60006108c78261137b565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611e5a602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061096282610bd4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611ede6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a086113ed565b73ffffffffffffffffffffffffffffffffffffffff161480610a375750610a3681610a316113ed565b6112e7565b5b610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611dcf6038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610b4f610b496113ed565b826113f5565b610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611eff6031913960400191505060405180910390fd5b610baf8383836114e9565b505050565b610bcf8383836040518060200160405280600081525061106d565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e316029913960400191505060405180910390fd5b80915050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d345780601f10610d0957610100808354040283529160200191610d34565b820191906000526020600020905b815481529060010190602001808311610d1757829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611e07602a913960400191505060405180910390fd5b610e0c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611744565b9050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eab5780601f10610e8057610100808354040283529160200191610eab565b820191906000526020600020905b815481529060010190602001808311610e8e57829003601f168201915b5050505050905090565b610ebd6113ed565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000610f6b6113ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110186113ed565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61107e6110786113ed565b836113f5565b6110d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611eff6031913960400191505060405180910390fd5b6110df84848484611752565b50505050565b60606110f08261137b565b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611eaf602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111ee5780601f106111c3576101008083540402835291602001916111ee565b820191906000526020600020905b8154815290600101906020018083116111d157829003601f168201915b5050505050905060008151141561121757604051806020016040528060008152509150506112e2565b60078160405160200180838054600181600116156101000203166002900480156112785780601f10611256576101008083540402835291820191611278565b820191906000526020600020905b815481529060010190602001808311611264575b505082805190602001908083835b602083106112a95780518252602082019150602081019050602083039250611286565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b60006114008261137b565b611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611da3602c913960400191505060405180910390fd5b600061146083610bd4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114cf57508373ffffffffffffffffffffffffffffffffffffffff166114b7846108bc565b73ffffffffffffffffffffffffffffffffffffffff16145b806114e057506114df81856112e7565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661150982610bd4565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e866029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d7f6024913960400191505060405180910390fd5b611604816117c4565b61164b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611882565b611692600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206118a5565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600081600001549050919050565b61175d8484846114e9565b611769848484846118bb565b6117be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611d4d6032913960400191505060405180910390fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187f5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b61189a60018260000154611bf790919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006118dc8473ffffffffffffffffffffffffffffffffffffffff16611c41565b6118e95760019050611bef565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b61192d6113ed565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156119dd5780820151818401526020810190506119c2565b50505050905090810190601f168015611a0a5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611aa25780518252602082019150602081019050602083039250611a7f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b04576040519150601f19603f3d011682016040523d82523d6000602084013e611b09565b606091505b509150915081611b7757600081511115611b265780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611d4d6032913960400191505060405180910390fd5b6000818060200190516020811015611b8e57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b6000611c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8c565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611c8357506000801b8214155b92505050919050565b6000838311158290611d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cfe578082015181840152602081019050611ce3565b50505050905090810190601f168015611d2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a72315820b595291fa773495237e571f33a07b56c0d11d44b9cf2a85d9505ee20700417c264736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721MetadataMintable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721MetadataMintable.json new file mode 100644 index 0000000..f7755c7 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721MetadataMintable.json @@ -0,0 +1,955 @@ +{ + "fileName": "ERC721MetadataMintable.sol", + "contractName": "ERC721MetadataMintable", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721Metadata.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n\n/**\n * @title ERC721MetadataMintable\n * @dev ERC721 minting logic with metadata.\n */\ncontract ERC721MetadataMintable is ERC721, ERC721Metadata, MinterRole {\n /**\n * @dev Function to mint tokens.\n * @param to The address that will receive the minted tokens.\n * @param tokenId The token id to mint.\n * @param tokenURI The token URI of the minted token.\n * @return A boolean that indicates if the operation was successful.\n */\n function mintWithTokenURI(address to, uint256 tokenId, string memory tokenURI) public onlyMinter returns (bool) {\n _mint(to, tokenId);\n _setTokenURI(tokenId, tokenURI);\n return true;\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721MetadataMintable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "mintWithTokenURI", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721MetadataMintable.sol", + "exportedSymbols": { + "ERC721MetadataMintable": [ + 11835 + ] + }, + "id": 11836, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11800, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:134" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Metadata.sol", + "file": "./ERC721Metadata.sol", + "id": 11801, + "nodeType": "ImportDirective", + "scope": 11836, + "sourceUnit": 11799, + "src": "25:30:134", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 11802, + "nodeType": "ImportDirective", + "scope": 11836, + "sourceUnit": 1409, + "src": "56:43:134", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11803, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11209, + "src": "222:6:134", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11209", + "typeString": "contract ERC721" + } + }, + "id": 11804, + "nodeType": "InheritanceSpecifier", + "src": "222:6:134" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11805, + "name": "ERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11798, + "src": "230:14:134", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Metadata_$11798", + "typeString": "contract ERC721Metadata" + } + }, + "id": 11806, + "nodeType": "InheritanceSpecifier", + "src": "230:14:134" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11807, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1408, + "src": "246:10:134", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$1408", + "typeString": "contract MinterRole" + } + }, + "id": 11808, + "nodeType": "InheritanceSpecifier", + "src": "246:10:134" + } + ], + "contractDependencies": [ + 26, + 1408, + 4629, + 4862, + 11209, + 11798, + 12070, + 12132 + ], + "contractKind": "contract", + "documentation": "@title ERC721MetadataMintable\n@dev ERC721 minting logic with metadata.", + "fullyImplemented": false, + "id": 11835, + "linearizedBaseContracts": [ + 11835, + 1408, + 11798, + 12132, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721MetadataMintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11833, + "nodeType": "Block", + "src": "669:97:134", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11822, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11810, + "src": "685:2:134", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11823, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11812, + "src": "689:7:134", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11821, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10999, + "src": "679:5:134", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "679:18:134", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11825, + "nodeType": "ExpressionStatement", + "src": "679:18:134" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11827, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11812, + "src": "720:7:134", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11828, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11814, + "src": "729:8:134", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11826, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11749, + "src": "707:12:134", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 11829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "707:31:134", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11830, + "nodeType": "ExpressionStatement", + "src": "707:31:134" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "755:4:134", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11820, + "id": 11832, + "nodeType": "Return", + "src": "748:11:134" + } + ] + }, + "documentation": "@dev Function to mint tokens.\n@param to The address that will receive the minted tokens.\n@param tokenId The token id to mint.\n@param tokenURI The token URI of the minted token.\n@return A boolean that indicates if the operation was successful.", + "id": 11834, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 11817, + "modifierName": { + "argumentTypes": null, + "id": 11816, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "643:10:134", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "643:10:134" + } + ], + "name": "mintWithTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11810, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11834, + "src": "583:10:134", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11809, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "583:7:134", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11812, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11834, + "src": "595:15:134", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "595:7:134", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11814, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 11834, + "src": "612:22:134", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11813, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "612:6:134", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "582:53:134" + }, + "returnParameters": { + "id": 11820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11819, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11834, + "src": "663:4:134", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11818, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "663:4:134", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "662:6:134" + }, + "scope": 11835, + "src": "557:209:134", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 11836, + "src": "187:581:134" + } + ], + "src": "0:769:134" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Mintable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Mintable.json new file mode 100644 index 0000000..2d3248c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Mintable.json @@ -0,0 +1,1329 @@ +{ + "fileName": "ERC721Mintable.sol", + "contractName": "ERC721Mintable", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n/**\n * @title ERC721Mintable\n * @dev ERC721 minting logic.\n */\ncontract ERC721Mintable is ERC721, MinterRole {\n /**\n * @dev Function to mint tokens.\n * @param to The address that will receive the minted token.\n * @param tokenId The token id to mint.\n * @return A boolean that indicates if the operation was successful.\n */\n function mint(address to, uint256 tokenId) public onlyMinter returns (bool) {\n _mint(to, tokenId);\n return true;\n }\n\n /**\n * @dev Function to safely mint tokens.\n * @param to The address that will receive the minted token.\n * @param tokenId The token id to mint.\n * @return A boolean that indicates if the operation was successful.\n */\n function safeMint(address to, uint256 tokenId) public onlyMinter returns (bool) {\n _safeMint(to, tokenId);\n return true;\n }\n\n /**\n * @dev Function to safely mint tokens.\n * @param to The address that will receive the minted token.\n * @param tokenId The token id to mint.\n * @param _data bytes data to send along with a safe transfer check.\n * @return A boolean that indicates if the operation was successful.\n */\n function safeMint(address to, uint256 tokenId, bytes memory _data) public onlyMinter returns (bool) {\n _safeMint(to, tokenId, _data);\n return true;\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Mintable.sol", + "sourceMap": "156:1297:135:-;;;718:40:37;385:10;737:20;;718:18;;;:40;;:::i;:::-;2262::128;2136:10;2281:20;;2262:18;;;:40;;:::i;:::-;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;156:1297:135;;1442:190:37;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;156:1297:135:-;;;;;;;", + "deployedSourceMap": "156:1297:135:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;156:1297:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4283:200:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:200:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3583:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3583:415:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5929:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5929:287:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;443:132:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;443:132:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6865::128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6865:132:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2939:223;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:223:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2513:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2513:207:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1284:167:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1284:167:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1284:167:135;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1284:167:135;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1284:167:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1284:167:135;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;823:140:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;823:140:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4776:249:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4776:249:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;494:107:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7720:269:128;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7720:269:128;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7720:269:128;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7720:269:128;;;;;;;;;;;;;;;:::i;:::-;;5347:145;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5347:145:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:133:37;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;4283:200:128:-;4342:7;4369:16;4377:7;4369;:16::i;:::-;4361:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:15;:24;4468:7;4452:24;;;;;;;;;;;;;;;;;;;;;4445:31;;4283:200;;;:::o;3583:415::-;3646:13;3662:16;3670:7;3662;:16::i;:::-;3646:32;;3702:5;3696:11;;:2;:11;;;;3688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:5;3764:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3789:37;3806:5;3813:12;:10;:12::i;:::-;3789:16;:37::i;:::-;3764:62;3756:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:2;3919:15;:24;3935:7;3919:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3983:7;3979:2;3963:28;;3972:5;3963:28;;;;;;;;;;;;3583:415;;;:::o;5929:287::-;6071:41;6090:12;:10;:12::i;:::-;6104:7;6071:18;:41::i;:::-;6063:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:32;6191:4;6197:2;6201:7;6177:13;:32::i;:::-;5929:287;;;:::o;443:132:135:-;513:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;529:18:135;535:2;539:7;529:5;:18::i;:::-;564:4;557:11;;443:132;;;;:::o;6865::128:-;6951:39;6968:4;6974:2;6978:7;6951:39;;;;;;;;;;;;:16;:39::i;:::-;6865:132;;;:::o;2939:223::-;2994:7;3013:13;3029:11;:20;3041:7;3029:20;;;;;;;;;;;;;;;;;;;;;3013:36;;3084:1;3067:19;;:5;:19;;;;3059:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:5;3143:12;;;2939:223;;;:::o;2513:207::-;2568:7;2612:1;2595:19;;:5;:19;;;;2587:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:34;:17;:24;2697:5;2679:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2672:41;;2513:207;;;:::o;1284:167:135:-;1378:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1394:29:135;1404:2;1408:7;1417:5;1394:9;:29::i;:::-;1440:4;1433:11;;1284:167;;;;;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;823:140:135:-;897:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:22:135;923:2;927:7;913:9;:22::i;:::-;952:4;945:11;;823:140;;;;:::o;4776:249:128:-;4861:12;:10;:12::i;:::-;4855:18;;:2;:18;;;;4847:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:8;4914:18;:32;4933:12;:10;:12::i;:::-;4914:32;;;;;;;;;;;;;;;:36;4947:2;4914:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5005:2;4976:42;;4991:12;:10;:12::i;:::-;4976:42;;;5009:8;4976:42;;;;;;;;;;;;;;;;;;;;;;4776:249;;:::o;494:107:8:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;7720:269:128:-;7834:41;7853:12;:10;:12::i;:::-;7867:7;7834:18;:41::i;:::-;7826:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:43;7957:4;7963:2;7967:7;7976:5;7939:17;:43::i;:::-;7720:269;;;;:::o;5347:145::-;5427:4;5450:18;:25;5469:5;5450:25;;;;;;;;;;;;;;;:35;5476:8;5450:35;;;;;;;;;;;;;;;;;;;;;;;;;5443:42;;5347:145;;;;:::o;9158:152::-;9215:4;9231:13;9247:11;:20;9259:7;9247:20;;;;;;;;;;;;;;;;;;;;;9231:36;;9301:1;9284:19;;:5;:19;;;;9277:26;;;9158:152;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;9671:329:128:-;9756:4;9780:16;9788:7;9780;:16::i;:::-;9772:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:13;9871:16;9879:7;9871;:16::i;:::-;9855:32;;9916:5;9905:16;;:7;:16;;;:51;;;;9949:7;9925:31;;:20;9937:7;9925:11;:20::i;:::-;:31;;;9905:51;:87;;;;9960:32;9977:5;9984:7;9960:16;:32::i;:::-;9905:87;9897:96;;;9671:329;;;;:::o;13281:447::-;13394:4;13374:24;;:16;13382:7;13374;:16::i;:::-;:24;;;13366:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:1;13462:16;;:2;:16;;;;13454:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:23;13545:7;13530:14;:23::i;:::-;13564:35;:17;:23;13582:4;13564:23;;;;;;;;;;;;;;;:33;:35::i;:::-;13609:33;:17;:21;13627:2;13609:21;;;;;;;;;;;;;;;:31;:33::i;:::-;13676:2;13653:11;:20;13665:7;13653:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13713:7;13709:2;13694:27;;13703:4;13694:27;;;;;;;;;;;;13281:447;;;:::o;11714:327::-;11799:1;11785:16;;:2;:16;;;;11777:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11857:16;11865:7;11857;:16::i;:::-;11856:17;11848:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11940:2;11917:11;:20;11929:7;11917:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11952:33;:17;:21;11970:2;11952:21;;;;;;;;;;;;;;;:31;:33::i;:::-;12026:7;12022:2;12001:33;;12018:1;12001:33;;;;;;;;;;;;11714:327;;:::o;1065:112:28:-;1130:7;1156;:14;;;1149:21;;1065:112;;;:::o;11230:239:128:-;11317:18;11323:2;11327:7;11317:5;:18::i;:::-;11353:54;11384:1;11388:2;11392:7;11401:5;11353:22;:54::i;:::-;11345:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11230:239;;;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;10529:100:128:-;10596:26;10606:2;10610:7;10596:26;;;;;;;;;;;;:9;:26::i;:::-;10529:100;;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;8694:269:128:-;8803:32;8817:4;8823:2;8827:7;8803:13;:32::i;:::-;8853:48;8876:4;8882:2;8886:7;8895:5;8853:22;:48::i;:::-;8845:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8694:269;;;;:::o;15580:171::-;15679:1;15643:38;;:15;:24;15659:7;15643:24;;;;;;;;;;;;;;;;;;;;;:38;;;15639:106;;15732:1;15697:15;:24;15713:7;15697:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15639:106;15580:171;:::o;1367:108:28:-;1447:21;1466:1;1447:7;:14;;;:18;;:21;;;;:::i;:::-;1430:7;:14;;:38;;;;1367:108;:::o;1183:178::-;1353:1;1335:7;:14;;;:19;;;;;;;;;;;1183:178;:::o;14367:1051:128:-;14488:4;14513:15;:2;:13;;;:15::i;:::-;14508:58;;14551:4;14544:11;;;;14508:58;14635:12;14649:23;14676:2;:7;;14736:2;14720:36;;;:45;;;;14779:12;:10;:12::i;:::-;14805:4;14823:7;14844:5;14684:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14684:175:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14684:175:128;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;14684:175:128;14676:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14676:184:128;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14634:226:128;;;;14875:7;14870:542;;14922:1;14902:10;:17;:21;14898:376;;;15067:10;15061:17;15127:15;15114:10;15110:2;15106:19;15099:44;15016:145;15199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14870:542;15304:13;15331:10;15320:32;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:32:128;;;;;;;;;;;;;;;;15304:48;;754:10;15384:16;;15374:26;;;:6;:26;;;;15366:35;;;;;14367:1051;;;;;;;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Mintable.sol", + "exportedSymbols": { + "ERC721Mintable": [ + 11904 + ] + }, + "id": 11905, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11837, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:135" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 11838, + "nodeType": "ImportDirective", + "scope": 11905, + "sourceUnit": 11210, + "src": "25:22:135", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 11839, + "nodeType": "ImportDirective", + "scope": 11905, + "sourceUnit": 1409, + "src": "48:43:135", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11840, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11209, + "src": "183:6:135", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11209", + "typeString": "contract ERC721" + } + }, + "id": 11841, + "nodeType": "InheritanceSpecifier", + "src": "183:6:135" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11842, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1408, + "src": "191:10:135", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$1408", + "typeString": "contract MinterRole" + } + }, + "id": 11843, + "nodeType": "InheritanceSpecifier", + "src": "191:10:135" + } + ], + "contractDependencies": [ + 26, + 1408, + 4629, + 4862, + 11209, + 12070 + ], + "contractKind": "contract", + "documentation": "@title ERC721Mintable\n@dev ERC721 minting logic.", + "fullyImplemented": true, + "id": 11904, + "linearizedBaseContracts": [ + 11904, + 1408, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721Mintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 11861, + "nodeType": "Block", + "src": "519:56:135", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11855, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11845, + "src": "535:2:135", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11856, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11847, + "src": "539:7:135", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11854, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10999, + "src": "529:5:135", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "529:18:135", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11858, + "nodeType": "ExpressionStatement", + "src": "529:18:135" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "564:4:135", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11853, + "id": 11860, + "nodeType": "Return", + "src": "557:11:135" + } + ] + }, + "documentation": "@dev Function to mint tokens.\n@param to The address that will receive the minted token.\n@param tokenId The token id to mint.\n@return A boolean that indicates if the operation was successful.", + "id": 11862, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 11850, + "modifierName": { + "argumentTypes": null, + "id": 11849, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "493:10:135", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "493:10:135" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11845, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11862, + "src": "457:10:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11844, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "457:7:135", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11847, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11862, + "src": "469:15:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11846, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "469:7:135", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "456:29:135" + }, + "returnParameters": { + "id": 11853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11852, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11862, + "src": "513:4:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11851, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "513:4:135", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "512:6:135" + }, + "scope": 11904, + "src": "443:132:135", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11880, + "nodeType": "Block", + "src": "903:60:135", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11874, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11864, + "src": "923:2:135", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11875, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "927:7:135", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11873, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10927, + 10954 + ], + "referencedDeclaration": 10927, + "src": "913:9:135", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "913:22:135", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11877, + "nodeType": "ExpressionStatement", + "src": "913:22:135" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:4:135", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11872, + "id": 11879, + "nodeType": "Return", + "src": "945:11:135" + } + ] + }, + "documentation": "@dev Function to safely mint tokens.\n@param to The address that will receive the minted token.\n@param tokenId The token id to mint.\n@return A boolean that indicates if the operation was successful.", + "id": 11881, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 11869, + "modifierName": { + "argumentTypes": null, + "id": 11868, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "877:10:135", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "877:10:135" + } + ], + "name": "safeMint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11864, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11881, + "src": "841:10:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "841:7:135", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11866, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11881, + "src": "853:15:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11865, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "853:7:135", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "840:29:135" + }, + "returnParameters": { + "id": 11872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11871, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11881, + "src": "897:4:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11870, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "897:4:135", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "896:6:135" + }, + "scope": 11904, + "src": "823:140:135", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 11902, + "nodeType": "Block", + "src": "1384:67:135", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11895, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11883, + "src": "1404:2:135", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11896, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11885, + "src": "1408:7:135", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11897, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11887, + "src": "1417:5:135", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11894, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10927, + 10954 + ], + "referencedDeclaration": 10954, + "src": "1394:9:135", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 11898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1394:29:135", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11899, + "nodeType": "ExpressionStatement", + "src": "1394:29:135" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1440:4:135", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11893, + "id": 11901, + "nodeType": "Return", + "src": "1433:11:135" + } + ] + }, + "documentation": "@dev Function to safely mint tokens.\n@param to The address that will receive the minted token.\n@param tokenId The token id to mint.\n@param _data bytes data to send along with a safe transfer check.\n@return A boolean that indicates if the operation was successful.", + "id": 11903, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 11890, + "modifierName": { + "argumentTypes": null, + "id": 11889, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "1358:10:135", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1358:10:135" + } + ], + "name": "safeMint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11883, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 11903, + "src": "1302:10:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11882, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1302:7:135", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11885, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 11903, + "src": "1314:15:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1314:7:135", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11887, + "name": "_data", + "nodeType": "VariableDeclaration", + "scope": 11903, + "src": "1331:18:135", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11886, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1331:5:135", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1301:49:135" + }, + "returnParameters": { + "id": 11893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11892, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 11903, + "src": "1378:4:135", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11891, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1378:4:135", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1377:6:135" + }, + "scope": 11904, + "src": "1284:167:135", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 11905, + "src": "156:1297:135" + } + ], + "src": "0:1454:135" + }, + "bytecode": "0x60806040526200001c6301ffc9a760e01b6200005a60201b60201c565b620000346380ac58cd60e01b6200005a60201b60201c565b62000054620000486200016360201b60201c565b6200016b60201b60201c565b62000390565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620000f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b62000186816005620001cc60201b62001eb41790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620001de8282620002b060201b60201c565b1562000252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000339576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806200279d6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6123fd80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638832e6e311610097578063a22cb46511610066578063a22cb465146105df578063aa271e1a1461062f578063b88d4fde1461068b578063e985e9c51461079057610100565b80638832e6e31461042e578063983b2d561461052b578063986502751461056f578063a14481941461057957610100565b806340c10f19116100d357806340c10f191461029457806342842e0e146102fa5780636352211e1461036857806370a08231146103d657610100565b806301ffc9a714610105578063081812fc1461016a578063095ea7b3146101d857806323b872dd14610226575b600080fd5b6101506004803603602081101561011b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061080c565b604051808215151515815260200191505060405180910390f35b6101966004803603602081101561018057600080fd5b8101908080359060200190929190505050610873565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610224600480360360408110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090e565b005b6102926004803603606081101561023c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af5565b005b6102e0600480360360408110156102aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6b565b604051808215151515815260200191505060405180910390f35b6103666004803603606081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610be6565b005b6103946004803603602081101561037e57600080fd5b8101908080359060200190929190505050610c06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cce565b6040518082815260200191505060405180910390f35b6105116004803603606081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561048b57600080fd5b82018360208201111561049d57600080fd5b803590602001918460018302840111640100000000831117156104bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610da3565b604051808215151515815260200191505060405180910390f35b61056d6004803603602081101561054157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e20565b005b610577610e91565b005b6105c56004803603604081101561058f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea3565b604051808215151515815260200191505060405180910390f35b61062d600480360360408110156105f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610f1e565b005b6106716004803603602081101561064557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d6565b604051808215151515815260200191505060405180910390f35b61078e600480360360808110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561070857600080fd5b82018360208201111561071a57600080fd5b8035906020019184600183028401116401000000008311171561073c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110f3565b005b6107f2600480360360408110156107a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061116b565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061087e826111ff565b6108d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612300602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091982610c06565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806123776021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109bf611271565b73ffffffffffffffffffffffffffffffffffffffff1614806109ee57506109ed816109e8611271565b61116b565b5b610a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806122246038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610b06610b00611271565b82611279565b610b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806123986031913960400191505060405180910390fd5b610b6683838361136d565b505050565b6000610b7d610b78611271565b6110d6565b610bd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610bdc83836115c8565b6001905092915050565b610c01838383604051806020016040528060008152506110f3565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806122866029913960400191505060405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061225c602a913960400191505060405180910390fd5b610d9c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206117e0565b9050919050565b6000610db5610db0611271565b6110d6565b610e0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610e158484846117ee565b600190509392505050565b610e30610e2b611271565b6110d6565b610e85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610e8e8161185f565b50565b610ea1610e9c611271565b6118b9565b565b6000610eb5610eb0611271565b6110d6565b610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610f148383611913565b6001905092915050565b610f26611271565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000610fd4611271565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611081611271565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006110ec82600561193190919063ffffffff16565b9050919050565b6111046110fe611271565b83611279565b611159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806123986031913960400191505060405180910390fd5b61116584848484611a0f565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611284826111ff565b6112d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121f8602c913960400191505060405180910390fd5b60006112e483610c06565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061135357508373ffffffffffffffffffffffffffffffffffffffff1661133b84610873565b73ffffffffffffffffffffffffffffffffffffffff16145b806113645750611363818561116b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661138d82610c06565b73ffffffffffffffffffffffffffffffffffffffff16146113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061234e6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806121d46024913960400191505060405180910390fd5b61148881611a81565b6114cf600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b3f565b611516600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b62565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611674816111ff565b156116e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611780600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b62565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600081600001549050919050565b6117f883836115c8565b6118056000848484611b78565b61185a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121a26032913960400191505060405180910390fd5b505050565b611873816005611eb490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6118cd816005611f8f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61192d8282604051806020016040528060008152506117ee565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061232c6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a1a84848461136d565b611a2684848484611b78565b611a7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121a26032913960400191505060405180910390fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3c5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b611b576001826000015461204c90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000611b998473ffffffffffffffffffffffffffffffffffffffff16612096565b611ba65760019050611eac565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b611bea611271565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c9a578082015181840152602081019050611c7f565b50505050905090810190601f168015611cc75780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611d5f5780518252602082019150602081019050602083039250611d3c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611dc1576040519150601f19603f3d011682016040523d82523d6000602084013e611dc6565b606091505b509150915081611e3457600081511115611de35780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121a26032913960400191505060405180910390fd5b6000818060200190516020811015611e4b57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b611ebe8282611931565b15611f31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f998282611931565b611fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122df6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061208e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e1565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156120d857506000801b8214155b92505050919050565b600083831115829061218e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612153578082015181840152602081019050612138565b50505050905090810190601f1680156121805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a7231582014f83183e7f554d093d15841bbdb9207e762104b0c01c5707b083af0850d413864736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638832e6e311610097578063a22cb46511610066578063a22cb465146105df578063aa271e1a1461062f578063b88d4fde1461068b578063e985e9c51461079057610100565b80638832e6e31461042e578063983b2d561461052b578063986502751461056f578063a14481941461057957610100565b806340c10f19116100d357806340c10f191461029457806342842e0e146102fa5780636352211e1461036857806370a08231146103d657610100565b806301ffc9a714610105578063081812fc1461016a578063095ea7b3146101d857806323b872dd14610226575b600080fd5b6101506004803603602081101561011b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061080c565b604051808215151515815260200191505060405180910390f35b6101966004803603602081101561018057600080fd5b8101908080359060200190929190505050610873565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610224600480360360408110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090e565b005b6102926004803603606081101561023c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af5565b005b6102e0600480360360408110156102aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6b565b604051808215151515815260200191505060405180910390f35b6103666004803603606081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610be6565b005b6103946004803603602081101561037e57600080fd5b8101908080359060200190929190505050610c06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cce565b6040518082815260200191505060405180910390f35b6105116004803603606081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561048b57600080fd5b82018360208201111561049d57600080fd5b803590602001918460018302840111640100000000831117156104bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610da3565b604051808215151515815260200191505060405180910390f35b61056d6004803603602081101561054157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e20565b005b610577610e91565b005b6105c56004803603604081101561058f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea3565b604051808215151515815260200191505060405180910390f35b61062d600480360360408110156105f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610f1e565b005b6106716004803603602081101561064557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d6565b604051808215151515815260200191505060405180910390f35b61078e600480360360808110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561070857600080fd5b82018360208201111561071a57600080fd5b8035906020019184600183028401116401000000008311171561073c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110f3565b005b6107f2600480360360408110156107a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061116b565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061087e826111ff565b6108d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612300602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091982610c06565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806123776021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109bf611271565b73ffffffffffffffffffffffffffffffffffffffff1614806109ee57506109ed816109e8611271565b61116b565b5b610a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806122246038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610b06610b00611271565b82611279565b610b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806123986031913960400191505060405180910390fd5b610b6683838361136d565b505050565b6000610b7d610b78611271565b6110d6565b610bd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610bdc83836115c8565b6001905092915050565b610c01838383604051806020016040528060008152506110f3565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806122866029913960400191505060405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061225c602a913960400191505060405180910390fd5b610d9c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206117e0565b9050919050565b6000610db5610db0611271565b6110d6565b610e0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610e158484846117ee565b600190509392505050565b610e30610e2b611271565b6110d6565b610e85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610e8e8161185f565b50565b610ea1610e9c611271565b6118b9565b565b6000610eb5610eb0611271565b6110d6565b610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806122af6030913960400191505060405180910390fd5b610f148383611913565b6001905092915050565b610f26611271565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060046000610fd4611271565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611081611271565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006110ec82600561193190919063ffffffff16565b9050919050565b6111046110fe611271565b83611279565b611159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806123986031913960400191505060405180910390fd5b61116584848484611a0f565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611284826111ff565b6112d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121f8602c913960400191505060405180910390fd5b60006112e483610c06565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061135357508373ffffffffffffffffffffffffffffffffffffffff1661133b84610873565b73ffffffffffffffffffffffffffffffffffffffff16145b806113645750611363818561116b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661138d82610c06565b73ffffffffffffffffffffffffffffffffffffffff16146113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061234e6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806121d46024913960400191505060405180910390fd5b61148881611a81565b6114cf600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b3f565b611516600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b62565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561166b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611674816111ff565b156116e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611780600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611b62565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600081600001549050919050565b6117f883836115c8565b6118056000848484611b78565b61185a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121a26032913960400191505060405180910390fd5b505050565b611873816005611eb490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6118cd816005611f8f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61192d8282604051806020016040528060008152506117ee565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061232c6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a1a84848461136d565b611a2684848484611b78565b611a7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121a26032913960400191505060405180910390fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3c5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b611b576001826000015461204c90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000611b998473ffffffffffffffffffffffffffffffffffffffff16612096565b611ba65760019050611eac565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b611bea611271565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c9a578082015181840152602081019050611c7f565b50505050905090810190601f168015611cc75780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611d5f5780518252602082019150602081019050602083039250611d3c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611dc1576040519150601f19603f3d011682016040523d82523d6000602084013e611dc6565b606091505b509150915081611e3457600081511115611de35780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121a26032913960400191505060405180910390fd5b6000818060200190516020811015611e4b57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b611ebe8282611931565b15611f31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f998282611931565b611fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122df6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061208e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e1565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156120d857506000801b8214155b92505050919050565b600083831115829061218e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612153578082015181840152602081019050612138565b50505050905090810190601f1680156121805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a7231582014f83183e7f554d093d15841bbdb9207e762104b0c01c5707b083af0850d413864736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721MintableBurnableImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721MintableBurnableImpl.json new file mode 100644 index 0000000..e5ecaec --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721MintableBurnableImpl.json @@ -0,0 +1,955 @@ +{ + "fileName": "ERC721MintableBurnableImpl.sol", + "contractName": "ERC721MintableBurnableImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC721/ERC721Full.sol\";\nimport \"../token/ERC721/ERC721Mintable.sol\";\nimport \"../token/ERC721/ERC721MetadataMintable.sol\";\nimport \"../token/ERC721/ERC721Burnable.sol\";\n\n/**\n * @title ERC721MintableBurnableImpl\n */\ncontract ERC721MintableBurnableImpl is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable {\n constructor () public ERC721Mintable() ERC721Full(\"Test\", \"TEST\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721MintableBurnableImpl.sol", + "sourceMap": "255:244:71:-;;;367:130;8:9:-1;5:2;;;30:1;27;20:12;5:2;367:130:71;456:155:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;533:4;539:6;718:40:37;385:10;737:20;;718:18;;;:40;;:::i;:::-;2262::128;2136:10;2281:20;;2262:18;;;:40;;:::i;:::-;1357:51:130;1172:10;1376:31;;1357:18;;;:51;;:::i;:::-;920:4:133;912:5;:12;;;;;;;;;;;;:::i;:::-;;944:6;934:7;:16;;;;;;;;;;;;:::i;:::-;;1038:49;774:10;1057:29;;1038:18;;;:49;;:::i;:::-;840:254;;456:155:131;;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;255:244:71;;1442:190:37;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;255:244:71:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "255:244:71:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;255:244:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1199:83:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1199:83:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:200:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:200:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3583:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3583:415:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2171:94:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5929:287:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5929:287:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1789:229:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1789:229:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;443:132:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;443:132:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6865::128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6865:132:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;362:233:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;362:233:129;;;;;;;;;;;;;;;;;:::i;:::-;;2603:196:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2603:196:130;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;557:209:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;557:209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;557:209:134;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;557:209:134;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;557:209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;557:209:134;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2939:223:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2939:223:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3387:89:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3387:89:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:207:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2513:207:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1284:167:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1284:167:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1284:167:135;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1284:167:135;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1284:167:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1284:167:135;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1391:87:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1391:87:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;823:140:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;823:140:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4776:249:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4776:249:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;494:107:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7720:269:128;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7720:269:128;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7720:269:128;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7720:269:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7720:269:128;;;;;;;;;;;;;;;:::i;:::-;;1781:545:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1781:545:133;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1781:545:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:145:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5347:145:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:133:37;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;1199:83:133:-;1238:13;1270:5;1263:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:83;:::o;4283:200:128:-;4342:7;4369:16;4377:7;4369;:16::i;:::-;4361:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:15;:24;4468:7;4452:24;;;;;;;;;;;;;;;;;;;;;4445:31;;4283:200;;;:::o;3583:415::-;3646:13;3662:16;3670:7;3662;:16::i;:::-;3646:32;;3702:5;3696:11;;:2;:11;;;;3688:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:5;3764:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3789:37;3806:5;3813:12;:10;:12::i;:::-;3789:16;:37::i;:::-;3764:62;3756:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:2;3919:15;:24;3935:7;3919:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3983:7;3979:2;3963:28;;3972:5;3963:28;;;;;;;;;;;;3583:415;;;:::o;2171:94:130:-;2215:7;2241:10;:17;;;;2234:24;;2171:94;:::o;5929:287:128:-;6071:41;6090:12;:10;:12::i;:::-;6104:7;6071:18;:41::i;:::-;6063:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:32;6191:4;6197:2;6201:7;6177:13;:32::i;:::-;5929:287;;;:::o;1789:229:130:-;1869:7;1904:16;1914:5;1904:9;:16::i;:::-;1896:5;:24;1888:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1985:12;:19;1998:5;1985:19;;;;;;;;;;;;;;;2005:5;1985:26;;;;;;;;;;;;;;;;1978:33;;1789:229;;;;:::o;443:132:135:-;513:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;529:18:135;535:2;539:7;529:5;:18::i;:::-;564:4;557:11;;443:132;;;;:::o;6865::128:-;6951:39;6968:4;6974:2;6978:7;6951:39;;;;;;;;;;;;:16;:39::i;:::-;6865:132;;;:::o;362:233:129:-;470:41;489:12;:10;:12::i;:::-;503:7;470:18;:41::i;:::-;462:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;574:14;580:7;574:5;:14::i;:::-;362:233;:::o;2603:196:130:-;2661:7;2696:13;:11;:13::i;:::-;2688:5;:21;2680:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:10;2786:5;2775:17;;;;;;;;;;;;;;;;2768:24;;2603:196;;;:::o;557:209:134:-;663:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;679:18:134;685:2;689:7;679:5;:18::i;:::-;707:31;720:7;729:8;707:12;:31::i;:::-;755:4;748:11;;557:209;;;;;:::o;2939:223:128:-;2994:7;3013:13;3029:11;:20;3041:7;3029:20;;;;;;;;;;;;;;;;;;;;;3013:36;;3084:1;3067:19;;:5;:19;;;;3059:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:5;3143:12;;;2939:223;;;:::o;3387:89:133:-;3429:13;3461:8;3454:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:89;:::o;2513:207:128:-;2568:7;2612:1;2595:19;;:5;:19;;;;2587:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:34;:17;:24;2697:5;2679:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2672:41;;2513:207;;;:::o;1284:167:135:-;1378:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1394:29:135;1404:2;1408:7;1417:5;1394:9;:29::i;:::-;1440:4;1433:11;;1284:167;;;;;:::o;1391:87:133:-;1432:13;1464:7;1457:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:87;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;823:140:135:-;897:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:22:135;923:2;927:7;913:9;:22::i;:::-;952:4;945:11;;823:140;;;;:::o;4776:249:128:-;4861:12;:10;:12::i;:::-;4855:18;;:2;:18;;;;4847:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:8;4914:18;:32;4933:12;:10;:12::i;:::-;4914:32;;;;;;;;;;;;;;;:36;4947:2;4914:36;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5005:2;4976:42;;4991:12;:10;:12::i;:::-;4976:42;;;5009:8;4976:42;;;;;;;;;;;;;;;;;;;;;;4776:249;;:::o;494:107:8:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;7720:269:128:-;7834:41;7853:12;:10;:12::i;:::-;7867:7;7834:18;:41::i;:::-;7826:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:43;7957:4;7963:2;7967:7;7976:5;7939:17;:43::i;:::-;7720:269;;;;:::o;1781:545:133:-;1839:13;1872:16;1880:7;1872;:16::i;:::-;1864:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:23;1977:10;:19;1988:7;1977:19;;;;;;;;;;;1951:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:1;2110:9;2104:23;:28;2100:220;;;2148:9;;;;;;;;;;;;;;;;;2100:220;2288:8;2298:9;2271:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2271:37:133;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2271:37:133;;;2257:52;;;1781:545;;;;:::o;5347:145:128:-;5427:4;5450:18;:25;5469:5;5450:25;;;;;;;;;;;;;;;:35;5476:8;5450:35;;;;;;;;;;;;;;;;;;;;;;;;;5443:42;;5347:145;;;;:::o;9158:152::-;9215:4;9231:13;9247:11;:20;9259:7;9247:20;;;;;;;;;;;;;;;;;;;;;9231:36;;9301:1;9284:19;;:5;:19;;;;9277:26;;;9158:152;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;9671:329:128:-;9756:4;9780:16;9788:7;9780;:16::i;:::-;9772:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9855:13;9871:16;9879:7;9871;:16::i;:::-;9855:32;;9916:5;9905:16;;:7;:16;;;:51;;;;9949:7;9925:31;;:20;9937:7;9925:11;:20::i;:::-;:31;;;9905:51;:87;;;;9960:32;9977:5;9984:7;9960:16;:32::i;:::-;9905:87;9897:96;;;9671:329;;;;:::o;3174:239:130:-;3259:38;3279:4;3285:2;3289:7;3259:19;:38::i;:::-;3308:47;3341:4;3347:7;3308:32;:47::i;:::-;3366:40;3394:2;3398:7;3366:27;:40::i;:::-;3174:239;;;:::o;3670:196::-;3733:24;3745:2;3749:7;3733:11;:24::i;:::-;3768:40;3796:2;3800:7;3768:27;:40::i;:::-;3819;3851:7;3819:31;:40::i;:::-;3670:196;;:::o;12814:90:128:-;12865:32;12871:16;12879:7;12871;:16::i;:::-;12889:7;12865:5;:32::i;:::-;12814:90;:::o;2650:204:133:-;2741:16;2749:7;2741;:16::i;:::-;2733:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:9;2816:10;:19;2827:7;2816:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;2650:204;;:::o;1065:112:28:-;1130:7;1156;:14;;;1149:21;;1065:112;;;:::o;11230:239:128:-;11317:18;11323:2;11327:7;11317:5;:18::i;:::-;11353:54;11384:1;11388:2;11392:7;11401:5;11353:22;:54::i;:::-;11345:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11230:239;;;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;10529:100:128:-;10596:26;10606:2;10610:7;10596:26;;;;;;;;;;;;:9;:26::i;:::-;10529:100;;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;8694:269:128:-;8803:32;8817:4;8823:2;8827:7;8803:13;:32::i;:::-;8853:48;8876:4;8882:2;8886:7;8895:5;8853:22;:48::i;:::-;8845:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8694:269;;;;:::o;13281:447::-;13394:4;13374:24;;:16;13382:7;13374;:16::i;:::-;:24;;;13366:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:1;13462:16;;:2;:16;;;;13454:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13530:23;13545:7;13530:14;:23::i;:::-;13564:35;:17;:23;13582:4;13564:23;;;;;;;;;;;;;;;:33;:35::i;:::-;13609:33;:17;:21;13627:2;13609:21;;;;;;;;;;;;;;;:31;:33::i;:::-;13676:2;13653:11;:20;13665:7;13653:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13713:7;13709:2;13694:27;;13703:4;13694:27;;;;;;;;;;;;13281:447;;;:::o;6284:1128:130:-;6546:22;6571:32;6601:1;6571:12;:18;6584:4;6571:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;6546:57;;6613:18;6634:17;:26;6652:7;6634:26;;;;;;;;;;;;6613:47;;6778:14;6764:10;:28;6760:323;;6808:19;6830:12;:18;6843:4;6830:18;;;;;;;;;;;;;;;6849:14;6830:34;;;;;;;;;;;;;;;;6808:56;;6912:11;6879:12;:18;6892:4;6879:18;;;;;;;;;;;;;;;6898:10;6879:30;;;;;;;;;;;;;;;:44;;;;7028:10;6995:17;:30;7013:11;6995:30;;;;;;;;;;;:43;;;;6760:323;;7169:12;:18;7182:4;7169:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;6284:1128;;;;:::o;5128:183::-;5241:12;:16;5254:2;5241:16;;;;;;;;;;;;;;;:23;;;;5212:17;:26;5230:7;5212:26;;;;;;;;;;;:52;;;;5274:12;:16;5287:2;5274:16;;;;;;;;;;;;;;;5296:7;5274:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5274:30:130;;;;;;;;;;;;;;;;;;;;;;5128:183;;:::o;11714:327:128:-;11799:1;11785:16;;:2;:16;;;;11777:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11857:16;11865:7;11857;:16::i;:::-;11856:17;11848:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11940:2;11917:11;:20;11929:7;11917:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11952:33;:17;:21;11970:2;11952:21;;;;;;;;;;;;;;;:31;:33::i;:::-;12026:7;12022:2;12001:33;;12018:1;12001:33;;;;;;;;;;;;11714:327;;:::o;5506:161:130:-;5609:10;:17;;;;5582:15;:24;5598:7;5582:24;;;;;;;;;;;:44;;;;5636:10;5652:7;5636:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5636:24:130;;;;;;;;;;;;;;;;;;;;;;5506:161;:::o;3769:240:133:-;3835:27;3847:5;3854:7;3835:11;:27::i;:::-;3949:1;3918:10;:19;3929:7;3918:19;;;;;;;;;;;3912:33;;;;;;;;;;;;;;;;:38;3908:95;;3973:10;:19;3984:7;3973:19;;;;;;;;;;;;3966:26;;;;:::i;:::-;3908:95;3769:240;;:::o;14367:1051:128:-;14488:4;14513:15;:2;:13;;;:15::i;:::-;14508:58;;14551:4;14544:11;;;;14508:58;14635:12;14649:23;14676:2;:7;;14736:2;14720:36;;;:45;;;;14779:12;:10;:12::i;:::-;14805:4;14823:7;14844:5;14684:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14684:175:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14684:175:128;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;14684:175:128;14676:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14676:184:128;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14634:226:128;;;;14875:7;14870:542;;14922:1;14902:10;:17;:21;14898:376;;;15067:10;15061:17;15127:15;15114:10;15110:2;15106:19;15099:44;15016:145;15199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14870:542;15304:13;15331:10;15320:32;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:32:128;;;;;;;;;;;;;;;;15304:48;;754:10;15384:16;;15374:26;;;:6;:26;;;;15366:35;;;;;14367:1051;;;;;;;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o;15580:171:128:-;15679:1;15643:38;;:15;:24;15659:7;15643:24;;;;;;;;;;;;;;;;;;;;;:38;;;15639:106;;15732:1;15697:15;:24;15713:7;15697:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15639:106;15580:171;:::o;1367:108:28:-;1447:21;1466:1;1447:7;:14;;;:18;;:21;;;;:::i;:::-;1430:7;:14;;:38;;;;1367:108;:::o;1183:178::-;1353:1;1335:7;:14;;;:19;;;;;;;;;;;1183:178;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;4141:364:130:-;4207:27;4219:5;4226:7;4207:11;:27::i;:::-;4245:48;4278:5;4285:7;4245:32;:48::i;:::-;4441:1;4412:17;:26;4430:7;4412:26;;;;;;;;;;;:30;;;;4453:45;4490:7;4453:36;:45::i;:::-;4141:364;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;12309:324:128:-;12403:5;12383:25;;:16;12391:7;12383;:16::i;:::-;:25;;;12375:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12461:23;12476:7;12461:14;:23::i;:::-;12495:36;:17;:24;12513:5;12495:24;;;;;;;;;;;;;;;:34;:36::i;:::-;12572:1;12541:11;:20;12553:7;12541:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12618:7;12614:1;12590:36;;12599:5;12590:36;;;;;;;;;;;;12309:324;;:::o;7700:1064:130:-;7949:22;7974:24;7996:1;7974:10;:17;;;;:21;;:24;;;;:::i;:::-;7949:49;;8008:18;8029:15;:24;8045:7;8029:24;;;;;;;;;;;;8008:45;;8375:19;8397:10;8408:14;8397:26;;;;;;;;;;;;;;;;8375:48;;8459:11;8434:10;8445;8434:22;;;;;;;;;;;;;;;:36;;;;8569:10;8538:15;:28;8554:11;8538:28;;;;;;;;;;;:41;;;;8700:10;:19;;;;;;;;;;;;:::i;:::-;;8756:1;8729:15;:24;8745:7;8729:24;;;;;;;;;;;:28;;;;7700:1064;;;;:::o;255:244:71:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "mintWithTokenURI", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeMint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721MintableBurnableImpl.sol", + "exportedSymbols": { + "ERC721MintableBurnableImpl": [ + 6282 + ] + }, + "id": 6283, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6259, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:71" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Full.sol", + "file": "../token/ERC721/ERC721Full.sol", + "id": 6260, + "nodeType": "ImportDirective", + "scope": 6283, + "sourceUnit": 11602, + "src": "25:40:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Mintable.sol", + "file": "../token/ERC721/ERC721Mintable.sol", + "id": 6261, + "nodeType": "ImportDirective", + "scope": 6283, + "sourceUnit": 11905, + "src": "66:44:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721MetadataMintable.sol", + "file": "../token/ERC721/ERC721MetadataMintable.sol", + "id": 6262, + "nodeType": "ImportDirective", + "scope": 6283, + "sourceUnit": 11836, + "src": "111:52:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol", + "file": "../token/ERC721/ERC721Burnable.sol", + "id": 6263, + "nodeType": "ImportDirective", + "scope": 6283, + "sourceUnit": 11238, + "src": "164:44:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6264, + "name": "ERC721Full", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11601, + "src": "294:10:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Full_$11601", + "typeString": "contract ERC721Full" + } + }, + "id": 6265, + "nodeType": "InheritanceSpecifier", + "src": "294:10:71" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6266, + "name": "ERC721Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11904, + "src": "306:14:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Mintable_$11904", + "typeString": "contract ERC721Mintable" + } + }, + "id": 6267, + "nodeType": "InheritanceSpecifier", + "src": "306:14:71" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6268, + "name": "ERC721MetadataMintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11835, + "src": "322:22:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721MetadataMintable_$11835", + "typeString": "contract ERC721MetadataMintable" + } + }, + "id": 6269, + "nodeType": "InheritanceSpecifier", + "src": "322:22:71" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6270, + "name": "ERC721Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11237, + "src": "346:14:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Burnable_$11237", + "typeString": "contract ERC721Burnable" + } + }, + "id": 6271, + "nodeType": "InheritanceSpecifier", + "src": "346:14:71" + } + ], + "contractDependencies": [ + 26, + 1408, + 4629, + 4862, + 11209, + 11237, + 11577, + 11601, + 11798, + 11835, + 11904, + 12070, + 12097, + 12132 + ], + "contractKind": "contract", + "documentation": "@title ERC721MintableBurnableImpl", + "fullyImplemented": true, + "id": 6282, + "linearizedBaseContracts": [ + 6282, + 11237, + 11835, + 11904, + 1408, + 11601, + 11798, + 12132, + 11577, + 12097, + 11209, + 12070, + 4629, + 4862, + 26 + ], + "name": "ERC721MintableBurnableImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6280, + "nodeType": "Block", + "src": "433:64:71", + "statements": [] + }, + "documentation": null, + "id": 6281, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [], + "id": 6274, + "modifierName": { + "argumentTypes": null, + "id": 6273, + "name": "ERC721Mintable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11904, + "src": "389:14:71", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Mintable_$11904_$", + "typeString": "type(contract ERC721Mintable)" + } + }, + "nodeType": "ModifierInvocation", + "src": "389:16:71" + }, + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "54657374", + "id": 6276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "417:6:71", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_85cc825a98ec217d960f113f5f80a95d7fd18e3725d37df428eb14f880bdfc12", + "typeString": "literal_string \"Test\"" + }, + "value": "Test" + }, + { + "argumentTypes": null, + "hexValue": "54455354", + "id": 6277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "425:6:71", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_852daa74cc3c31fe64542bb9b8764cfb91cc30f9acf9389071ffb44a9eefde46", + "typeString": "literal_string \"TEST\"" + }, + "value": "TEST" + } + ], + "id": 6278, + "modifierName": { + "argumentTypes": null, + "id": 6275, + "name": "ERC721Full", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11601, + "src": "406:10:71", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Full_$11601_$", + "typeString": "type(contract ERC721Full)" + } + }, + "nodeType": "ModifierInvocation", + "src": "406:26:71" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6272, + "nodeType": "ParameterList", + "parameters": [], + "src": "379:2:71" + }, + "returnParameters": { + "id": 6279, + "nodeType": "ParameterList", + "parameters": [], + "src": "433:0:71" + }, + "scope": 6282, + "src": "367:130:71", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6283, + "src": "255:244:71" + } + ], + "src": "0:500:71" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f54657374000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54455354000000000000000000000000000000000000000000000000000000008152508181620000986301ffc9a760e01b6200013c60201b60201c565b620000b06380ac58cd60e01b6200013c60201b60201c565b620000c863780e9d6360e01b6200013c60201b60201c565b8160099080519060200190620000e092919062000472565b5080600a9080519060200190620000f992919062000472565b5062000112635b5e139f60e01b6200013c60201b60201c565b50505050620001366200012a6200024560201b60201c565b6200024d60201b60201c565b62000521565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620001d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b6200026881600d620002ae60201b62002c6b1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620002c082826200039260201b60201c565b1562000334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062003c7f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004b557805160ff1916838001178555620004e6565b82800160010185558215620004e6579182015b82811115620004e5578251825591602001919060010190620004c8565b5b509050620004f59190620004f9565b5090565b6200051e91905b808211156200051a57600081600090555060010162000500565b5090565b90565b61374e80620005316000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de5780639865027511610097578063aa271e1a11610071578063aa271e1a14610a18578063b88d4fde14610a74578063c87b56dd14610b79578063e985e9c514610c2057610173565b80639865027514610958578063a144819414610962578063a22cb465146109c857610173565b80636352211e1461064b5780636c0360eb146106b957806370a082311461073c5780638832e6e31461079457806395d89b4114610891578063983b2d561461091457610173565b80632f745c59116101305780632f745c59146103a857806340c10f191461040a57806342842e0e1461047057806342966c68146104de5780634f6ccce71461050c57806350bb4e7f1461054e57610173565b806301ffc9a71461017857806306fdde03146101dd578063081812fc14610260578063095ea7b3146102ce57806318160ddd1461031c57806323b872dd1461033a575b600080fd5b6101c36004803603602081101561018e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610c9c565b604051808215151515815260200191505060405180910390f35b6101e5610d03565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022557808201518184015260208101905061020a565b50505050905090810190601f1680156102525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61028c6004803603602081101561027657600080fd5b8101908080359060200190929190505050610da5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031a600480360360408110156102e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e40565b005b610324611027565b6040518082815260200191505060405180910390f35b6103a66004803603606081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611034565b005b6103f4600480360360408110156103be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110aa565b6040518082815260200191505060405180910390f35b6104566004803603604081101561042057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611169565b604051808215151515815260200191505060405180910390f35b6104dc6004803603606081101561048657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111e4565b005b61050a600480360360208110156104f457600080fd5b8101908080359060200190929190505050611204565b005b6105386004803603602081101561052257600080fd5b8101908080359060200190929190505050611276565b6040518082815260200191505060405180910390f35b6106316004803603606081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105ab57600080fd5b8201836020820111156105bd57600080fd5b803590602001918460018302840111640100000000831117156105df57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112f6565b604051808215151515815260200191505060405180910390f35b6106776004803603602081101561066157600080fd5b810190808035906020019092919050505061137c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c1611444565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107015780820151818401526020810190506106e6565b50505050905090810190601f16801561072e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61077e6004803603602081101561075257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e6565b6040518082815260200191505060405180910390f35b610877600480360360608110156107aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156107f157600080fd5b82018360208201111561080357600080fd5b8035906020019184600183028401116401000000008311171561082557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115bb565b604051808215151515815260200191505060405180910390f35b610899611638565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d95780820151818401526020810190506108be565b50505050905090810190601f1680156109065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109566004803603602081101561092a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116da565b005b61096061174b565b005b6109ae6004803603604081101561097857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061175d565b604051808215151515815260200191505060405180910390f35b610a16600480360360408110156109de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506117d8565b005b610a5a60048036036020811015610a2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611990565b604051808215151515815260200191505060405180910390f35b610b7760048036036080811015610a8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610af157600080fd5b820183602082011115610b0357600080fd5b80359060200191846001830284011164010000000083111715610b2557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506119ad565b005b610ba560048036036020811015610b8f57600080fd5b8101908080359060200190929190505050611a25565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be5578082015181840152602081019050610bca565b50505050905090810190601f168015610c125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c8260048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c27565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d9b5780601f10610d7057610100808354040283529160200191610d9b565b820191906000526020600020905b815481529060010190602001808311610d7e57829003601f168201915b5050505050905090565b6000610db082611cbb565b610e05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613575602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e4b8261137c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136476021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ef1611d2d565b73ffffffffffffffffffffffffffffffffffffffff161480610f205750610f1f81610f1a611d2d565b611c27565b5b610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806134996038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b61104561103f611d2d565b82611d35565b61109a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806136686031913960400191505060405180910390fd5b6110a5838383611e29565b505050565b60006110b5836114e6565b821061110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806133ec602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061115657fe5b9060005260206000200154905092915050565b600061117b611176611d2d565b611990565b6111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b6111da8383611e4d565b6001905092915050565b6111ff838383604051806020016040528060008152506119ad565b505050565b61121561120f611d2d565b82611d35565b61126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806136ea6030913960400191505060405180910390fd5b61127381611e6e565b50565b6000611280611027565b82106112d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613699602c913960400191505060405180910390fd5b600782815481106112e457fe5b90600052602060002001549050919050565b6000611308611303611d2d565b611990565b61135d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b6113678484611e4d565b6113718383611e83565b600190509392505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561143b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806134fb6029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114dc5780601f106114b1576101008083540402835291602001916114dc565b820191906000526020600020905b8154815290600101906020018083116114bf57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806134d1602a913960400191505060405180910390fd5b6115b4600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f0d565b9050919050565b60006115cd6115c8611d2d565b611990565b611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b61162d848484611f1b565b600190509392505050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116d05780601f106116a5576101008083540402835291602001916116d0565b820191906000526020600020905b8154815290600101906020018083116116b357829003601f168201915b5050505050905090565b6116ea6116e5611d2d565b611990565b61173f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b61174881611f8c565b50565b61175b611756611d2d565b611fe6565b565b600061176f61176a611d2d565b611990565b6117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b6117ce8383612040565b6001905092915050565b6117e0611d2d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061188e611d2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661193b611d2d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006119a682600d61205e90919063ffffffff16565b9050919050565b6119be6119b8611d2d565b83611d35565b611a13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806136686031913960400191505060405180910390fd5b611a1f8484848461213c565b50505050565b6060611a3082611cbb565b611a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613618602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b2e5780601f10611b0357610100808354040283529160200191611b2e565b820191906000526020600020905b815481529060010190602001808311611b1157829003601f168201915b50505050509050600081511415611b575760405180602001604052806000815250915050611c22565b600b816040516020018083805460018160011615610100020316600290048015611bb85780601f10611b96576101008083540402835291820191611bb8565b820191906000526020600020905b815481529060010190602001808311611ba4575b505082805190602001908083835b60208310611be95780518252602082019150602081019050602083039250611bc6565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611d4082611cbb565b611d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061346d602c913960400191505060405180910390fd5b6000611da08361137c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e0f57508373ffffffffffffffffffffffffffffffffffffffff16611df784610da5565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e205750611e1f8185611c27565b5b91505092915050565b611e348383836121ae565b611e3e8382612409565b611e4882826125a7565b505050565b611e57828261266e565b611e6182826125a7565b611e6a81612886565b5050565b611e80611e7a8261137c565b826128d2565b50565b611e8c82611cbb565b611ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806135a1602c913960400191505060405180910390fd5b80600c60008481526020019081526020016000209080519060200190611f089291906132d2565b505050565b600081600001549050919050565b611f258383611e4d565b611f32600084848461292f565b611f87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134176032913960400191505060405180910390fd5b505050565b611fa081600d612c6b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611ffa81600d612d4690919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61205a828260405180602001604052806000815250611f1b565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806135cd6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612147848484611e29565b6121538484848461292f565b6121a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134176032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff166121ce8261137c565b73ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806135ef6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134496024913960400191505060405180910390fd5b6122c981612e03565b612310600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ec1565b612357600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ee4565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006124616001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612efa90919063ffffffff16565b905060006006600084815260200190815260200160002054905081811461254e576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106124ce57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061252657fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036125a09190613352565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612711576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61271a81611cbb565b1561278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612826600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ee4565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b6128dc8282612f44565b6000600c60008381526020019081526020016000208054600181600116156101000203166002900490501461292b57600c6000828152602001908152602001600020600061292a919061337e565b5b5050565b60006129508473ffffffffffffffffffffffffffffffffffffffff16612f7e565b61295d5760019050612c63565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b6129a1611d2d565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a51578082015181840152602081019050612a36565b50505050905090810190601f168015612a7e5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612b165780518252602082019150602081019050602083039250612af3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b78576040519150601f19603f3d011682016040523d82523d6000602084013e612b7d565b606091505b509150915081612beb57600081511115612b9a5780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134176032913960400191505060405180910390fd5b6000818060200190516020811015612c0257600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b612c75828261205e565b15612ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612d50828261205e565b612da5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806135546021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ebe5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b612ed960018260000154612efa90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000612f3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fc9565b905092915050565b612f4e8282613089565b612f588282612409565b60006006600083815260200190815260200160002081905550612f7a81613218565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612fc057506000801b8214155b92505050919050565b6000838311158290613076576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561303b578082015181840152602081019050613020565b50505050905090810190601f1680156130685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166130a98261137c565b73ffffffffffffffffffffffffffffffffffffffff1614613115576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806136c56025913960400191505060405180910390fd5b61311e81612e03565b613165600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ec1565b60006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006132336001600780549050612efa90919063ffffffff16565b905060006008600084815260200190815260200160002054905060006007838154811061325c57fe5b90600052602060002001549050806007838154811061327757fe5b906000526020600020018190555081600860008381526020019081526020016000208190555060078054809190600190036132b29190613352565b506000600860008681526020019081526020016000208190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061331357805160ff1916838001178555613341565b82800160010185558215613341579182015b82811115613340578251825591602001919060010190613325565b5b50905061334e91906133c6565b5090565b8154818355818111156133795781836000526020600020918201910161337891906133c6565b5b505050565b50805460018160011615610100020316600290046000825580601f106133a457506133c3565b601f0160209004906000526020600020908101906133c291906133c6565b5b50565b6133e891905b808211156133e45760008160009055506001016133cc565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a7231582049d7131fabfdb5b9f9f33a90d7164558b7405742366ca005dce877e96594066764736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de5780639865027511610097578063aa271e1a11610071578063aa271e1a14610a18578063b88d4fde14610a74578063c87b56dd14610b79578063e985e9c514610c2057610173565b80639865027514610958578063a144819414610962578063a22cb465146109c857610173565b80636352211e1461064b5780636c0360eb146106b957806370a082311461073c5780638832e6e31461079457806395d89b4114610891578063983b2d561461091457610173565b80632f745c59116101305780632f745c59146103a857806340c10f191461040a57806342842e0e1461047057806342966c68146104de5780634f6ccce71461050c57806350bb4e7f1461054e57610173565b806301ffc9a71461017857806306fdde03146101dd578063081812fc14610260578063095ea7b3146102ce57806318160ddd1461031c57806323b872dd1461033a575b600080fd5b6101c36004803603602081101561018e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610c9c565b604051808215151515815260200191505060405180910390f35b6101e5610d03565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022557808201518184015260208101905061020a565b50505050905090810190601f1680156102525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61028c6004803603602081101561027657600080fd5b8101908080359060200190929190505050610da5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031a600480360360408110156102e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e40565b005b610324611027565b6040518082815260200191505060405180910390f35b6103a66004803603606081101561035057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611034565b005b6103f4600480360360408110156103be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110aa565b6040518082815260200191505060405180910390f35b6104566004803603604081101561042057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611169565b604051808215151515815260200191505060405180910390f35b6104dc6004803603606081101561048657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111e4565b005b61050a600480360360208110156104f457600080fd5b8101908080359060200190929190505050611204565b005b6105386004803603602081101561052257600080fd5b8101908080359060200190929190505050611276565b6040518082815260200191505060405180910390f35b6106316004803603606081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105ab57600080fd5b8201836020820111156105bd57600080fd5b803590602001918460018302840111640100000000831117156105df57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112f6565b604051808215151515815260200191505060405180910390f35b6106776004803603602081101561066157600080fd5b810190808035906020019092919050505061137c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c1611444565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107015780820151818401526020810190506106e6565b50505050905090810190601f16801561072e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61077e6004803603602081101561075257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114e6565b6040518082815260200191505060405180910390f35b610877600480360360608110156107aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156107f157600080fd5b82018360208201111561080357600080fd5b8035906020019184600183028401116401000000008311171561082557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115bb565b604051808215151515815260200191505060405180910390f35b610899611638565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108d95780820151818401526020810190506108be565b50505050905090810190601f1680156109065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109566004803603602081101561092a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116da565b005b61096061174b565b005b6109ae6004803603604081101561097857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061175d565b604051808215151515815260200191505060405180910390f35b610a16600480360360408110156109de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506117d8565b005b610a5a60048036036020811015610a2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611990565b604051808215151515815260200191505060405180910390f35b610b7760048036036080811015610a8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610af157600080fd5b820183602082011115610b0357600080fd5b80359060200191846001830284011164010000000083111715610b2557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506119ad565b005b610ba560048036036020811015610b8f57600080fd5b8101908080359060200190929190505050611a25565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be5578082015181840152602081019050610bca565b50505050905090810190601f168015610c125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c8260048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c27565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d9b5780601f10610d7057610100808354040283529160200191610d9b565b820191906000526020600020905b815481529060010190602001808311610d7e57829003601f168201915b5050505050905090565b6000610db082611cbb565b610e05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613575602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e4b8261137c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136476021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ef1611d2d565b73ffffffffffffffffffffffffffffffffffffffff161480610f205750610f1f81610f1a611d2d565b611c27565b5b610f75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806134996038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b61104561103f611d2d565b82611d35565b61109a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806136686031913960400191505060405180910390fd5b6110a5838383611e29565b505050565b60006110b5836114e6565b821061110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806133ec602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061115657fe5b9060005260206000200154905092915050565b600061117b611176611d2d565b611990565b6111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b6111da8383611e4d565b6001905092915050565b6111ff838383604051806020016040528060008152506119ad565b505050565b61121561120f611d2d565b82611d35565b61126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806136ea6030913960400191505060405180910390fd5b61127381611e6e565b50565b6000611280611027565b82106112d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613699602c913960400191505060405180910390fd5b600782815481106112e457fe5b90600052602060002001549050919050565b6000611308611303611d2d565b611990565b61135d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b6113678484611e4d565b6113718383611e83565b600190509392505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561143b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806134fb6029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114dc5780601f106114b1576101008083540402835291602001916114dc565b820191906000526020600020905b8154815290600101906020018083116114bf57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806134d1602a913960400191505060405180910390fd5b6115b4600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f0d565b9050919050565b60006115cd6115c8611d2d565b611990565b611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b61162d848484611f1b565b600190509392505050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116d05780601f106116a5576101008083540402835291602001916116d0565b820191906000526020600020905b8154815290600101906020018083116116b357829003601f168201915b5050505050905090565b6116ea6116e5611d2d565b611990565b61173f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b61174881611f8c565b50565b61175b611756611d2d565b611fe6565b565b600061176f61176a611d2d565b611990565b6117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135246030913960400191505060405180910390fd5b6117ce8383612040565b6001905092915050565b6117e0611d2d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061188e611d2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661193b611d2d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006119a682600d61205e90919063ffffffff16565b9050919050565b6119be6119b8611d2d565b83611d35565b611a13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806136686031913960400191505060405180910390fd5b611a1f8484848461213c565b50505050565b6060611a3082611cbb565b611a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613618602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b2e5780601f10611b0357610100808354040283529160200191611b2e565b820191906000526020600020905b815481529060010190602001808311611b1157829003601f168201915b50505050509050600081511415611b575760405180602001604052806000815250915050611c22565b600b816040516020018083805460018160011615610100020316600290048015611bb85780601f10611b96576101008083540402835291820191611bb8565b820191906000526020600020905b815481529060010190602001808311611ba4575b505082805190602001908083835b60208310611be95780518252602082019150602081019050602083039250611bc6565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611d4082611cbb565b611d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061346d602c913960400191505060405180910390fd5b6000611da08361137c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e0f57508373ffffffffffffffffffffffffffffffffffffffff16611df784610da5565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e205750611e1f8185611c27565b5b91505092915050565b611e348383836121ae565b611e3e8382612409565b611e4882826125a7565b505050565b611e57828261266e565b611e6182826125a7565b611e6a81612886565b5050565b611e80611e7a8261137c565b826128d2565b50565b611e8c82611cbb565b611ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806135a1602c913960400191505060405180910390fd5b80600c60008481526020019081526020016000209080519060200190611f089291906132d2565b505050565b600081600001549050919050565b611f258383611e4d565b611f32600084848461292f565b611f87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134176032913960400191505060405180910390fd5b505050565b611fa081600d612c6b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611ffa81600d612d4690919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61205a828260405180602001604052806000815250611f1b565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806135cd6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612147848484611e29565b6121538484848461292f565b6121a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134176032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff166121ce8261137c565b73ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806135ef6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806134496024913960400191505060405180910390fd5b6122c981612e03565b612310600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ec1565b612357600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ee4565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006124616001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612efa90919063ffffffff16565b905060006006600084815260200190815260200160002054905081811461254e576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106124ce57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061252657fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036125a09190613352565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612711576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61271a81611cbb565b1561278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612826600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ee4565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b6128dc8282612f44565b6000600c60008381526020019081526020016000208054600181600116156101000203166002900490501461292b57600c6000828152602001908152602001600020600061292a919061337e565b5b5050565b60006129508473ffffffffffffffffffffffffffffffffffffffff16612f7e565b61295d5760019050612c63565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663150b7a02905060e01b6129a1611d2d565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a51578082015181840152602081019050612a36565b50505050905090810190601f168015612a7e5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612b165780518252602082019150602081019050602083039250612af3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b78576040519150601f19603f3d011682016040523d82523d6000602084013e612b7d565b606091505b509150915081612beb57600081511115612b9a5780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134176032913960400191505060405180910390fd5b6000818060200190516020811015612c0257600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b612c75828261205e565b15612ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612d50828261205e565b612da5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806135546021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ebe5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b612ed960018260000154612efa90919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000612f3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fc9565b905092915050565b612f4e8282613089565b612f588282612409565b60006006600083815260200190815260200160002081905550612f7a81613218565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612fc057506000801b8214155b92505050919050565b6000838311158290613076576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561303b578082015181840152602081019050613020565b50505050905090810190601f1680156130685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff166130a98261137c565b73ffffffffffffffffffffffffffffffffffffffff1614613115576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806136c56025913960400191505060405180910390fd5b61311e81612e03565b613165600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612ec1565b60006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006132336001600780549050612efa90919063ffffffff16565b905060006008600084815260200190815260200160002054905060006007838154811061325c57fe5b90600052602060002001549050806007838154811061327757fe5b906000526020600020018190555081600860008381526020019081526020016000208190555060078054809190600190036132b29190613352565b506000600860008681526020019081526020016000208190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061331357805160ff1916838001178555613341565b82800160010185558215613341579182015b82811115613340578251825591602001919060010190613325565b5b50905061334e91906133c6565b5090565b8154818355818111156133795781836000526020600020918201910161337891906133c6565b5b505050565b50805460018160011615610100020316600290046000825580601f106133a457506133c3565b601f0160209004906000526020600020908101906133c291906133c6565b5b50565b6133e891905b808211156133e45760008160009055506001016133cc565b5090565b9056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a265627a7a7231582049d7131fabfdb5b9f9f33a90d7164558b7405742366ca005dce877e96594066764736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721MinterPauser.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721MinterPauser.json new file mode 100644 index 0000000..90cd5f9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721MinterPauser.json @@ -0,0 +1,2555 @@ +{ + "fileName": "ERC721MinterPauser.sol", + "contractName": "ERC721MinterPauser", + "source": "pragma solidity ^0.6.0;\n\nimport \"../access/AccessControl.sol\";\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC721/ERC721.sol\";\nimport \"../token/ERC721/ERC721Burnable.sol\";\nimport \"../token/ERC721/ERC721Pausable.sol\";\n\n/**\n * @dev {ERC721} token, including:\n *\n * - ability for holders to burn (destroy) their tokens\n * - a minter role that allows for token minting (creation)\n * - a pauser role that allows to stop all token transfers\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter role, the\n * pauser role, and the default admin role, meaning it will be able to grant\n * both the minter and pauser roles.\n */\ncontract ERC721MinterPauser is Context, AccessControl, ERC721Burnable, ERC721Pausable {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\n * account that deploys the contract.\n *\n * See {ERC721-constructor}.\n */\n constructor(string memory name, string memory symbol) public ERC721(name, symbol) {\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n _setupRole(MINTER_ROLE, _msgSender());\n _setupRole(PAUSER_ROLE, _msgSender());\n }\n\n /**\n * @dev Creates the `tokenId` tokens for `to`.\n *\n * See {ERC721-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(address to, uint256 tokenId) public {\n require(hasRole(MINTER_ROLE, _msgSender()), \"ERC721MinterPauser: must have minter role to mint\");\n _mint(to, tokenId);\n }\n\n /**\n * @dev Pauses all token transfers.\n *\n * See {ERC721Pausable} and {Pausable-_pause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function pause() public {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC721MinterPauser: must have pauser role to pause\");\n _pause();\n }\n\n /**\n * @dev Unpauses all token transfers.\n *\n * See {ERC20Pausable} and {Pausable-_unpause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function unpause() public {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC721MinterPauser: must have pauser role to unpause\");\n _unpause();\n }\n\n function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721, ERC721Pausable) {\n super._beforeTokenTransfer(from, to, tokenId);\n }\n}\n", + "sourcePath": "contracts/deploy-ready/ERC721MinterPauser.sol", + "sourceMap": "781:1941:11:-:0;;;1188:238;5:9:-1;2:2;;;27:1;24;17:12;2:2;1188:238:11;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1188:238:11;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;1188:238:11;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1188:238:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;1188:238:11;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1188:238:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1256:4;1262:6;718:40:13;385:10;737:20;;718:18;;;:40;;:::i;:::-;3434:4:79;3426:5;:12;;;;;;;;;;;;:::i;:::-;;3458:6;3448:7;:16;;;;;;;;;;;;:::i;:::-;;3552:40;2632:10;3571:20;;3552:18;;;:40;;:::i;:::-;3602:49;2964:10;3621:29;;3602:18;;;:49;;:::i;:::-;3661:51;3337:10;3680:31;;3661:18;;;:51;;:::i;:::-;3354:365;;970:5:97;960:7;;:15;;;;;;;;;;;;;;;;;;1280:44:11::1;1533:4:6;1291:18:11::0;::::1;1311:12;:10;;;:12;;:::i;:::-;1280:10;;;:44;;:::i;:::-;1335:37;911:24;;;;;;;::::0;::::1;;;;;;;;;;;1359:12;:10;;;:12;;:::i;:::-;1335:10;;;:37;;:::i;:::-;1382;979:24;;;;;;;::::0;::::1;;;;;;;;;;;1406:12;:10;;;:12;;:::i;:::-;1382:10;;;:37;;:::i;:::-;1188:238:::0;;781:1941;;1449:198:13;1547:10;1532:25;;:11;:25;;;;;1524:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:4;1600:20;:33;1621:11;1600:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1449:198;:::o;735:104:0:-;788:15;822:10;815:17;;735:104;:::o;5728:215:6:-;5815:26;5823:4;5815:24;;;;;;;:26;;:::i;:::-;5814:27;5806:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5911:25;5922:4;5928:7;5911:10;;;:25;;:::i;:::-;5728:215;;:::o;685:610:91:-;745:4;1003:16;1029:19;1051:66;1029:88;;;;1218:7;1206:20;1194:32;;1257:11;1245:8;:23;;:42;;;;;1284:3;1272:15;;:8;:15;;1245:42;1237:51;;;;685:610;;;:::o;6148:184:6:-;6221:33;6246:7;6221:6;:12;6228:4;6221:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;6217:109;;;6302:12;:10;;;:12;;:::i;:::-;6275:40;;6293:7;6275:40;;6287:4;6275:40;;;;;;;;;;6217:109;6148:184;;:::o;4664:141:96:-;4734:4;4757:41;4762:3;:10;;4790:5;4782:14;;4774:23;;4757:4;;;:41;;:::i;:::-;4750:48;;4664:141;;;;:::o;1411:404::-;1474:4;1495:21;1505:3;1510:5;1495:9;;;:21;;:::i;:::-;1490:319;;1532:3;:11;;1549:5;1532:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1532:23:96;;;;;;;;;;;;;;;;;;;1712:3;:11;;:18;;;;1690:3;:12;;:19;1703:5;1690:19;;;;;;;;;;;:40;;;;1751:4;1744:11;;;;1490:319;1793:5;1786:12;;1411:404;;;;;:::o;3576:127::-;3649:4;3695:1;3672:3;:12;;:19;3685:5;3672:19;;;;;;;;;;;;:24;;3665:31;;3576:127;;;;:::o;781:1941:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "781:1941:11:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;781:1941:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;915:140:13;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;915:140:13;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4625:90:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4625:90:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8519:209;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8519:209:79;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7853:381;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7853:381:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6733:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10230:300;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;10230:300:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3630:112:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3630:112:6;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3990:223;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3990:223:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6428:152:79;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6428:152:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5162:205:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5162:205:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2375:162:11;;;:::i;:::-;;1617:191;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1617:191:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11179:149:79;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11179:149:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;371:241:80;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;371:241:80;;;;;;;;;;;;;;;;;:::i;:::-;;7271:161:79;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7271:161:79;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1077:76:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4353:167:79;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4353:167:79;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5967:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5967:87:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3923:211;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3923:211:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2012:156:11;;;:::i;:::-;;3313:136:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3313:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2298:137;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2298:137:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4824:94:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4824:94:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1488:49:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9027:290:79;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9027:290:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12051:282;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12051:282:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;12051:282:79;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12051:282:79;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12051:282:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12051:282:79;;;;;;;;;;;;;;;:::i;:::-;;5221:552;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5221:552:79;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5221:552:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:125:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2603:125:6;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;873:62:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4445:226:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4445:226:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;941:62:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9639:154:79;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9639:154:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;915:140:13;992:4;1015:20;:33;1036:11;1015:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1008:40;;915:140;;;:::o;4625:90:79:-;4671:13;4703:5;4696:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4625:90;:::o;8519:209::-;8587:7;8614:16;8622:7;8614;:16::i;:::-;8606:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8697:15;:24;8713:7;8697:24;;;;;;;;;;;;;;;;;;;;;8690:31;;8519:209;;;:::o;7853:381::-;7933:13;7949:16;7957:7;7949;:16::i;:::-;7933:32;;7989:5;7983:11;;:2;:11;;;;7975:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8067:5;8051:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8076:37;8093:5;8100:12;:10;:12::i;:::-;8076:16;:37::i;:::-;8051:62;8043:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:21;8215:2;8219:7;8206:8;:21::i;:::-;7853:381;;;:::o;6733:200::-;6786:7;6905:21;:12;:19;:21::i;:::-;6898:28;;6733:200;:::o;10230:300::-;10389:41;10408:12;:10;:12::i;:::-;10422:7;10389:18;:41::i;:::-;10381:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10495:28;10505:4;10511:2;10515:7;10495:9;:28::i;:::-;10230:300;;;:::o;3630:112:6:-;3687:7;3713:6;:12;3720:4;3713:12;;;;;;;;;;;:22;;;3706:29;;3630:112;;;:::o;3990:223::-;4073:45;4081:6;:12;4088:4;4081:12;;;;;;;;;;;:22;;;4105:12;:10;:12::i;:::-;4073:7;:45::i;:::-;4065:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4181:25;4192:4;4198:7;4181:10;:25::i;:::-;3990:223;;:::o;6428:152:79:-;6517:7;6543:30;6567:5;6543:13;:20;6557:5;6543:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6536:37;;6428:152;;;;:::o;5162:205:6:-;5259:12;:10;:12::i;:::-;5248:23;;:7;:23;;;5240:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5334:26;5346:4;5352:7;5334:11;:26::i;:::-;5162:205;;:::o;2375:162:11:-;2419:34;979:24;;;;;;;;;;;;;;;;;;;2440:12;:10;:12::i;:::-;2419:7;:34::i;:::-;2411:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2520:10;:8;:10::i;:::-;2375:162::o;1617:191::-;1685:34;911:24;;;;;;;;;;;;;;;;;;;1706:12;:10;:12::i;:::-;1685:7;:34::i;:::-;1677:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1783:18;1789:2;1793:7;1783:5;:18::i;:::-;1617:191;;:::o;11179:149:79:-;11282:39;11299:4;11305:2;11309:7;11282:39;;;;;;;;;;;;:16;:39::i;:::-;11179:149;;;:::o;371:241:80:-;487:41;506:12;:10;:12::i;:::-;520:7;487:18;:41::i;:::-;479:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;591:14;597:7;591:5;:14::i;:::-;371:241;:::o;7271:161:79:-;7338:7;7358:15;7379:22;7395:5;7379:12;:15;;:22;;;;:::i;:::-;7357:44;;;7418:7;7411:14;;;7271:161;;;:::o;1077:76:97:-;1116:4;1139:7;;;;;;;;;;;1132:14;;1077:76;:::o;4353:167:79:-;4417:7;4443:70;4460:7;4443:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4436:77;;4353:167;;;:::o;5967:87::-;6007:13;6039:8;6032:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5967:87;:::o;3923:211::-;3987:7;4031:1;4014:19;;:5;:19;;;;4006:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4098:29;:13;:20;4112:5;4098:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4091:36;;3923:211;;;:::o;2012:156:11:-;2054:34;979:24;;;;;;;;;;;;;;;;;;;2075:12;:10;:12::i;:::-;2054:7;:34::i;:::-;2046:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2153:8;:6;:8::i;:::-;2012:156::o;3313:136:6:-;3386:7;3412:30;3436:5;3412:6;:12;3419:4;3412:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;3405:37;;3313:136;;;;:::o;2298:137::-;2367:4;2390:38;2420:7;2390:6;:12;2397:4;2390:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;2383:45;;2298:137;;;;:::o;4824:94:79:-;4872:13;4904:7;4897:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4824:94;:::o;1488:49:6:-;1533:4;1488:49;;;:::o;9027:290:79:-;9141:12;:10;:12::i;:::-;9129:24;;:8;:24;;;;9121:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9239:8;9194:18;:32;9213:12;:10;:12::i;:::-;9194:32;;;;;;;;;;;;;;;:42;9227:8;9194:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;9291:8;9262:48;;9277:12;:10;:12::i;:::-;9262:48;;;9301:8;9262:48;;;;;;;;;;;;;;;;;;;;;;9027:290;;:::o;12051:282::-;12182:41;12201:12;:10;:12::i;:::-;12215:7;12182:18;:41::i;:::-;12174:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12287:39;12301:4;12307:2;12311:7;12320:5;12287:13;:39::i;:::-;12051:282;;;;:::o;5221:552::-;5286:13;5319:16;5327:7;5319;:16::i;:::-;5311:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5398:23;5424:10;:19;5435:7;5424:19;;;;;;;;;;;5398:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5578:1;5557:9;5551:23;:28;5547:220;;;5595:9;;;;;;;;;;;;;;;;;5547:220;5735:8;5745:9;5718:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5718:37:79;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5718:37:79;;;5704:52;;;5221:552;;;;:::o;2603:125:6:-;2666:7;2692:29;:6;:12;2699:4;2692:12;;;;;;;;;;;:20;;:27;:29::i;:::-;2685:36;;2603:125;;;:::o;873:62:11:-;911:24;;;;;;;;;;;;;;;;;;;873:62;:::o;4445:226:6:-;4529:45;4537:6;:12;4544:4;4537:12;;;;;;;;;;;:22;;;4561:12;:10;:12::i;:::-;4529:7;:45::i;:::-;4521:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4638:26;4650:4;4656:7;4638:11;:26::i;:::-;4445:226;;:::o;941:62:11:-;979:24;;;;;;;;;;;;;;;;;;;941:62;:::o;9639:154:79:-;9728:4;9751:18;:25;9770:5;9751:25;;;;;;;;;;;;;;;:35;9777:8;9751:35;;;;;;;;;;;;;;;;;;;;;;;;;9744:42;;9639:154;;;;:::o;13502:117::-;13559:4;13582:30;13604:7;13582:12;:21;;:30;;;;:::i;:::-;13575:37;;13502:117;;;:::o;735:104:0:-;788:15;822:10;815:17;;735:104;:::o;20476:155:79:-;20568:2;20541:15;:24;20557:7;20541:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20616:7;20612:2;20585:39;;20594:16;20602:7;20594;:16::i;:::-;20585:39;;;;;;;;;;;;20476:155;;:::o;6284:121:95:-;6353:7;6379:19;6387:3;:10;;6379:7;:19::i;:::-;6372:26;;6284:121;;;:::o;13980:329:79:-;14065:4;14089:16;14097:7;14089;:16::i;:::-;14081:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14164:13;14180:16;14188:7;14180;:16::i;:::-;14164:32;;14225:5;14214:16;;:7;:16;;;:51;;;;14258:7;14234:31;;:20;14246:7;14234:11;:20::i;:::-;:31;;;14214:51;:87;;;;14269:32;14286:5;14293:7;14269:16;:32::i;:::-;14214:87;14206:96;;;13980:329;;;;:::o;17492:559::-;17609:4;17589:24;;:16;17597:7;17589;:16::i;:::-;:24;;;17581:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17691:1;17677:16;;:2;:16;;;;17669:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17745:39;17766:4;17772:2;17776:7;17745:20;:39::i;:::-;17846:29;17863:1;17867:7;17846:8;:29::i;:::-;17886:35;17913:7;17886:13;:19;17900:4;17886:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;17931:30;17953:7;17931:13;:17;17945:2;17931:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;17972:29;17989:7;17998:2;17972:12;:16;;:29;;;;;:::i;:::-;;18036:7;18032:2;18017:27;;18026:4;18017:27;;;;;;;;;;;;17492:559;;;:::o;6148:184:6:-;6221:33;6246:7;6221:6;:12;6228:4;6221:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;6217:109;;;6302:12;:10;:12::i;:::-;6275:40;;6293:7;6275:40;;6287:4;6275:40;;;;;;;;;;6217:109;6148:184;;:::o;7449:135:96:-;7520:7;7554:22;7558:3;:10;;7570:5;7554:3;:22::i;:::-;7546:31;;7539:38;;7449:135;;;;:::o;6338:188:6:-;6412:36;6440:7;6412:6;:12;6419:4;6412:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;6408:112;;;6496:12;:10;:12::i;:::-;6469:40;;6487:7;6469:40;;6481:4;6469:40;;;;;;;;;;6408:112;6338:188;;:::o;1839:117:97:-;1497:7;;;;;;;;;;;1489:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1907:5:::1;1897:7;;:15;;;;;;;;;;;;;;;;;;1927:22;1936:12;:10;:12::i;:::-;1927:22;;;;;;;;;;;;;;;;;;;;;;1839:117::o:0;16039:393:79:-;16132:1;16118:16;;:2;:16;;;;16110:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16190:16;16198:7;16190;:16::i;:::-;16189:17;16181:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16250:45;16279:1;16283:2;16287:7;16250:20;:45::i;:::-;16306:30;16328:7;16306:13;:17;16320:2;16306:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;16347:29;16364:7;16373:2;16347:12;:16;;:29;;;;;:::i;:::-;;16417:7;16413:2;16392:33;;16409:1;16392:33;;;;;;;;;;;;16039:393;;:::o;16613:502::-;16672:13;16688:16;16696:7;16688;:16::i;:::-;16672:32;;16715:48;16736:5;16751:1;16755:7;16715:20;:48::i;:::-;16801:29;16818:1;16822:7;16801:8;:29::i;:::-;16917:1;16886:10;:19;16897:7;16886:19;;;;;;;;;;;16880:33;;;;;;;;;;;;;;;;:38;16876:95;;16941:10;:19;16952:7;16941:19;;;;;;;;;;;;16934:26;;;;:::i;:::-;16876:95;16981:36;17009:7;16981:13;:20;16995:5;16981:20;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;;17028:28;17048:7;17028:12;:19;;:28;;;;:::i;:::-;;17100:7;17096:1;17072:36;;17081:5;17072:36;;;;;;;;;;;;16613:502;;:::o;6733:224:95:-;6813:7;6822;6842:11;6855:13;6872:22;6876:3;:10;;6888:5;6872:3;:22::i;:::-;6841:53;;;;6920:3;6912:12;;6942:5;6934:14;;6904:46;;;;;;;;;6733:224;;;;;:::o;7376:202::-;7483:7;7525:44;7530:3;:10;;7550:3;7542:12;;7556;7525:4;:44::i;:::-;7517:53;;7502:69;;7376:202;;;;;:::o;7005:112:96:-;7065:7;7091:19;7099:3;:10;;7091:7;:19::i;:::-;7084:26;;7005:112;;;:::o;1634:115:97:-;1306:7;;;;;;;;;;;1305:8;1297:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:4:::1;1693:7;;:14;;;;;;;;;;;;;;;;;;1722:20;1729:12;:10;:12::i;:::-;1722:20;;;;;;;;;;;;;;;;;;;;;;1634:115::o:0;5885:147:96:-;5959:7;6001:22;6005:3;:10;;6017:5;6001:3;:22::i;:::-;5993:31;;5978:47;;5885:147;;;;:::o;5201:156::-;5281:4;5304:46;5314:3;:10;;5342:5;5334:14;;5326:23;;5304:9;:46::i;:::-;5297:53;;5201:156;;;;:::o;13038:269:79:-;13151:28;13161:4;13167:2;13171:7;13151:9;:28::i;:::-;13197:48;13220:4;13226:2;13230:7;13239:5;13197:22;:48::i;:::-;13189:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13038:269;;;;:::o;5438:115:96:-;5501:7;5527:19;5535:3;:10;;5527:7;:19::i;:::-;5520:26;;5438:115;;;:::o;6052:149:95:-;6136:4;6159:35;6169:3;:10;;6189:3;6181:12;;6159:9;:35::i;:::-;6152:42;;6052:149;;;;:::o;3744:108::-;3800:7;3826:3;:12;;:19;;;;3819:26;;3744:108;;;:::o;2543:177:11:-;2668:45;2695:4;2701:2;2705:7;2668:26;:45::i;:::-;2543:177;;;:::o;6564:135:96:-;6634:4;6657:35;6665:3;:10;;6685:5;6677:14;;6657:7;:35::i;:::-;6650:42;;6564:135;;;;:::o;6267:129::-;6334:4;6357:32;6362:3;:10;;6382:5;6374:14;;6357:4;:32::i;:::-;6350:39;;6267:129;;;;:::o;5500:174:95:-;5589:4;5612:55;5617:3;:10;;5637:3;5629:12;;5659:5;5651:14;;5643:23;;5612:4;:55::i;:::-;5605:62;;5500:174;;;;;:::o;4664:141:96:-;4734:4;4757:41;4762:3;:10;;4790:5;4782:14;;4774:23;;4757:4;:41::i;:::-;4750:48;;4664:141;;;;:::o;4223:201::-;4290:7;4338:5;4317:3;:11;;:18;;;;:26;4309:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4399:3;:11;;4411:5;4399:18;;;;;;;;;;;;;;;;4392:25;;4223:201;;;;:::o;4973:147::-;5046:4;5069:44;5077:3;:10;;5105:5;5097:14;;5089:23;;5069:7;:44::i;:::-;5062:51;;4973:147;;;;:::o;5833:140:95:-;5910:4;5933:33;5941:3;:10;;5961:3;5953:12;;5933:7;:33::i;:::-;5926:40;;5833:140;;;;:::o;4195:274::-;4262:7;4271;4320:5;4298:3;:12;;:19;;;;:27;4290:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4375:22;4400:3;:12;;4413:5;4400:19;;;;;;;;;;;;;;;;;;4375:44;;4437:5;:10;;;4449:5;:12;;;4429:33;;;;;4195:274;;;;;:::o;4876:315::-;4970:7;4989:16;5008:3;:12;;:17;5021:3;5008:17;;;;;;;;;;;;4989:36;;5055:1;5043:8;:13;;5058:12;5035:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5035:36:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5124:3;:12;;5148:1;5137:8;:12;5124:26;;;;;;;;;;;;;;;;;;:33;;;5117:40;;;4876:315;;;;;:::o;3784:107:96:-;3840:7;3866:3;:11;;:18;;;;3859:25;;3784:107;;;:::o;3576:127::-;3649:4;3695:1;3672:3;:12;;:19;3685:5;3672:19;;;;;;;;;;;;:24;;3665:31;;3576:127;;;;:::o;19420:1050:79:-;19540:4;19565:15;:2;:13;;;:15::i;:::-;19560:58;;19603:4;19596:11;;;;19560:58;19687:12;19701:23;19728:2;:7;;19772:45;;;19831:12;:10;:12::i;:::-;19857:4;19875:7;19896:5;19736:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19736:175:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19736:175:79;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;19736:175:79;19728:184;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;19728:184:79;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;19686:226:79;;;;19927:7;19922:542;;19974:1;19954:10;:17;:21;19950:376;;;20119:10;20113:17;20179:15;20166:10;20162:2;20158:19;20151:44;20068:145;20251:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19922:542;20356:13;20383:10;20372:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20372:32:79;;;;;;;;;;;;;;;;20356:48;;970:10;20436:16;;20426:26;;;:6;:26;;;;20418:35;;;;;19420:1050;;;;;;;:::o;3531:123:95:-;3602:4;3646:1;3625:3;:12;;:17;3638:3;3625:17;;;;;;;;;;;;:22;;3618:29;;3531:123;;;;:::o;245:237:82:-;354:45;381:4;387:2;391:7;354:26;:45::i;:::-;419:8;:6;:8::i;:::-;418:9;410:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;245:237;;;:::o;1983:1512:96:-;2049:4;2165:18;2186:3;:12;;:19;2199:5;2186:19;;;;;;;;;;;;2165:40;;2234:1;2220:10;:15;2216:1273;;2577:21;2614:1;2601:10;:14;2577:38;;2629:17;2670:1;2649:3;:11;;:18;;;;:22;2629:42;;2911:17;2931:3;:11;;2943:9;2931:22;;;;;;;;;;;;;;;;2911:42;;3074:9;3045:3;:11;;3057:13;3045:26;;;;;;;;;;;;;;;:38;;;;3191:1;3175:13;:17;3149:3;:12;;:23;3162:9;3149:23;;;;;;;;;;;:43;;;;3298:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3390:3;:12;;:19;3403:5;3390:19;;;;;;;;;;;3383:26;;;3431:4;3424:11;;;;;;;;2216:1273;3473:5;3466:12;;;1983:1512;;;;;:::o;1411:404::-;1474:4;1495:21;1505:3;1510:5;1495:9;:21::i;:::-;1490:319;;1532:3;:11;;1549:5;1532:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1532:23:96;;;;;;;;;;;;;;;;;;;1712:3;:11;;:18;;;;1690:3;:12;;:19;1703:5;1690:19;;;;;;;;;;;:40;;;;1751:4;1744:11;;;;1490:319;1793:5;1786:12;;1411:404;;;;;:::o;1089:678:95:-;1165:4;1279:16;1298:3;:12;;:17;1311:3;1298:17;;;;;;;;;;;;1279:36;;1342:1;1330:8;:13;1326:435;;;1396:3;:12;;1414:38;;;;;;;;1431:3;1414:38;;;;1444:5;1414:38;;;1396:57;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1396:57:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1608:3;:12;;:19;;;;1588:3;:12;;:17;1601:3;1588:17;;;;;;;;;;;:39;;;;1648:4;1641:11;;;;;1326:435;1719:5;1683:3;:12;;1707:1;1696:8;:12;1683:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;1745:5;1738:12;;;1089:678;;;;;;:::o;1935:1517::-;1999:4;2113:16;2132:3;:12;;:17;2145:3;2132:17;;;;;;;;;;;;2113:36;;2176:1;2164:8;:13;2160:1286;;2520:21;2555:1;2544:8;:12;2520:36;;2570:17;2612:1;2590:3;:12;;:19;;;;:23;2570:43;;2853:26;2882:3;:12;;2895:9;2882:23;;;;;;;;;;;;;;;;;;2853:52;;3027:9;2997:3;:12;;3010:13;2997:27;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;3149:1;3133:13;:17;3102:3;:12;;:28;3115:9;:14;;;3102:28;;;;;;;;;;;:48;;;;3256:3;:12;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:3;:12;;:17;3362:3;3349:17;;;;;;;;;;;3342:24;;;3388:4;3381:11;;;;;;;;2160:1286;3430:5;3423:12;;;1935:1517;;;;;:::o;685:610:91:-;745:4;1003:16;1029:19;1051:66;1029:88;;;;1218:7;1206:20;1194:32;;1257:11;1245:8;:23;;:42;;;;;1284:3;1272:15;;:8;:15;;1245:42;1237:51;;;;685:610;;;:::o;21163:93:79:-;;;;:::o;781:1941:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/deploy-ready/ERC721MinterPauser.sol", + "exportedSymbols": { + "ERC721MinterPauser": [ + 2014 + ] + }, + "id": 2015, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1880, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:11" + }, + { + "absolutePath": "contracts/access/AccessControl.sol", + "file": "../access/AccessControl.sol", + "id": 1881, + "nodeType": "ImportDirective", + "scope": 2015, + "sourceUnit": 1465, + "src": "25:37:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 1882, + "nodeType": "ImportDirective", + "scope": 2015, + "sourceUnit": 27, + "src": "63:28:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "../token/ERC721/ERC721.sol", + "id": 1883, + "nodeType": "ImportDirective", + "scope": 2015, + "sourceUnit": 9215, + "src": "92:36:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol", + "file": "../token/ERC721/ERC721Burnable.sol", + "id": 1884, + "nodeType": "ImportDirective", + "scope": 2015, + "sourceUnit": 9245, + "src": "129:44:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Pausable.sol", + "file": "../token/ERC721/ERC721Pausable.sol", + "id": 1885, + "nodeType": "ImportDirective", + "scope": 2015, + "sourceUnit": 9306, + "src": "174:44:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1887, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "812:7:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1888, + "nodeType": "InheritanceSpecifier", + "src": "812:7:11" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1889, + "name": "AccessControl", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1464, + "src": "821:13:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AccessControl_$1464", + "typeString": "contract AccessControl" + } + }, + "id": 1890, + "nodeType": "InheritanceSpecifier", + "src": "821:13:11" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1891, + "name": "ERC721Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9244, + "src": "836:14:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Burnable_$9244", + "typeString": "contract ERC721Burnable" + } + }, + "id": 1892, + "nodeType": "InheritanceSpecifier", + "src": "836:14:11" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1893, + "name": "ERC721Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9305, + "src": "852:14:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Pausable_$9305", + "typeString": "contract ERC721Pausable" + } + }, + "id": 1894, + "nodeType": "InheritanceSpecifier", + "src": "852:14:11" + } + ], + "contractDependencies": [ + 26, + 1464, + 2472, + 2719, + 9214, + 9244, + 9305, + 9413, + 9441, + 9465, + 12000 + ], + "contractKind": "contract", + "documentation": { + "id": 1886, + "nodeType": "StructuredDocumentation", + "src": "220:560:11", + "text": "@dev {ERC721} token, including:\n * - ability for holders to burn (destroy) their tokens\n - a minter role that allows for token minting (creation)\n - a pauser role that allows to stop all token transfers\n * This contract uses {AccessControl} to lock permissioned functions using the\ndifferent roles - head to its documentation for details.\n * The account that deploys the contract will be granted the minter role, the\npauser role, and the default admin role, meaning it will be able to grant\nboth the minter and pauser roles." + }, + "fullyImplemented": true, + "id": 2014, + "linearizedBaseContracts": [ + 2014, + 9305, + 12000, + 9244, + 9214, + 9441, + 9465, + 9413, + 2472, + 2719, + 1464, + 26 + ], + "name": "ERC721MinterPauser", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "d5391393", + "id": 1899, + "name": "MINTER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2014, + "src": "873:62:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "873:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4d494e5445525f524f4c45", + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "921:13:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + }, + "value": "MINTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + } + ], + "id": 1896, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "911:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "911:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "e63ab1e9", + "id": 1904, + "name": "PAUSER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2014, + "src": "941:62:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1900, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "941:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "5041555345525f524f4c45", + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "989:13:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 1901, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "979:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "979:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 1934, + "nodeType": "Block", + "src": "1270:156:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1917, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1214, + "src": "1291:18:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1918, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1311:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1311:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1916, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "1280:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1280:44:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1921, + "nodeType": "ExpressionStatement", + "src": "1280:44:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1923, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1899, + "src": "1346:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1924, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1359:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1359:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1922, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "1335:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1335:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1927, + "nodeType": "ExpressionStatement", + "src": "1335:37:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1929, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "1393:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1930, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1406:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1928, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "1382:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1382:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1933, + "nodeType": "ExpressionStatement", + "src": "1382:37:11" + } + ] + }, + "documentation": { + "id": 1905, + "nodeType": "StructuredDocumentation", + "src": "1010:173:11", + "text": "@dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\naccount that deploys the contract.\n * See {ERC721-constructor}." + }, + "id": 1935, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1912, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1907, + "src": "1256:4:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 1913, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "1262:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 1914, + "modifierName": { + "argumentTypes": null, + "id": 1911, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9214, + "src": "1249:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$9214_$", + "typeString": "type(contract ERC721)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1249:20:11" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1907, + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1935, + "src": "1200:18:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1906, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1200:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1909, + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1935, + "src": "1220:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1908, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1220:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1199:42:11" + }, + "returnParameters": { + "id": 1915, + "nodeType": "ParameterList", + "parameters": [], + "src": "1270:0:11" + }, + "scope": 2014, + "src": "1188:238:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1957, + "nodeType": "Block", + "src": "1667:141:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1945, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1899, + "src": "1693:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1946, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1706:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1706:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1944, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "1685:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1685:34:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74", + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1721:51:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1c0be96088573724509db68332b8cb6909773e6cf03d9bf3a9043376b65e972a", + "typeString": "literal_string \"ERC721MinterPauser: must have minter role to mint\"" + }, + "value": "ERC721MinterPauser: must have minter role to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1c0be96088573724509db68332b8cb6909773e6cf03d9bf3a9043376b65e972a", + "typeString": "literal_string \"ERC721MinterPauser: must have minter role to mint\"" + } + ], + "id": 1943, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1677:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1677:96:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1951, + "nodeType": "ExpressionStatement", + "src": "1677:96:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1953, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "1789:2:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1954, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "1793:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1952, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8932, + "src": "1783:5:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1783:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1956, + "nodeType": "ExpressionStatement", + "src": "1783:18:11" + } + ] + }, + "documentation": { + "id": 1936, + "nodeType": "StructuredDocumentation", + "src": "1432:180:11", + "text": "@dev Creates the `tokenId` tokens for `to`.\n * See {ERC721-_mint}.\n * Requirements:\n * - the caller must have the `MINTER_ROLE`." + }, + "functionSelector": "40c10f19", + "id": 1958, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1941, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1938, + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1958, + "src": "1631:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1631:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1940, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1958, + "src": "1643:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1643:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1630:29:11" + }, + "returnParameters": { + "id": 1942, + "nodeType": "ParameterList", + "parameters": [], + "src": "1667:0:11" + }, + "scope": 2014, + "src": "1617:191:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1974, + "nodeType": "Block", + "src": "2036:132:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1964, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "2062:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1965, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2075:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2075:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1963, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "2054:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2054:34:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365", + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2090:52:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_48c05c270ec847aeaf642bc0fd9604afa3045eda7a245b5a230d2bccb64709aa", + "typeString": "literal_string \"ERC721MinterPauser: must have pauser role to pause\"" + }, + "value": "ERC721MinterPauser: must have pauser role to pause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_48c05c270ec847aeaf642bc0fd9604afa3045eda7a245b5a230d2bccb64709aa", + "typeString": "literal_string \"ERC721MinterPauser: must have pauser role to pause\"" + } + ], + "id": 1962, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2046:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2046:97:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1970, + "nodeType": "ExpressionStatement", + "src": "2046:97:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1971, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11983, + "src": "2153:6:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2153:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1973, + "nodeType": "ExpressionStatement", + "src": "2153:8:11" + } + ] + }, + "documentation": { + "id": 1959, + "nodeType": "StructuredDocumentation", + "src": "1814:193:11", + "text": "@dev Pauses all token transfers.\n * See {ERC721Pausable} and {Pausable-_pause}.\n * Requirements:\n * - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "8456cb59", + "id": 1975, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1960, + "nodeType": "ParameterList", + "parameters": [], + "src": "2026:2:11" + }, + "returnParameters": { + "id": 1961, + "nodeType": "ParameterList", + "parameters": [], + "src": "2036:0:11" + }, + "scope": 2014, + "src": "2012:156:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1991, + "nodeType": "Block", + "src": "2401:136:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1981, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "2427:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1982, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2440:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2440:12:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1980, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "2419:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 1984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2419:34:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365", + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2455:54:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e64272a98a4d2a3ae8106a03f5911f03fb5b099a412779b463ec782e79d212d8", + "typeString": "literal_string \"ERC721MinterPauser: must have pauser role to unpause\"" + }, + "value": "ERC721MinterPauser: must have pauser role to unpause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e64272a98a4d2a3ae8106a03f5911f03fb5b099a412779b463ec782e79d212d8", + "typeString": "literal_string \"ERC721MinterPauser: must have pauser role to unpause\"" + } + ], + "id": 1979, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2411:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2411:99:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1987, + "nodeType": "ExpressionStatement", + "src": "2411:99:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1988, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11999, + "src": "2520:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2520:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1990, + "nodeType": "ExpressionStatement", + "src": "2520:10:11" + } + ] + }, + "documentation": { + "id": 1976, + "nodeType": "StructuredDocumentation", + "src": "2174:196:11", + "text": "@dev Unpauses all token transfers.\n * See {ERC20Pausable} and {Pausable-_unpause}.\n * Requirements:\n * - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "3f4ba83a", + "id": 1992, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1977, + "nodeType": "ParameterList", + "parameters": [], + "src": "2391:2:11" + }, + "returnParameters": { + "id": 1978, + "nodeType": "ParameterList", + "parameters": [], + "src": "2401:0:11" + }, + "scope": 2014, + "src": "2375:162:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9213, + 9304 + ], + "body": { + "id": 2012, + "nodeType": "Block", + "src": "2658:62:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2007, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "2695:4:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2008, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1996, + "src": "2701:2:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2009, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1998, + "src": "2705:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2004, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2668:5:11", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721MinterPauser_$2014", + "typeString": "contract super ERC721MinterPauser" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9304, + "src": "2668:26:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2668:45:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2011, + "nodeType": "ExpressionStatement", + "src": "2668:45:11" + } + ] + }, + "documentation": null, + "id": 2013, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2002, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 2000, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9214, + "src": "2634:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$9214", + "typeString": "contract ERC721" + } + }, + { + "contractScope": null, + "id": 2001, + "name": "ERC721Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9305, + "src": "2642:14:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Pausable_$9305", + "typeString": "contract ERC721Pausable" + } + } + ], + "src": "2625:32:11" + }, + "parameters": { + "id": 1999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1994, + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2013, + "src": "2573:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2573:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1996, + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2013, + "src": "2587:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2587:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1998, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2013, + "src": "2599:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2599:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2572:43:11" + }, + "returnParameters": { + "id": 2003, + "nodeType": "ParameterList", + "parameters": [], + "src": "2658:0:11" + }, + "scope": 2014, + "src": "2543:177:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2015, + "src": "781:1941:11" + } + ], + "src": "0:2723:11" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162003fbf38038062003fbf833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508181620001cf6301ffc9a760e01b6200033e60201b60201c565b8160079080519060200190620001e7929190620006ad565b50806008908051906020019062000200929190620006ad565b50620002196380ac58cd60e01b6200033e60201b60201c565b62000231635b5e139f60e01b6200033e60201b60201c565b6200024963780e9d6360e01b6200033e60201b60201c565b50506000600b60006101000a81548160ff0219169083151502179055506200028a6000801b6200027e6200044760201b60201c565b6200044f60201b60201c565b620002e060405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620002d46200044760201b60201c565b6200044f60201b60201c565b6200033660405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206200032a6200044760201b60201c565b6200044f60201b60201c565b50506200075c565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620003db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b6200047b3073ffffffffffffffffffffffffffffffffffffffff16620004e960201b620033821760201c565b15620004d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018062003f886037913960400191505060405180910390fd5b620004e582826200053560201b60201c565b5050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156200052c57506000801b8214155b92505050919050565b6200056381600080858152602001908152602001600020600001620005d860201b620029c11790919060201c565b15620005d457620005796200044760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000608836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200061060201b60201c565b905092915050565b60006200062483836200068a60201b60201c565b6200067f57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000684565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006f057805160ff191683800117855562000721565b8280016001018555821562000721579182015b828111156200072057825182559160200191906001019062000703565b5b50905062000730919062000734565b5090565b6200075991905b80821115620007555760008160009055506001016200073b565b5090565b90565b61381c806200076c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d539139314610bcd578063d547741f14610beb578063e63ab1e914610c39578063e985e9c514610c57576101f0565b8063a22cb4651461098f578063b88d4fde146109df578063c87b56dd14610ae4578063ca15c87314610b8b576101f0565b80639010d07c116100de5780639010d07c1461081057806391d148541461088857806395d89b41146108ee578063a217fddf14610971576101f0565b80636352211e146106bd5780636c0360eb1461072b57806370a08231146107ae5780638456cb5914610806576101f0565b80632f745c591161018757806342842e0e1161015657806342842e0e146105bd57806342966c681461062b5780634f6ccce7146106595780635c975abb1461069b576101f0565b80632f745c59146104b557806336568abe146105175780633f4ba83a1461056557806340c10f191461056f576101f0565b806318160ddd116101c357806318160ddd1461039957806323b872dd146103b7578063248a9ca3146104255780632f2ff15d14610467576101f0565b806301ffc9a7146101f557806306fdde031461025a578063081812fc146102dd578063095ea7b31461034b575b600080fd5b6102406004803603602081101561020b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610cd3565b604051808215151515815260200191505060405180910390f35b610262610d3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a2578082015181840152602081019050610287565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610309600480360360208110156102f357600080fd5b8101908080359060200190929190505050610ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103976004803603604081101561036157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e78565b005b6103a1610fbc565b6040518082815260200191505060405180910390f35b610423600480360360608110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fcd565b005b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050611043565b6040518082815260200191505060405180910390f35b6104b36004803603604081101561047d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611062565b005b610501600480360360408110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110eb565b6040518082815260200191505060405180910390f35b6105636004803603604081101561052d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611146565b005b61056d6111df565b005b6105bb6004803603604081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611284565b005b610629600480360360608110156105d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061132d565b005b6106576004803603602081101561064157600080fd5b810190808035906020019092919050505061134d565b005b6106856004803603602081101561066f57600080fd5b81019080803590602001909291905050506113bf565b6040518082815260200191505060405180910390f35b6106a36113e2565b604051808215151515815260200191505060405180910390f35b6106e9600480360360208110156106d357600080fd5b81019080803590602001909291905050506113f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610733611430565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610773578082015181840152602081019050610758565b50505050905090810190601f1680156107a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107f0600480360360208110156107c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d2565b6040518082815260200191505060405180910390f35b61080e6115a7565b005b6108466004803603604081101561082657600080fd5b81019080803590602001909291908035906020019092919050505061164c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d46004803603604081101561089e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167d565b604051808215151515815260200191505060405180910390f35b6108f66116ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561093657808201518184015260208101905061091b565b50505050905090810190601f1680156109635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610979611750565b6040518082815260200191505060405180910390f35b6109dd600480360360408110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611757565b005b610ae2600480360360808110156109f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a5c57600080fd5b820183602082011115610a6e57600080fd5b80359060200191846001830284011164010000000083111715610a9057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061190f565b005b610b1060048036036020811015610afa57600080fd5b8101908080359060200190929190505050611987565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b50578082015181840152602081019050610b35565b50505050905090810190601f168015610b7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bb760048036036020811015610ba157600080fd5b8101908080359060200190929190505050611b89565b6040518082815260200191505060405180910390f35b610bd5611baf565b6040518082815260200191505060405180910390f35b610c3760048036036040811015610c0157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be8565b005b610c41611c71565b6040518082815260200191505060405180910390f35b610cb960048036036040811015610c6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611caa565b604051808215151515815260200191505060405180910390f35b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dd35780601f10610da857610100808354040283529160200191610dd3565b820191906000526020600020905b815481529060010190602001808311610db657829003601f168201915b5050505050905090565b6000610de882611d3e565b610e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061367e602c913960400191505060405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e83826113f9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137026021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f29611d5b565b73ffffffffffffffffffffffffffffffffffffffff161480610f585750610f5781610f52611d5b565b611caa565b5b610fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806135d16038913960400191505060405180910390fd5b610fb78383611d63565b505050565b6000610fc86003611e1c565b905090565b610fde610fd8611d5b565b82611e31565b611033576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806137236031913960400191505060405180910390fd5b61103e838383611f25565b505050565b6000806000838152602001908152602001600020600201549050919050565b61108860008084815260200190815260200160002060020154611083611d5b565b61167d565b6110dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061348d602f913960400191505060405180910390fd5b6110e78282612168565b5050565b600061113e82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206121fb90919063ffffffff16565b905092915050565b61114e611d5b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806137b8602f913960400191505060405180910390fd5b6111db8282612215565b5050565b61122560405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611220611d5b565b61167d565b61127a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806137546034913960400191505060405180910390fd5b6112826122a8565b565b6112ca60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206112c5611d5b565b61167d565b61131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806134bc6031913960400191505060405180910390fd5b61132982826123b1565b5050565b6113488383836040518060200160405280600081525061190f565b505050565b61135e611358611d5b565b82611e31565b6113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806137886030913960400191505060405180910390fd5b6113bc816125a5565b50565b6000806113d68360036126df90919063ffffffff16565b50905080915050919050565b6000600b60009054906101000a900460ff16905090565b60006114298260405180606001604052806029815260200161363360299139600361270e9092919063ffffffff16565b9050919050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114c85780601f1061149d576101008083540402835291602001916114c8565b820191906000526020600020905b8154815290600101906020018083116114ab57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613609602a913960400191505060405180910390fd5b6115a0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061272d565b9050919050565b6115ed60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206115e8611d5b565b61167d565b611642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135436032913960400191505060405180910390fd5b61164a612742565b565b60006116758260008086815260200190815260200160002060000161284c90919063ffffffff16565b905092915050565b60006116a68260008086815260200190815260200160002060000161286690919063ffffffff16565b905092915050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117465780601f1061171b57610100808354040283529160200191611746565b820191906000526020600020905b81548152906001019060200180831161172957829003601f168201915b5050505050905090565b6000801b81565b61175f611d5b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806006600061180d611d5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118ba611d5b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61192061191a611d5b565b83611e31565b611975576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806137236031913960400191505060405180910390fd5b61198184848484612896565b50505050565b606061199282611d3e565b6119e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806136d3602f913960400191505060405180910390fd5b6060600960008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a905780601f10611a6557610100808354040283529160200191611a90565b820191906000526020600020905b815481529060010190602001808311611a7357829003601f168201915b50505050509050600081511415611ab95760405180602001604052806000815250915050611b84565b600a816040516020018083805460018160011615610100020316600290048015611b1a5780601f10611af8576101008083540402835291820191611b1a565b820191906000526020600020905b815481529060010190602001808311611b06575b505082805190602001908083835b60208310611b4b5780518252602082019150602081019050602083039250611b28565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000611ba8600080848152602001908152602001600020600001612908565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611c0e60008084815260200190815260200160002060020154611c09611d5b565b61167d565b611c63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135a16030913960400191505060405180910390fd5b611c6d8282612215565b5050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611d5482600361291d90919063ffffffff16565b9050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611dd6836113f9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e2a82600001612937565b9050919050565b6000611e3c82611d3e565b611e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613575602c913960400191505060405180910390fd5b6000611e9c836113f9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f0b57508373ffffffffffffffffffffffffffffffffffffffff16611ef384610ddd565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f1c5750611f1b8185611caa565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f45826113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611fb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806136aa6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061351f6024913960400191505060405180910390fd5b612042838383612948565b61204d600082611d63565b61209e81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061295890919063ffffffff16565b506120f081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061297290919063ffffffff16565b506121078183600361298c9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61218f816000808581526020019081526020016000206000016129c190919063ffffffff16565b156121f75761219c611d5b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061220a83600001836129f1565b60001c905092915050565b61223c81600080858152602001908152602001600020600001612a7490919063ffffffff16565b156122a457612249611d5b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600b60009054906101000a900460ff1661232a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61236e611d5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612454576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61245d81611d3e565b156124d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b6124dc60008383612948565b61252d81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061297290919063ffffffff16565b506125448183600361298c9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006125b0826113f9565b90506125be81600084612948565b6125c9600083611d63565b600060096000848152602001908152602001600020805460018160011615610100020316600290049050146126185760096000838152602001908152602001600020600061261791906133d2565b5b61266982600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061295890919063ffffffff16565b5061267e826003612aa490919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000806000806126f28660000186612abe565b915091508160001c8160001c8090509350935050509250929050565b6000612721846000018460001b84612b57565b60001c90509392505050565b600061273b82600001612c4d565b9050919050565b600b60009054906101000a900460ff16156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612809611d5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061285b83600001836129f1565b60001c905092915050565b600061288e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612c5e565b905092915050565b6128a1848484611f25565b6128ad84848484612c81565b612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134ed6032913960400191505060405180910390fd5b50505050565b600061291682600001612c4d565b9050919050565b600061292f836000018360001b612fa4565b905092915050565b600081600001805490509050919050565b612953838383612fc7565b505050565b600061296a836000018360001b613035565b905092915050565b6000612984836000018360001b61311d565b905092915050565b60006129b8846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b61318d565b90509392505050565b60006129e9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61311d565b905092915050565b600081836000018054905011612a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806134406022913960400191505060405180910390fd5b826000018281548110612a6157fe5b9060005260206000200154905092915050565b6000612a9c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613035565b905092915050565b6000612ab6836000018360001b613269565b905092915050565b60008082846000018054905011612b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061365c6022913960400191505060405180910390fd5b6000846000018481548110612b3157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390612c1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612be3578082015181840152602081019050612bc8565b50505050905090810190601f168015612c105780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612c3157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000612ca28473ffffffffffffffffffffffffffffffffffffffff16613382565b612caf5760019050612f9c565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b612cda611d5b565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d8a578082015181840152602081019050612d6f565b50505050905090810190601f168015612db75780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e4f5780518252602082019150602081019050602083039250612e2c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612eb1576040519150601f19603f3d011682016040523d82523d6000602084013e612eb6565b606091505b509150915081612f2457600081511115612ed35780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134ed6032913960400191505060405180910390fd5b6000818060200190516020811015612f3b57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b612fd28383836133cd565b612fda6113e2565b15613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613462602b913960400191505060405180910390fd5b505050565b60008083600101600084815260200190815260200160002054905060008114613111576000600182039050600060018660000180549050039050600086600001828154811061308057fe5b906000526020600020015490508087600001848154811061309d57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806130d557fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613117565b60009150505b92915050565b60006131298383612c5e565b613182578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613187565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561323457846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613262565b8285600001600183038154811061324757fe5b90600052602060002090600202016001018190555060009150505b9392505050565b6000808360010160008481526020019081526020016000205490506000811461337657600060018203905060006001866000018054905003905060008660000182815481106132b457fe5b90600052602060002090600202019050808760000184815481106132d457fe5b906000526020600020906002020160008201548160000155600182015481600101559050506001830187600101600083600001548152602001908152602001600020819055508660000180548061332757fe5b600190038181906000526020600020906002020160008082016000905560018201600090555050905586600101600087815260200190815260200160002060009055600194505050505061337c565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156133c457506000801b8214155b92505050919050565b505050565b50805460018160011615610100020316600290046000825580601f106133f85750613417565b601f016020900490600052602060002090810190613416919061341a565b5b50565b61343c91905b80821115613438576000816000905550600101613420565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732314d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732314d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f2070617573654552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732314d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e70617573654552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220e95c6efc0a368aa3a2dc68c131edc5095c68602ad1d5cd7f097ce9b0e23c3d6f64736f6c63430006040033416363657373436f6e74726f6c3a20726f6c65732063616e6e6f7420626520736574757020616674657220636f6e737472756374696f6e", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d539139314610bcd578063d547741f14610beb578063e63ab1e914610c39578063e985e9c514610c57576101f0565b8063a22cb4651461098f578063b88d4fde146109df578063c87b56dd14610ae4578063ca15c87314610b8b576101f0565b80639010d07c116100de5780639010d07c1461081057806391d148541461088857806395d89b41146108ee578063a217fddf14610971576101f0565b80636352211e146106bd5780636c0360eb1461072b57806370a08231146107ae5780638456cb5914610806576101f0565b80632f745c591161018757806342842e0e1161015657806342842e0e146105bd57806342966c681461062b5780634f6ccce7146106595780635c975abb1461069b576101f0565b80632f745c59146104b557806336568abe146105175780633f4ba83a1461056557806340c10f191461056f576101f0565b806318160ddd116101c357806318160ddd1461039957806323b872dd146103b7578063248a9ca3146104255780632f2ff15d14610467576101f0565b806301ffc9a7146101f557806306fdde031461025a578063081812fc146102dd578063095ea7b31461034b575b600080fd5b6102406004803603602081101561020b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610cd3565b604051808215151515815260200191505060405180910390f35b610262610d3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a2578082015181840152602081019050610287565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610309600480360360208110156102f357600080fd5b8101908080359060200190929190505050610ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103976004803603604081101561036157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e78565b005b6103a1610fbc565b6040518082815260200191505060405180910390f35b610423600480360360608110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fcd565b005b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050611043565b6040518082815260200191505060405180910390f35b6104b36004803603604081101561047d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611062565b005b610501600480360360408110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110eb565b6040518082815260200191505060405180910390f35b6105636004803603604081101561052d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611146565b005b61056d6111df565b005b6105bb6004803603604081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611284565b005b610629600480360360608110156105d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061132d565b005b6106576004803603602081101561064157600080fd5b810190808035906020019092919050505061134d565b005b6106856004803603602081101561066f57600080fd5b81019080803590602001909291905050506113bf565b6040518082815260200191505060405180910390f35b6106a36113e2565b604051808215151515815260200191505060405180910390f35b6106e9600480360360208110156106d357600080fd5b81019080803590602001909291905050506113f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610733611430565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610773578082015181840152602081019050610758565b50505050905090810190601f1680156107a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107f0600480360360208110156107c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d2565b6040518082815260200191505060405180910390f35b61080e6115a7565b005b6108466004803603604081101561082657600080fd5b81019080803590602001909291908035906020019092919050505061164c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d46004803603604081101561089e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167d565b604051808215151515815260200191505060405180910390f35b6108f66116ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561093657808201518184015260208101905061091b565b50505050905090810190601f1680156109635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610979611750565b6040518082815260200191505060405180910390f35b6109dd600480360360408110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611757565b005b610ae2600480360360808110156109f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a5c57600080fd5b820183602082011115610a6e57600080fd5b80359060200191846001830284011164010000000083111715610a9057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061190f565b005b610b1060048036036020811015610afa57600080fd5b8101908080359060200190929190505050611987565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b50578082015181840152602081019050610b35565b50505050905090810190601f168015610b7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bb760048036036020811015610ba157600080fd5b8101908080359060200190929190505050611b89565b6040518082815260200191505060405180910390f35b610bd5611baf565b6040518082815260200191505060405180910390f35b610c3760048036036040811015610c0157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be8565b005b610c41611c71565b6040518082815260200191505060405180910390f35b610cb960048036036040811015610c6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611caa565b604051808215151515815260200191505060405180910390f35b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dd35780601f10610da857610100808354040283529160200191610dd3565b820191906000526020600020905b815481529060010190602001808311610db657829003601f168201915b5050505050905090565b6000610de882611d3e565b610e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061367e602c913960400191505060405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e83826113f9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137026021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f29611d5b565b73ffffffffffffffffffffffffffffffffffffffff161480610f585750610f5781610f52611d5b565b611caa565b5b610fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806135d16038913960400191505060405180910390fd5b610fb78383611d63565b505050565b6000610fc86003611e1c565b905090565b610fde610fd8611d5b565b82611e31565b611033576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806137236031913960400191505060405180910390fd5b61103e838383611f25565b505050565b6000806000838152602001908152602001600020600201549050919050565b61108860008084815260200190815260200160002060020154611083611d5b565b61167d565b6110dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061348d602f913960400191505060405180910390fd5b6110e78282612168565b5050565b600061113e82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206121fb90919063ffffffff16565b905092915050565b61114e611d5b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806137b8602f913960400191505060405180910390fd5b6111db8282612215565b5050565b61122560405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611220611d5b565b61167d565b61127a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806137546034913960400191505060405180910390fd5b6112826122a8565b565b6112ca60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206112c5611d5b565b61167d565b61131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806134bc6031913960400191505060405180910390fd5b61132982826123b1565b5050565b6113488383836040518060200160405280600081525061190f565b505050565b61135e611358611d5b565b82611e31565b6113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806137886030913960400191505060405180910390fd5b6113bc816125a5565b50565b6000806113d68360036126df90919063ffffffff16565b50905080915050919050565b6000600b60009054906101000a900460ff16905090565b60006114298260405180606001604052806029815260200161363360299139600361270e9092919063ffffffff16565b9050919050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114c85780601f1061149d576101008083540402835291602001916114c8565b820191906000526020600020905b8154815290600101906020018083116114ab57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613609602a913960400191505060405180910390fd5b6115a0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061272d565b9050919050565b6115ed60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206115e8611d5b565b61167d565b611642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135436032913960400191505060405180910390fd5b61164a612742565b565b60006116758260008086815260200190815260200160002060000161284c90919063ffffffff16565b905092915050565b60006116a68260008086815260200190815260200160002060000161286690919063ffffffff16565b905092915050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117465780601f1061171b57610100808354040283529160200191611746565b820191906000526020600020905b81548152906001019060200180831161172957829003601f168201915b5050505050905090565b6000801b81565b61175f611d5b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806006600061180d611d5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118ba611d5b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61192061191a611d5b565b83611e31565b611975576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806137236031913960400191505060405180910390fd5b61198184848484612896565b50505050565b606061199282611d3e565b6119e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806136d3602f913960400191505060405180910390fd5b6060600960008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a905780601f10611a6557610100808354040283529160200191611a90565b820191906000526020600020905b815481529060010190602001808311611a7357829003601f168201915b50505050509050600081511415611ab95760405180602001604052806000815250915050611b84565b600a816040516020018083805460018160011615610100020316600290048015611b1a5780601f10611af8576101008083540402835291820191611b1a565b820191906000526020600020905b815481529060010190602001808311611b06575b505082805190602001908083835b60208310611b4b5780518252602082019150602081019050602083039250611b28565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000611ba8600080848152602001908152602001600020600001612908565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611c0e60008084815260200190815260200160002060020154611c09611d5b565b61167d565b611c63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135a16030913960400191505060405180910390fd5b611c6d8282612215565b5050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611d5482600361291d90919063ffffffff16565b9050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611dd6836113f9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e2a82600001612937565b9050919050565b6000611e3c82611d3e565b611e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613575602c913960400191505060405180910390fd5b6000611e9c836113f9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f0b57508373ffffffffffffffffffffffffffffffffffffffff16611ef384610ddd565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f1c5750611f1b8185611caa565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f45826113f9565b73ffffffffffffffffffffffffffffffffffffffff1614611fb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806136aa6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061351f6024913960400191505060405180910390fd5b612042838383612948565b61204d600082611d63565b61209e81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061295890919063ffffffff16565b506120f081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061297290919063ffffffff16565b506121078183600361298c9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61218f816000808581526020019081526020016000206000016129c190919063ffffffff16565b156121f75761219c611d5b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061220a83600001836129f1565b60001c905092915050565b61223c81600080858152602001908152602001600020600001612a7490919063ffffffff16565b156122a457612249611d5b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600b60009054906101000a900460ff1661232a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61236e611d5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612454576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61245d81611d3e565b156124d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b6124dc60008383612948565b61252d81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061297290919063ffffffff16565b506125448183600361298c9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006125b0826113f9565b90506125be81600084612948565b6125c9600083611d63565b600060096000848152602001908152602001600020805460018160011615610100020316600290049050146126185760096000838152602001908152602001600020600061261791906133d2565b5b61266982600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061295890919063ffffffff16565b5061267e826003612aa490919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000806000806126f28660000186612abe565b915091508160001c8160001c8090509350935050509250929050565b6000612721846000018460001b84612b57565b60001c90509392505050565b600061273b82600001612c4d565b9050919050565b600b60009054906101000a900460ff16156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612809611d5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061285b83600001836129f1565b60001c905092915050565b600061288e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612c5e565b905092915050565b6128a1848484611f25565b6128ad84848484612c81565b612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134ed6032913960400191505060405180910390fd5b50505050565b600061291682600001612c4d565b9050919050565b600061292f836000018360001b612fa4565b905092915050565b600081600001805490509050919050565b612953838383612fc7565b505050565b600061296a836000018360001b613035565b905092915050565b6000612984836000018360001b61311d565b905092915050565b60006129b8846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b61318d565b90509392505050565b60006129e9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61311d565b905092915050565b600081836000018054905011612a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806134406022913960400191505060405180910390fd5b826000018281548110612a6157fe5b9060005260206000200154905092915050565b6000612a9c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613035565b905092915050565b6000612ab6836000018360001b613269565b905092915050565b60008082846000018054905011612b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061365c6022913960400191505060405180910390fd5b6000846000018481548110612b3157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390612c1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612be3578082015181840152602081019050612bc8565b50505050905090810190601f168015612c105780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612c3157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000612ca28473ffffffffffffffffffffffffffffffffffffffff16613382565b612caf5760019050612f9c565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b612cda611d5b565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d8a578082015181840152602081019050612d6f565b50505050905090810190601f168015612db75780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612e4f5780518252602082019150602081019050602083039250612e2c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612eb1576040519150601f19603f3d011682016040523d82523d6000602084013e612eb6565b606091505b509150915081612f2457600081511115612ed35780518082602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806134ed6032913960400191505060405180910390fd5b6000818060200190516020811015612f3b57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b612fd28383836133cd565b612fda6113e2565b15613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613462602b913960400191505060405180910390fd5b505050565b60008083600101600084815260200190815260200160002054905060008114613111576000600182039050600060018660000180549050039050600086600001828154811061308057fe5b906000526020600020015490508087600001848154811061309d57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806130d557fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613117565b60009150505b92915050565b60006131298383612c5e565b613182578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613187565b600090505b92915050565b600080846001016000858152602001908152602001600020549050600081141561323457846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613262565b8285600001600183038154811061324757fe5b90600052602060002090600202016001018190555060009150505b9392505050565b6000808360010160008481526020019081526020016000205490506000811461337657600060018203905060006001866000018054905003905060008660000182815481106132b457fe5b90600052602060002090600202019050808760000184815481106132d457fe5b906000526020600020906002020160008201548160000155600182015481600101559050506001830187600101600083600001548152602001908152602001600020819055508660000180548061332757fe5b600190038181906000526020600020906002020160008082016000905560018201600090555050905586600101600087815260200190815260200160002060009055600194505050505061337c565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156133c457506000801b8214155b92505050919050565b505050565b50805460018160011615610100020316600290046000825580601f106133f85750613417565b601f016020900490600052602060002090810190613416919061341a565b5b50565b61343c91905b80821115613438576000816000905550600101613420565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732314d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732314d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f2070617573654552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732314d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e70617573654552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220e95c6efc0a368aa3a2dc68c131edc5095c68602ad1d5cd7f097ce9b0e23c3d6f64736f6c63430006040033", + "compiler": { + "name": "solc", + "version": "0.6.4+commit.1dca32f3.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Mock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Mock.json new file mode 100644 index 0000000..0910893 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Mock.json @@ -0,0 +1,1885 @@ +{ + "fileName": "ERC721Mock.sol", + "contractName": "ERC721Mock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC721/ERC721.sol\";\n\n/**\n * @title ERC721Mock\n * This mock just provides a public safeMint, mint, and burn functions for testing purposes\n */\ncontract ERC721Mock is ERC721 {\n constructor (string memory name, string memory symbol) public ERC721(name, symbol) { }\n\n function exists(uint256 tokenId) public view returns (bool) {\n return _exists(tokenId);\n }\n\n function setTokenURI(uint256 tokenId, string memory uri) public {\n _setTokenURI(tokenId, uri);\n }\n\n function setBaseURI(string memory baseURI) public {\n _setBaseURI(baseURI);\n }\n\n function mint(address to, uint256 tokenId) public {\n _mint(to, tokenId);\n }\n\n function safeMint(address to, uint256 tokenId) public {\n _safeMint(to, tokenId);\n }\n\n function safeMint(address to, uint256 tokenId, bytes memory _data) public {\n _safeMint(to, tokenId, _data);\n }\n\n function burn(uint256 tokenId) public {\n _burn(tokenId);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721Mock.sol", + "sourceMap": "217:827:41:-:0;;;253:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;322:4;328:6;751:40:11;418:10;770:20;;751:18;;;:40;;:::i;:::-;3532:4:79;3524:5;:12;;;;;;;;;;;;:::i;:::-;;3556:6;3546:7;:16;;;;;;;;;;;;:::i;:::-;;3650:40;2730:10;3669:20;;3650:18;;;:40;;:::i;:::-;3700:49;3062:10;3719:29;;3700:18;;;:49;;:::i;:::-;3759:51;3435:10;3778:31;;3759:18;;;:51;;:::i;:::-;3452:365;;253:86:41;;217:827;;1482:198:11;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;217:827:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "217:827:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4723:90:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9383:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8717:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;451:107:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7597:200:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11094:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7292:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;657:85:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12043:149:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;973:69:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;345:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8135:161:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;564:87:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4451:167:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6831:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4021:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;847:120:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4922:94:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;748:93:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9891:290:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12915:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5859:740;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10503:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;948:140:11;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;4723:90:79:-;4769:13;4801:5;4794:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:90;:::o;9383:209::-;9451:7;9478:16;9486:7;9478;:16::i;:::-;9470:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9561:15;:24;9577:7;9561:24;;;;;;;;;;;;;;;;;;;;;9554:31;;9383:209;;;:::o;8717:381::-;8797:13;8813:16;8821:7;8813;:16::i;:::-;8797:32;;8853:5;8847:11;;:2;:11;;;;8839:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8931:5;8915:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8940:37;8957:5;8964:12;:10;:12::i;:::-;8940:16;:37::i;:::-;8915:62;8907:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9070:21;9079:2;9083:7;9070:8;:21::i;:::-;8717:381;;;:::o;451:107:41:-;525:26;538:7;547:3;525:12;:26::i;:::-;451:107;;:::o;7597:200:79:-;7650:7;7769:21;:12;:19;:21::i;:::-;7762:28;;7597:200;:::o;11094:300::-;11253:41;11272:12;:10;:12::i;:::-;11286:7;11253:18;:41::i;:::-;11245:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11359:28;11369:4;11375:2;11379:7;11359:9;:28::i;:::-;11094:300;;;:::o;7292:152::-;7381:7;7407:30;7431:5;7407:13;:20;7421:5;7407:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;7400:37;;7292:152;;;;:::o;657:85:41:-;717:18;723:2;727:7;717:5;:18::i;:::-;657:85;;:::o;12043:149:79:-;12146:39;12163:4;12169:2;12173:7;12146:39;;;;;;;;;;;;:16;:39::i;:::-;12043:149;;;:::o;973:69:41:-;1021:14;1027:7;1021:5;:14::i;:::-;973:69;:::o;345:100::-;399:4;422:16;430:7;422;:16::i;:::-;415:23;;345:100;;;:::o;8135:161:79:-;8202:7;8222:15;8243:22;8259:5;8243:12;:15;;:22;;;;:::i;:::-;8221:44;;;8282:7;8275:14;;;8135:161;;;:::o;564:87:41:-;624:20;636:7;624:11;:20::i;:::-;564:87;:::o;4451:167:79:-;4515:7;4541:70;4558:7;4541:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4534:77;;4451:167;;;:::o;6831:87::-;6871:13;6903:8;6896:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:87;:::o;4021:211::-;4085:7;4129:1;4112:19;;:5;:19;;;;4104:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4196:29;:13;:20;4210:5;4196:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4189:36;;4021:211;;;:::o;847:120:41:-;931:29;941:2;945:7;954:5;931:9;:29::i;:::-;847:120;;;:::o;4922:94:79:-;4970:13;5002:7;4995:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:94;:::o;748:93:41:-;812:22;822:2;826:7;812:9;:22::i;:::-;748:93;;:::o;9891:290:79:-;10005:12;:10;:12::i;:::-;9993:24;;:8;:24;;;;9985:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10103:8;10058:18;:32;10077:12;:10;:12::i;:::-;10058:32;;;;;;;;;;;;;;;:42;10091:8;10058:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;10155:8;10126:48;;10141:12;:10;:12::i;:::-;10126:48;;;10165:8;10126:48;;;;;;;;;;;;;;;;;;;;;;9891:290;;:::o;12915:282::-;13046:41;13065:12;:10;:12::i;:::-;13079:7;13046:18;:41::i;:::-;13038:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13151:39;13165:4;13171:2;13175:7;13184:5;13151:13;:39::i;:::-;12915:282;;;;:::o;5859:740::-;5924:13;5957:16;5965:7;5957;:16::i;:::-;5949:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6036:23;6062:10;:19;6073:7;6062:19;;;;;;;;;;;6036:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6180:1;6160:8;6154:22;;;;;;;;;;;;;;;;:27;6150:74;;;6204:9;6197:16;;;;;6150:74;6352:1;6332:9;6326:23;:27;6322:110;;;6400:8;6410:9;6383:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6369:52;;;;;6322:110;6562:8;6572:18;:7;:16;:18::i;:::-;6545:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6531:61;;;5859:740;;;;:::o;10503:154::-;10592:4;10615:18;:25;10634:5;10615:25;;;;;;;;;;;;;;;:35;10641:8;10615:35;;;;;;;;;;;;;;;;;;;;;;;;;10608:42;;10503:154;;;;:::o;14366:117::-;14423:4;14446:30;14468:7;14446:12;:21;;:30;;;;:::i;:::-;14439:37;;14366:117;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;21390:155:79:-;21482:2;21455:15;:24;21471:7;21455:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21530:7;21526:2;21499:39;;21508:16;21516:7;21508;:16::i;:::-;21499:39;;;;;;;;;;;;21390:155;;:::o;19248:212::-;19347:16;19355:7;19347;:16::i;:::-;19339:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19444:9;19422:10;:19;19433:7;19422:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;19248:212;;:::o;7023:121:95:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;14844:329:79:-;14929:4;14953:16;14961:7;14953;:16::i;:::-;14945:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15028:13;15044:16;15052:7;15044;:16::i;:::-;15028:32;;15089:5;15078:16;;:7;:16;;;:51;;;;15122:7;15098:31;;:20;15110:7;15098:11;:20::i;:::-;:31;;;15078:51;:87;;;;15133:32;15150:5;15157:7;15133:16;:32::i;:::-;15078:87;15070:96;;;14844:329;;;;:::o;18356:559::-;18473:4;18453:24;;:16;18461:7;18453;:16::i;:::-;:24;;;18445:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18555:1;18541:16;;:2;:16;;;;18533:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18609:39;18630:4;18636:2;18640:7;18609:20;:39::i;:::-;18710:29;18727:1;18731:7;18710:8;:29::i;:::-;18750:35;18777:7;18750:13;:19;18764:4;18750:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;18795:30;18817:7;18795:13;:17;18809:2;18795:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;18836:29;18853:7;18862:2;18836:12;:16;;:29;;;;;:::i;:::-;;18900:7;18896:2;18881:27;;18890:4;18881:27;;;;;;;;;;;;18356:559;;;:::o;7649:135:96:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;16903:393:79:-;16996:1;16982:16;;:2;:16;;;;16974:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:16;17062:7;17054;:16::i;:::-;17053:17;17045:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17114:45;17143:1;17147:2;17151:7;17114:20;:45::i;:::-;17170:30;17192:7;17170:13;:17;17184:2;17170:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;17211:29;17228:7;17237:2;17211:12;:16;;:29;;;;;:::i;:::-;;17281:7;17277:2;17256:33;;17273:1;17256:33;;;;;;;;;;;;16903:393;;:::o;17477:502::-;17536:13;17552:16;17560:7;17552;:16::i;:::-;17536:32;;17579:48;17600:5;17615:1;17619:7;17579:20;:48::i;:::-;17665:29;17682:1;17686:7;17665:8;:29::i;:::-;17781:1;17750:10;:19;17761:7;17750:19;;;;;;;;;;;17744:33;;;;;;;;;;;;;;;;:38;17740:95;;17805:10;:19;17816:7;17805:19;;;;;;;;;;;;17798:26;;;;:::i;:::-;17740:95;17845:36;17873:7;17845:13;:20;17859:5;17845:20;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;;17892:28;17912:7;17892:12;:19;;:28;;;;:::i;:::-;;17964:7;17960:1;17936:36;;17945:5;17936:36;;;;;;;;;;;;17477:502;;:::o;7472:224:95:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;19683:98:79:-;19766:8;19755;:19;;;;;;;;;;;;:::i;:::-;;19683:98;:::o;8115:202:95:-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:96:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;16411:247:79:-;16506:18;16512:2;16516:7;16506:5;:18::i;:::-;16542:54;16573:1;16577:2;16581:7;16590:5;16542:22;:54::i;:::-;16534:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16411:247;;;:::o;15702:108::-;15777:26;15787:2;15791:7;15777:26;;;;;;;;;;;;:9;:26::i;:::-;15702:108;;:::o;13902:269::-;14015:28;14025:4;14031:2;14035:7;14015:9;:28::i;:::-;14061:48;14084:4;14090:2;14094:7;14103:5;14061:22;:48::i;:::-;14053:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:269;;;;:::o;202:723:100:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;6791:149:95:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;22101:93:79:-;;;;:::o;6764:135:96:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:95:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:96:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;6572:140:95:-;6649:4;6672:33;6680:3;:10;;6700:3;6692:12;;6672:7;:33::i;:::-;6665:40;;6572:140;;;;:::o;4934:274::-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:96:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;20334:1050:79:-;20454:4;20479:15;:2;:13;;;:15::i;:::-;20474:58;;20517:4;20510:11;;;;20474:58;20601:12;20615:23;20642:2;:7;;20686:45;;;20745:12;:10;:12::i;:::-;20771:4;20789:7;20810:5;20650:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20642:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20600:226;;;;20841:7;20836:542;;20888:1;20868:10;:17;:21;20864:376;;;21033:10;21027:17;21093:15;21080:10;21076:2;21072:19;21065:44;20982:145;21165:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20836:542;21270:13;21297:10;21286:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21270:48;;1068:10;21350:16;;21340:26;;;:6;:26;;;;21332:35;;;;;20334:1050;;;;;;;:::o;4270:123:95:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:96:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:95:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;2674:1517::-;2738:4;2852:16;2871:3;:12;;:17;2884:3;2871:17;;;;;;;;;;;;2852:36;;2915:1;2903:8;:13;2899:1286;;3259:21;3294:1;3283:8;:12;3259:36;;3309:17;3351:1;3329:3;:12;;:19;;;;:23;3309:43;;3592:26;3621:3;:12;;3634:9;3621:23;;;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;3888:1;3872:13;:17;3841:3;:12;;:28;3854:9;:14;;;3841:28;;;;;;;;;;;:48;;;;3995:3;:12;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:3;:12;;:17;4101:3;4088:17;;;;;;;;;;;4081:24;;;4127:4;4120:11;;;;;;;;2899:1286;4169:5;4162:12;;;2674:1517;;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3776:127:96:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "baseURI", + "type": "string" + } + ], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "name": "setTokenURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721Mock.sol", + "exportedSymbols": { + "ERC721Mock": [ + 4027 + ] + }, + "id": 4028, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3923, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:41" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "../token/ERC721/ERC721.sol", + "id": 3924, + "nodeType": "ImportDirective", + "scope": 4028, + "sourceUnit": 9254, + "src": "58:36:41", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3926, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9253, + "src": "240:6:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$9253", + "typeString": "contract ERC721" + } + }, + "id": 3927, + "nodeType": "InheritanceSpecifier", + "src": "240:6:41" + } + ], + "contractDependencies": [ + 26, + 2190, + 2436, + 9253, + 9461, + 9492, + 9519 + ], + "contractKind": "contract", + "documentation": { + "id": 3925, + "nodeType": "StructuredDocumentation", + "src": "96:120:41", + "text": " @title ERC721Mock\n This mock just provides a public safeMint, mint, and burn functions for testing purposes" + }, + "fullyImplemented": true, + "id": 4027, + "linearizedBaseContracts": [ + 4027, + 9253, + 9492, + 9519, + 9461, + 2190, + 2436, + 26 + ], + "name": "ERC721Mock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3938, + "nodeType": "Block", + "src": "336:3:41", + "statements": [] + }, + "documentation": null, + "id": 3939, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 3934, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3929, + "src": "322:4:41", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 3935, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3931, + "src": "328:6:41", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 3936, + "modifierName": { + "argumentTypes": null, + "id": 3933, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9253, + "src": "315:6:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$9253_$", + "typeString": "type(contract ERC721)" + } + }, + "nodeType": "ModifierInvocation", + "src": "315:20:41" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3929, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3939, + "src": "266:18:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3928, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "266:6:41", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3931, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3939, + "src": "286:20:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3930, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "286:6:41", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "265:42:41" + }, + "returnParameters": { + "id": 3937, + "nodeType": "ParameterList", + "parameters": [], + "src": "336:0:41" + }, + "scope": 4027, + "src": "253:86:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3950, + "nodeType": "Block", + "src": "405:40:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3947, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "430:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3946, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8828, + "src": "422:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 3948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "422:16:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3945, + "id": 3949, + "nodeType": "Return", + "src": "415:23:41" + } + ] + }, + "documentation": null, + "functionSelector": "4f558e79", + "id": 3951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exists", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3941, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3951, + "src": "361:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "361:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "360:17:41" + }, + "returnParameters": { + "id": 3945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3944, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3951, + "src": "399:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3943, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "399:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "398:6:41" + }, + "scope": 4027, + "src": "345:100:41", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3963, + "nodeType": "Block", + "src": "515:43:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3959, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3953, + "src": "538:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3960, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3955, + "src": "547:3:41", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3958, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9132, + "src": "525:12:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 3961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "525:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3962, + "nodeType": "ExpressionStatement", + "src": "525:26:41" + } + ] + }, + "documentation": null, + "functionSelector": "162094c4", + "id": 3964, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setTokenURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3953, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3964, + "src": "472:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "472:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3955, + "mutability": "mutable", + "name": "uri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3964, + "src": "489:17:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3954, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "489:6:41", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "471:36:41" + }, + "returnParameters": { + "id": 3957, + "nodeType": "ParameterList", + "parameters": [], + "src": "515:0:41" + }, + "scope": 4027, + "src": "451:107:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3973, + "nodeType": "Block", + "src": "614:37:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3970, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3966, + "src": "636:7:41", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3969, + "name": "_setBaseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9143, + "src": "624:11:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 3971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "624:20:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3972, + "nodeType": "ExpressionStatement", + "src": "624:20:41" + } + ] + }, + "documentation": null, + "functionSelector": "55f804b3", + "id": 3974, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setBaseURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3966, + "mutability": "mutable", + "name": "baseURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3974, + "src": "584:21:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3965, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "584:6:41", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "583:23:41" + }, + "returnParameters": { + "id": 3968, + "nodeType": "ParameterList", + "parameters": [], + "src": "614:0:41" + }, + "scope": 4027, + "src": "564:87:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3986, + "nodeType": "Block", + "src": "707:35:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3982, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3976, + "src": "723:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3983, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "727:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3981, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8971, + "src": "717:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "717:18:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3985, + "nodeType": "ExpressionStatement", + "src": "717:18:41" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 3987, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3976, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3987, + "src": "671:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "671:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3978, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3987, + "src": "683:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "683:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "670:29:41" + }, + "returnParameters": { + "id": 3980, + "nodeType": "ParameterList", + "parameters": [], + "src": "707:0:41" + }, + "scope": 4027, + "src": "657:85:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3999, + "nodeType": "Block", + "src": "802:39:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3995, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3989, + "src": "822:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3996, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3991, + "src": "826:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3994, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8883, + 8912 + ], + "referencedDeclaration": 8883, + "src": "812:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "812:22:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3998, + "nodeType": "ExpressionStatement", + "src": "812:22:41" + } + ] + }, + "documentation": null, + "functionSelector": "a1448194", + "id": 4000, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeMint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3989, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4000, + "src": "766:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "766:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3991, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4000, + "src": "778:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "778:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "765:29:41" + }, + "returnParameters": { + "id": 3993, + "nodeType": "ParameterList", + "parameters": [], + "src": "802:0:41" + }, + "scope": 4027, + "src": "748:93:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4015, + "nodeType": "Block", + "src": "921:46:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4010, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "941:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4011, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4004, + "src": "945:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4012, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4006, + "src": "954:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4009, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8883, + 8912 + ], + "referencedDeclaration": 8912, + "src": "931:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 4013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "931:29:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4014, + "nodeType": "ExpressionStatement", + "src": "931:29:41" + } + ] + }, + "documentation": null, + "functionSelector": "8832e6e3", + "id": 4016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeMint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4016, + "src": "865:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4001, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "865:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4004, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4016, + "src": "877:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "877:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4006, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4016, + "src": "894:18:41", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4005, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "894:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "864:49:41" + }, + "returnParameters": { + "id": 4008, + "nodeType": "ParameterList", + "parameters": [], + "src": "921:0:41" + }, + "scope": 4027, + "src": "847:120:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4025, + "nodeType": "Block", + "src": "1011:31:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4022, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4018, + "src": "1027:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4021, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9039, + "src": "1021:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1021:14:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4024, + "nodeType": "ExpressionStatement", + "src": "1021:14:41" + } + ] + }, + "documentation": null, + "functionSelector": "42966c68", + "id": 4026, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4018, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4026, + "src": "987:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "987:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "986:17:41" + }, + "returnParameters": { + "id": 4020, + "nodeType": "ParameterList", + "parameters": [], + "src": "1011:0:41" + }, + "scope": 4027, + "src": "973:69:41", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4028, + "src": "217:827:41" + } + ], + "src": "33:1012:41" + }, + "bytecode": "0x60806040523480156200001157600080fd5b50604051620034ef380380620034ef833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508181620001cf6301ffc9a760e01b6200025360201b60201c565b8160069080519060200190620001e79291906200035c565b508060079080519060200190620002009291906200035c565b50620002196380ac58cd60e01b6200025360201b60201c565b62000231635b5e139f60e01b6200025360201b60201c565b6200024963780e9d6360e01b6200025360201b60201c565b505050506200040b565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039f57805160ff1916838001178555620003d0565b82800160010185558215620003d0579182015b82811115620003cf578251825591602001919060010190620003b2565b5b509050620003df9190620003e3565b5090565b6200040891905b8082111562000404576000816000905550600101620003ea565b5090565b90565b6130d4806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80634f6ccce7116100c357806395d89b411161007c57806395d89b411461090f578063a144819414610992578063a22cb465146109e0578063b88d4fde14610a30578063c87b56dd14610b35578063e985e9c514610bdc57610158565b80634f6ccce7146105e457806355f804b3146106265780636352211e146106e15780636c0360eb1461074f57806370a08231146107d25780638832e6e31461082a57610158565b806323b872dd1161011557806323b872dd146103e45780632f745c591461045257806340c10f19146104b457806342842e0e1461050257806342966c68146105705780634f558e791461059e57610158565b806301ffc9a71461015d57806306fdde03146101c2578063081812fc14610245578063095ea7b3146102b3578063162094c41461030157806318160ddd146103c6575b600080fd5b6101a86004803603602081101561017357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610c58565b604051808215151515815260200191505060405180910390f35b6101ca610cbf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020a5780820151818401526020810190506101ef565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102716004803603602081101561025b57600080fd5b8101908080359060200190929190505050610d61565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ff600480360360408110156102c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dfc565b005b6103c46004803603604081101561031757600080fd5b81019080803590602001909291908035906020019064010000000081111561033e57600080fd5b82018360208201111561035057600080fd5b8035906020019184600183028401116401000000008311171561037257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610f40565b005b6103ce610f4e565b6040518082815260200191505060405180910390f35b610450600480360360608110156103fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f5f565b005b61049e6004803603604081101561046857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fd5565b6040518082815260200191505060405180910390f35b610500600480360360408110156104ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611030565b005b61056e6004803603606081101561051857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061103e565b005b61059c6004803603602081101561058657600080fd5b810190808035906020019092919050505061105e565b005b6105ca600480360360208110156105b457600080fd5b810190808035906020019092919050505061106a565b604051808215151515815260200191505060405180910390f35b610610600480360360208110156105fa57600080fd5b810190808035906020019092919050505061107c565b6040518082815260200191505060405180910390f35b6106df6004803603602081101561063c57600080fd5b810190808035906020019064010000000081111561065957600080fd5b82018360208201111561066b57600080fd5b8035906020019184600183028401116401000000008311171561068d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061109f565b005b61070d600480360360208110156106f757600080fd5b81019080803590602001909291905050506110ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107576110e2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079757808201518184015260208101905061077c565b50505050905090810190601f1680156107c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610814600480360360208110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611184565b6040518082815260200191505060405180910390f35b61090d6004803603606081101561084057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561088757600080fd5b82018360208201111561089957600080fd5b803590602001918460018302840111640100000000831117156108bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611259565b005b610917611269565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095757808201518184015260208101905061093c565b50505050905090810190601f1680156109845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109de600480360360408110156109a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130b565b005b610a2e600480360360408110156109f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611319565b005b610b3360048036036080811015610a4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610aad57600080fd5b820183602082011115610abf57600080fd5b80359060200191846001830284011164010000000083111715610ae157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114d1565b005b610b6160048036036020811015610b4b57600080fd5b8101908080359060200190929190505050611549565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba1578082015181840152602081019050610b86565b50505050905090810190601f168015610bce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c3e60048036036040811015610bf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611832565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b5050505050905090565b6000610d6c826118c6565b610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612f9d602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e07826110ab565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061304d6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ead6118e3565b73ffffffffffffffffffffffffffffffffffffffff161480610edc5750610edb81610ed66118e3565b611832565b5b610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612ef06038913960400191505060405180910390fd5b610f3b83836118eb565b505050565b610f4a82826119a4565b5050565b6000610f5a6002611a2e565b905090565b610f70610f6a6118e3565b82611a43565b610fc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061306e6031913960400191505060405180910390fd5b610fd0838383611b37565b505050565b600061102882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d7a90919063ffffffff16565b905092915050565b61103a8282611d94565b5050565b611059838383604051806020016040528060008152506114d1565b505050565b61106781611f88565b50565b6000611075826118c6565b9050919050565b6000806110938360026120c290919063ffffffff16565b50905080915050919050565b6110a8816120f1565b50565b60006110db82604051806060016040528060298152602001612f5260299139600261210b9092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561117a5780601f1061114f5761010080835404028352916020019161117a565b820191906000526020600020905b81548152906001019060200180831161115d57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f28602a913960400191505060405180910390fd5b611252600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061212a565b9050919050565b61126483838361213f565b505050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113015780601f106112d657610100808354040283529160200191611301565b820191906000526020600020905b8154815290600101906020018083116112e457829003601f168201915b5050505050905090565b61131582826121b0565b5050565b6113216118e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006113cf6118e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661147c6118e3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6114e26114dc6118e3565b83611a43565b611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061306e6031913960400191505060405180910390fd5b611543848484846121ce565b50505050565b6060611554826118c6565b6115a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061301e602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116525780601f1061162757610100808354040283529160200191611652565b820191906000526020600020905b81548152906001019060200180831161163557829003601f168201915b50505050509050600060098054600181600116156101000203166002900490501415611681578091505061182d565b60008151111561175a5760098160405160200180838054600181600116156101000203166002900480156116ec5780601f106116ca5761010080835404028352918201916116ec565b820191906000526020600020905b8154815290600101906020018083116116d8575b505082805190602001908083835b6020831061171d57805182526020820191506020810190506020830392506116fa565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291505061182d565b600961176584612240565b60405160200180838054600181600116156101000203166002900480156117c35780601f106117a15761010080835404028352918201916117c3565b820191906000526020600020905b8154815290600101906020018083116117af575b505082805190602001908083835b602083106117f457805182526020820191506020810190506020830392506117d1565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006118dc82600261238790919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661195e836110ab565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6119ad826118c6565b611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612fc9602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190611a29929190612d5e565b505050565b6000611a3c826000016123a1565b9050919050565b6000611a4e826118c6565b611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612ec4602c913960400191505060405180910390fd5b6000611aae836110ab565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b1d57508373ffffffffffffffffffffffffffffffffffffffff16611b0584610d61565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b2e5750611b2d8185611832565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b57826110ab565b73ffffffffffffffffffffffffffffffffffffffff1614611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612ff56029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ea06024913960400191505060405180910390fd5b611c548383836123b2565b611c5f6000826118eb565b611cb081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123b790919063ffffffff16565b50611d0281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123d190919063ffffffff16565b50611d19818360026123eb9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611d898360000183612420565b60001c905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611e40816118c6565b15611eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b611ebf600083836123b2565b611f1081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123d190919063ffffffff16565b50611f27818360026123eb9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611f93826110ab565b9050611fa1816000846123b2565b611fac6000836118eb565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014611ffb57600860008381526020019081526020016000206000611ffa9190612dde565b5b61204c82600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123b790919063ffffffff16565b506120618260026124a390919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000806000806120d586600001866124bd565b915091508160001c8160001c8090509350935050509250929050565b8060099080519060200190612107929190612d5e565b5050565b600061211e846000018460001b84612556565b60001c90509392505050565b60006121388260000161264c565b9050919050565b6121498383611d94565b612156600084848461265d565b6121ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612e6e6032913960400191505060405180910390fd5b505050565b6121ca82826040518060200160405280600081525061213f565b5050565b6121d9848484611b37565b6121e58484848461265d565b61223a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612e6e6032913960400191505060405180910390fd5b50505050565b60606000821415612288576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612382565b600082905060005b600082146122b2578080600101915050600a82816122aa57fe5b049150612290565b60608167ffffffffffffffff811180156122cb57600080fd5b506040519080825280601f01601f1916602001820160405280156122fe5781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461237a57600a848161231f57fe5b0660300160f81b8282806001900393508151811061233957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161237257fe5b04935061230d565b819450505050505b919050565b6000612399836000018360001b612980565b905092915050565b600081600001805490509050919050565b505050565b60006123c9836000018360001b6129a3565b905092915050565b60006123e3836000018360001b612a8b565b905092915050565b6000612417846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b612afb565b90509392505050565b600081836000018054905011612481576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e4c6022913960400191505060405180910390fd5b82600001828154811061249057fe5b9060005260206000200154905092915050565b60006124b5836000018360001b612bd7565b905092915050565b6000808284600001805490501161251f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f7b6022913960400191505060405180910390fd5b600084600001848154811061253057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000808460010160008581526020019081526020016000205490506000811415839061261d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125e25780820151818401526020810190506125c7565b50505050905090810190601f16801561260f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061263057fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600061267e8473ffffffffffffffffffffffffffffffffffffffff16612cf0565b61268b5760019050612978565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b6126b66118e3565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561276657808201518184015260208101905061274b565b50505050905090810190601f1680156127935780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061282b5780518252602082019150602081019050602083039250612808565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461288d576040519150601f19603f3d011682016040523d82523d6000602084013e612892565b606091505b509150915081612900576000815111156128af5780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612e6e6032913960400191505060405180910390fd5b600081806020019051602081101561291757600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612a7f57600060018203905060006001866000018054905003905060008660000182815481106129ee57fe5b9060005260206000200154905080876000018481548110612a0b57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612a4357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612a85565b60009150505b92915050565b6000612a978383612d3b565b612af0578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612af5565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415612ba257846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612bd0565b82856000016001830381548110612bb557fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008083600101600084815260200190815260200160002054905060008114612ce45760006001820390506000600186600001805490500390506000866000018281548110612c2257fe5b9060005260206000209060020201905080876000018481548110612c4257fe5b9060005260206000209060020201600082015481600001556001820154816001015590505060018301876001016000836000015481526020019081526020016000208190555086600001805480612c9557fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050612cea565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612d3257506000801b8214155b92505050919050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d9f57805160ff1916838001178555612dcd565b82800160010185558215612dcd579182015b82811115612dcc578251825591602001919060010190612db1565b5b509050612dda9190612e26565b5090565b50805460018160011615610100020316600290046000825580601f10612e045750612e23565b601f016020900490600052602060002090810190612e229190612e26565b5b50565b612e4891905b80821115612e44576000816000905550600101612e2c565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220b5fde5cc375a58a519e2440e11b6a88278c2ebf4748bbba49dfc94956dca78b364736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c80634f6ccce7116100c357806395d89b411161007c57806395d89b411461090f578063a144819414610992578063a22cb465146109e0578063b88d4fde14610a30578063c87b56dd14610b35578063e985e9c514610bdc57610158565b80634f6ccce7146105e457806355f804b3146106265780636352211e146106e15780636c0360eb1461074f57806370a08231146107d25780638832e6e31461082a57610158565b806323b872dd1161011557806323b872dd146103e45780632f745c591461045257806340c10f19146104b457806342842e0e1461050257806342966c68146105705780634f558e791461059e57610158565b806301ffc9a71461015d57806306fdde03146101c2578063081812fc14610245578063095ea7b3146102b3578063162094c41461030157806318160ddd146103c6575b600080fd5b6101a86004803603602081101561017357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610c58565b604051808215151515815260200191505060405180910390f35b6101ca610cbf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020a5780820151818401526020810190506101ef565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102716004803603602081101561025b57600080fd5b8101908080359060200190929190505050610d61565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ff600480360360408110156102c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dfc565b005b6103c46004803603604081101561031757600080fd5b81019080803590602001909291908035906020019064010000000081111561033e57600080fd5b82018360208201111561035057600080fd5b8035906020019184600183028401116401000000008311171561037257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610f40565b005b6103ce610f4e565b6040518082815260200191505060405180910390f35b610450600480360360608110156103fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f5f565b005b61049e6004803603604081101561046857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fd5565b6040518082815260200191505060405180910390f35b610500600480360360408110156104ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611030565b005b61056e6004803603606081101561051857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061103e565b005b61059c6004803603602081101561058657600080fd5b810190808035906020019092919050505061105e565b005b6105ca600480360360208110156105b457600080fd5b810190808035906020019092919050505061106a565b604051808215151515815260200191505060405180910390f35b610610600480360360208110156105fa57600080fd5b810190808035906020019092919050505061107c565b6040518082815260200191505060405180910390f35b6106df6004803603602081101561063c57600080fd5b810190808035906020019064010000000081111561065957600080fd5b82018360208201111561066b57600080fd5b8035906020019184600183028401116401000000008311171561068d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061109f565b005b61070d600480360360208110156106f757600080fd5b81019080803590602001909291905050506110ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107576110e2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079757808201518184015260208101905061077c565b50505050905090810190601f1680156107c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610814600480360360208110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611184565b6040518082815260200191505060405180910390f35b61090d6004803603606081101561084057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561088757600080fd5b82018360208201111561089957600080fd5b803590602001918460018302840111640100000000831117156108bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611259565b005b610917611269565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095757808201518184015260208101905061093c565b50505050905090810190601f1680156109845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109de600480360360408110156109a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130b565b005b610a2e600480360360408110156109f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611319565b005b610b3360048036036080811015610a4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610aad57600080fd5b820183602082011115610abf57600080fd5b80359060200191846001830284011164010000000083111715610ae157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114d1565b005b610b6160048036036020811015610b4b57600080fd5b8101908080359060200190929190505050611549565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba1578082015181840152602081019050610b86565b50505050905090810190601f168015610bce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c3e60048036036040811015610bf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611832565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b5050505050905090565b6000610d6c826118c6565b610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612f9d602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e07826110ab565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061304d6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ead6118e3565b73ffffffffffffffffffffffffffffffffffffffff161480610edc5750610edb81610ed66118e3565b611832565b5b610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612ef06038913960400191505060405180910390fd5b610f3b83836118eb565b505050565b610f4a82826119a4565b5050565b6000610f5a6002611a2e565b905090565b610f70610f6a6118e3565b82611a43565b610fc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061306e6031913960400191505060405180910390fd5b610fd0838383611b37565b505050565b600061102882600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d7a90919063ffffffff16565b905092915050565b61103a8282611d94565b5050565b611059838383604051806020016040528060008152506114d1565b505050565b61106781611f88565b50565b6000611075826118c6565b9050919050565b6000806110938360026120c290919063ffffffff16565b50905080915050919050565b6110a8816120f1565b50565b60006110db82604051806060016040528060298152602001612f5260299139600261210b9092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561117a5780601f1061114f5761010080835404028352916020019161117a565b820191906000526020600020905b81548152906001019060200180831161115d57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f28602a913960400191505060405180910390fd5b611252600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061212a565b9050919050565b61126483838361213f565b505050565b606060078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113015780601f106112d657610100808354040283529160200191611301565b820191906000526020600020905b8154815290600101906020018083116112e457829003601f168201915b5050505050905090565b61131582826121b0565b5050565b6113216118e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b80600560006113cf6118e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661147c6118e3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6114e26114dc6118e3565b83611a43565b611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061306e6031913960400191505060405180910390fd5b611543848484846121ce565b50505050565b6060611554826118c6565b6115a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061301e602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116525780601f1061162757610100808354040283529160200191611652565b820191906000526020600020905b81548152906001019060200180831161163557829003601f168201915b50505050509050600060098054600181600116156101000203166002900490501415611681578091505061182d565b60008151111561175a5760098160405160200180838054600181600116156101000203166002900480156116ec5780601f106116ca5761010080835404028352918201916116ec565b820191906000526020600020905b8154815290600101906020018083116116d8575b505082805190602001908083835b6020831061171d57805182526020820191506020810190506020830392506116fa565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291505061182d565b600961176584612240565b60405160200180838054600181600116156101000203166002900480156117c35780601f106117a15761010080835404028352918201916117c3565b820191906000526020600020905b8154815290600101906020018083116117af575b505082805190602001908083835b602083106117f457805182526020820191506020810190506020830392506117d1565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006118dc82600261238790919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661195e836110ab565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6119ad826118c6565b611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612fc9602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190611a29929190612d5e565b505050565b6000611a3c826000016123a1565b9050919050565b6000611a4e826118c6565b611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612ec4602c913960400191505060405180910390fd5b6000611aae836110ab565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b1d57508373ffffffffffffffffffffffffffffffffffffffff16611b0584610d61565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b2e5750611b2d8185611832565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b57826110ab565b73ffffffffffffffffffffffffffffffffffffffff1614611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612ff56029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ea06024913960400191505060405180910390fd5b611c548383836123b2565b611c5f6000826118eb565b611cb081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123b790919063ffffffff16565b50611d0281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123d190919063ffffffff16565b50611d19818360026123eb9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611d898360000183612420565b60001c905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611e40816118c6565b15611eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b611ebf600083836123b2565b611f1081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123d190919063ffffffff16565b50611f27818360026123eb9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611f93826110ab565b9050611fa1816000846123b2565b611fac6000836118eb565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014611ffb57600860008381526020019081526020016000206000611ffa9190612dde565b5b61204c82600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123b790919063ffffffff16565b506120618260026124a390919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000806000806120d586600001866124bd565b915091508160001c8160001c8090509350935050509250929050565b8060099080519060200190612107929190612d5e565b5050565b600061211e846000018460001b84612556565b60001c90509392505050565b60006121388260000161264c565b9050919050565b6121498383611d94565b612156600084848461265d565b6121ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612e6e6032913960400191505060405180910390fd5b505050565b6121ca82826040518060200160405280600081525061213f565b5050565b6121d9848484611b37565b6121e58484848461265d565b61223a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612e6e6032913960400191505060405180910390fd5b50505050565b60606000821415612288576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612382565b600082905060005b600082146122b2578080600101915050600a82816122aa57fe5b049150612290565b60608167ffffffffffffffff811180156122cb57600080fd5b506040519080825280601f01601f1916602001820160405280156122fe5781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461237a57600a848161231f57fe5b0660300160f81b8282806001900393508151811061233957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161237257fe5b04935061230d565b819450505050505b919050565b6000612399836000018360001b612980565b905092915050565b600081600001805490509050919050565b505050565b60006123c9836000018360001b6129a3565b905092915050565b60006123e3836000018360001b612a8b565b905092915050565b6000612417846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b612afb565b90509392505050565b600081836000018054905011612481576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e4c6022913960400191505060405180910390fd5b82600001828154811061249057fe5b9060005260206000200154905092915050565b60006124b5836000018360001b612bd7565b905092915050565b6000808284600001805490501161251f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f7b6022913960400191505060405180910390fd5b600084600001848154811061253057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000808460010160008581526020019081526020016000205490506000811415839061261d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125e25780820151818401526020810190506125c7565b50505050905090810190601f16801561260f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061263057fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600061267e8473ffffffffffffffffffffffffffffffffffffffff16612cf0565b61268b5760019050612978565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b6126b66118e3565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561276657808201518184015260208101905061274b565b50505050905090810190601f1680156127935780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061282b5780518252602082019150602081019050602083039250612808565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461288d576040519150601f19603f3d011682016040523d82523d6000602084013e612892565b606091505b509150915081612900576000815111156128af5780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612e6e6032913960400191505060405180910390fd5b600081806020019051602081101561291757600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114612a7f57600060018203905060006001866000018054905003905060008660000182815481106129ee57fe5b9060005260206000200154905080876000018481548110612a0b57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612a4357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612a85565b60009150505b92915050565b6000612a978383612d3b565b612af0578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612af5565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415612ba257846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612bd0565b82856000016001830381548110612bb557fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008083600101600084815260200190815260200160002054905060008114612ce45760006001820390506000600186600001805490500390506000866000018281548110612c2257fe5b9060005260206000209060020201905080876000018481548110612c4257fe5b9060005260206000209060020201600082015481600001556001820154816001015590505060018301876001016000836000015481526020019081526020016000208190555086600001805480612c9557fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050612cea565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612d3257506000801b8214155b92505050919050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d9f57805160ff1916838001178555612dcd565b82800160010185558215612dcd579182015b82811115612dcc578251825591602001919060010190612db1565b5b509050612dda9190612e26565b5090565b50805460018160011615610100020316600290046000825580601f10612e045750612e23565b601f016020900490600052602060002090810190612e229190612e26565b5b50565b612e4891905b80821115612e44576000816000905550600101612e2c565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220b5fde5cc375a58a519e2440e11b6a88278c2ebf4748bbba49dfc94956dca78b364736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721Pausable.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Pausable.json new file mode 100644 index 0000000..34a7a0c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721Pausable.json @@ -0,0 +1,936 @@ +{ + "fileName": "ERC721Pausable.sol", + "contractName": "ERC721Pausable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ERC721.sol\";\nimport \"../../utils/Pausable.sol\";\n\n/**\n * @dev ERC721 token with pausable token transfers, minting and burning.\n *\n * Useful for scenarios such as preventing trades until the end of an evaluation\n * period, or having an emergency switch for freezing all token transfers in the\n * event of a large bug.\n */\nabstract contract ERC721Pausable is ERC721, Pausable {\n /**\n * @dev See {ERC721-_beforeTokenTransfer}.\n *\n * Requirements:\n *\n * - the contract must not be paused.\n */\n function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {\n super._beforeTokenTransfer(from, to, tokenId);\n\n require(!paused(), \"ERC721Pausable: token transfer while paused\");\n }\n}\n", + "sourcePath": "contracts/token/ERC721/ERC721Pausable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/ERC721Pausable.sol", + "exportedSymbols": { + "ERC721Pausable": [ + 11119 + ] + }, + "id": 11120, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11084, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:95" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 11085, + "nodeType": "ImportDirective", + "scope": 11120, + "sourceUnit": 11026, + "src": "58:22:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Pausable.sol", + "file": "../../utils/Pausable.sol", + "id": 11086, + "nodeType": "ImportDirective", + "scope": 11120, + "sourceUnit": 13998, + "src": "81:34:95", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11088, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11025, + "src": "424:6:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11025", + "typeString": "contract ERC721" + } + }, + "id": 11089, + "nodeType": "InheritanceSpecifier", + "src": "424:6:95" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11090, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13997, + "src": "432:8:95", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$13997", + "typeString": "contract Pausable" + } + }, + "id": 11091, + "nodeType": "InheritanceSpecifier", + "src": "432:8:95" + } + ], + "contractDependencies": [ + 22, + 1802, + 2048, + 11025, + 11235, + 11266, + 11293, + 13997 + ], + "contractKind": "contract", + "documentation": { + "id": 11087, + "nodeType": "StructuredDocumentation", + "src": "117:270:95", + "text": " @dev ERC721 token with pausable token transfers, minting and burning.\n Useful for scenarios such as preventing trades until the end of an evaluation\n period, or having an emergency switch for freezing all token transfers in the\n event of a large bug." + }, + "fullyImplemented": false, + "id": 11119, + "linearizedBaseContracts": [ + 11119, + 13997, + 11025, + 11266, + 11293, + 11235, + 1802, + 2048, + 22 + ], + "name": "ERC721Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "baseFunctions": [ + 11024 + ], + "body": { + "id": 11117, + "nodeType": "Block", + "src": "686:138:95", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11105, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11094, + "src": "723:4:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11106, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11096, + "src": "729:2:95", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11107, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11098, + "src": "733:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11102, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "696:5:95", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$11119", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 11104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 11024, + "src": "696:26:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "696:45:95", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11109, + "nodeType": "ExpressionStatement", + "src": "696:45:95" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "760:9:95", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11111, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13943, + "src": "761:6:95", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 11112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "761:8:95", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564", + "id": 11114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "771:45:95", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_08db93f8e1c3024ee7c131cc7a109eb4e5cb2ff5f9a23b64fb5b344cedec8968", + "typeString": "literal_string \"ERC721Pausable: token transfer while paused\"" + }, + "value": "ERC721Pausable: token transfer while paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_08db93f8e1c3024ee7c131cc7a109eb4e5cb2ff5f9a23b64fb5b344cedec8968", + "typeString": "literal_string \"ERC721Pausable: token transfer while paused\"" + } + ], + "id": 11110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "752:7:95", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:65:95", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11116, + "nodeType": "ExpressionStatement", + "src": "752:65:95" + } + ] + }, + "documentation": { + "id": 11092, + "nodeType": "StructuredDocumentation", + "src": "447:135:95", + "text": " @dev See {ERC721-_beforeTokenTransfer}.\n Requirements:\n - the contract must not be paused." + }, + "id": 11118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11100, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "677:8:95" + }, + "parameters": { + "id": 11099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11094, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11118, + "src": "617:12:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "617:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11096, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11118, + "src": "631:10:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "631:7:95", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11098, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11118, + "src": "643:15:95", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "643:7:95", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:43:95" + }, + "returnParameters": { + "id": 11101, + "nodeType": "ParameterList", + "parameters": [], + "src": "686:0:95" + }, + "scope": 11119, + "src": "587:237:95", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 11120, + "src": "388:438:95" + } + ], + "src": "33:794:95" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721PausableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721PausableMock.json new file mode 100644 index 0000000..10d8703 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721PausableMock.json @@ -0,0 +1,1396 @@ +{ + "fileName": "ERC721PausableMock.sol", + "contractName": "ERC721PausableMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC721/ERC721Pausable.sol\";\n\n/**\n * @title ERC721PausableMock\n * This mock just provides a public mint, burn and exists functions for testing purposes\n */\ncontract ERC721PausableMock is ERC721Pausable {\n constructor (string memory name, string memory symbol) public ERC721(name, symbol) { }\n\n function mint(address to, uint256 tokenId) public {\n super._mint(to, tokenId);\n }\n\n function burn(uint256 tokenId) public {\n super._burn(tokenId);\n }\n\n function exists(uint256 tokenId) public view returns (bool) {\n return super._exists(tokenId);\n }\n\n function pause() external {\n _pause();\n }\n\n function unpause() external {\n _unpause();\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721PausableMock.sol", + "sourceMap": "230:548:42:-:0;;;282:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:4;357:6;751:40:11;418:10;770:20;;751:18;;;:40;;:::i;:::-;3532:4:79;3524:5;:12;;;;;;;;;;;;:::i;:::-;;3556:6;3546:7;:16;;;;;;;;;;;;:::i;:::-;;3650:40;2730:10;3669:20;;3650:18;;;:40;;:::i;:::-;3700:49;3062:10;3719:29;;3700:18;;;:49;;:::i;:::-;3759:51;3435:10;3778:31;;3759:18;;;:51;;:::i;:::-;3452:365;;933:5:97;923:7;;:15;;;;;;;;;;;;;;;;;;282:86:42;;230:548;;1482:198:11;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;230:548:42:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "230:548:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4723:90:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9383:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8717:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7597:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11094:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7292:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;721:55:42;;;:::i;:::-;;374:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12043:149:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;471:75:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;552:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8135:161:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1040:76:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4451:167:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6831:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4021:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;664:51:42;;;:::i;:::-;;4922:94:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9891:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12915:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5859:740;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10503:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;948:140:11;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;4723:90:79:-;4769:13;4801:5;4794:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:90;:::o;9383:209::-;9451:7;9478:16;9486:7;9478;:16::i;:::-;9470:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9561:15;:24;9577:7;9561:24;;;;;;;;;;;;;;;;;;;;;9554:31;;9383:209;;;:::o;8717:381::-;8797:13;8813:16;8821:7;8813;:16::i;:::-;8797:32;;8853:5;8847:11;;:2;:11;;;;8839:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8931:5;8915:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8940:37;8957:5;8964:12;:10;:12::i;:::-;8940:16;:37::i;:::-;8915:62;8907:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9070:21;9079:2;9083:7;9070:8;:21::i;:::-;8717:381;;;:::o;7597:200::-;7650:7;7769:21;:12;:19;:21::i;:::-;7762:28;;7597:200;:::o;11094:300::-;11253:41;11272:12;:10;:12::i;:::-;11286:7;11253:18;:41::i;:::-;11245:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11359:28;11369:4;11375:2;11379:7;11359:9;:28::i;:::-;11094:300;;;:::o;7292:152::-;7381:7;7407:30;7431:5;7407:13;:20;7421:5;7407:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;7400:37;;7292:152;;;;:::o;721:55:42:-;759:10;:8;:10::i;:::-;721:55::o;374:91::-;434:24;446:2;450:7;434:11;:24::i;:::-;374:91;;:::o;12043:149:79:-;12146:39;12163:4;12169:2;12173:7;12146:39;;;;;;;;;;;;:16;:39::i;:::-;12043:149;;;:::o;471:75:42:-;519:20;531:7;519:11;:20::i;:::-;471:75;:::o;552:106::-;606:4;629:22;643:7;629:13;:22::i;:::-;622:29;;552:106;;;:::o;8135:161:79:-;8202:7;8222:15;8243:22;8259:5;8243:12;:15;;:22;;;;:::i;:::-;8221:44;;;8282:7;8275:14;;;8135:161;;;:::o;1040:76:97:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;4451:167:79:-;4515:7;4541:70;4558:7;4541:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4534:77;;4451:167;;;:::o;6831:87::-;6871:13;6903:8;6896:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:87;:::o;4021:211::-;4085:7;4129:1;4112:19;;:5;:19;;;;4104:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4196:29;:13;:20;4210:5;4196:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4189:36;;4021:211;;;:::o;664:51:42:-;700:8;:6;:8::i;:::-;664:51::o;4922:94:79:-;4970:13;5002:7;4995:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:94;:::o;9891:290::-;10005:12;:10;:12::i;:::-;9993:24;;:8;:24;;;;9985:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10103:8;10058:18;:32;10077:12;:10;:12::i;:::-;10058:32;;;;;;;;;;;;;;;:42;10091:8;10058:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;10155:8;10126:48;;10141:12;:10;:12::i;:::-;10126:48;;;10165:8;10126:48;;;;;;;;;;;;;;;;;;;;;;9891:290;;:::o;12915:282::-;13046:41;13065:12;:10;:12::i;:::-;13079:7;13046:18;:41::i;:::-;13038:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13151:39;13165:4;13171:2;13175:7;13184:5;13151:13;:39::i;:::-;12915:282;;;;:::o;5859:740::-;5924:13;5957:16;5965:7;5957;:16::i;:::-;5949:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6036:23;6062:10;:19;6073:7;6062:19;;;;;;;;;;;6036:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6180:1;6160:8;6154:22;;;;;;;;;;;;;;;;:27;6150:74;;;6204:9;6197:16;;;;;6150:74;6352:1;6332:9;6326:23;:27;6322:110;;;6400:8;6410:9;6383:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6369:52;;;;;6322:110;6562:8;6572:18;:7;:16;:18::i;:::-;6545:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6531:61;;;5859:740;;;;:::o;10503:154::-;10592:4;10615:18;:25;10634:5;10615:25;;;;;;;;;;;;;;;:35;10641:8;10615:35;;;;;;;;;;;;;;;;;;;;;;;;;10608:42;;10503:154;;;;:::o;14366:117::-;14423:4;14446:30;14468:7;14446:12;:21;;:30;;;;:::i;:::-;14439:37;;14366:117;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;21390:155:79:-;21482:2;21455:15;:24;21471:7;21455:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21530:7;21526:2;21499:39;;21508:16;21516:7;21508;:16::i;:::-;21499:39;;;;;;;;;;;;21390:155;;:::o;7023:121:95:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;14844:329:79:-;14929:4;14953:16;14961:7;14953;:16::i;:::-;14945:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15028:13;15044:16;15052:7;15044;:16::i;:::-;15028:32;;15089:5;15078:16;;:7;:16;;;:51;;;;15122:7;15098:31;;:20;15110:7;15098:11;:20::i;:::-;:31;;;15078:51;:87;;;;15133:32;15150:5;15157:7;15133:16;:32::i;:::-;15078:87;15070:96;;;14844:329;;;;:::o;18356:559::-;18473:4;18453:24;;:16;18461:7;18453;:16::i;:::-;:24;;;18445:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18555:1;18541:16;;:2;:16;;;;18533:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18609:39;18630:4;18636:2;18640:7;18609:20;:39::i;:::-;18710:29;18727:1;18731:7;18710:8;:29::i;:::-;18750:35;18777:7;18750:13;:19;18764:4;18750:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;18795:30;18817:7;18795:13;:17;18809:2;18795:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;18836:29;18853:7;18862:2;18836:12;:16;;:29;;;;;:::i;:::-;;18900:7;18896:2;18881:27;;18890:4;18881:27;;;;;;;;;;;;18356:559;;;:::o;7649:135:96:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;1742:117:97:-;1460:7;;;;;;;;;;;1452:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:5:::1;1800:7;;:15;;;;;;;;;;;;;;;;;;1830:22;1839:12;:10;:12::i;:::-;1830:22;;;;;;;;;;;;;;;;;;;;;;1742:117::o:0;16903:393:79:-;16996:1;16982:16;;:2;:16;;;;16974:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:16;17062:7;17054;:16::i;:::-;17053:17;17045:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17114:45;17143:1;17147:2;17151:7;17114:20;:45::i;:::-;17170:30;17192:7;17170:13;:17;17184:2;17170:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;17211:29;17228:7;17237:2;17211:12;:16;;:29;;;;;:::i;:::-;;17281:7;17277:2;17256:33;;17273:1;17256:33;;;;;;;;;;;;16903:393;;:::o;17477:502::-;17536:13;17552:16;17560:7;17552;:16::i;:::-;17536:32;;17579:48;17600:5;17615:1;17619:7;17579:20;:48::i;:::-;17665:29;17682:1;17686:7;17665:8;:29::i;:::-;17781:1;17750:10;:19;17761:7;17750:19;;;;;;;;;;;17744:33;;;;;;;;;;;;;;;;:38;17740:95;;17805:10;:19;17816:7;17805:19;;;;;;;;;;;;17798:26;;;;:::i;:::-;17740:95;17845:36;17873:7;17845:13;:20;17859:5;17845:20;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;;17892:28;17912:7;17892:12;:19;;:28;;;;:::i;:::-;;17964:7;17960:1;17936:36;;17945:5;17936:36;;;;;;;;;;;;17477:502;;:::o;7472:224:95:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:96:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;1568:115:97:-;1269:7;;;;;;;;;;;1268:8;1260:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:4:::1;1627:7;;:14;;;;;;;;;;;;;;;;;;1656:20;1663:12;:10;:12::i;:::-;1656:20;;;;;;;;;;;;;;;;;;;;;;1568:115::o:0;13902:269:79:-;14015:28;14025:4;14031:2;14035:7;14015:9;:28::i;:::-;14061:48;14084:4;14090:2;14094:7;14103:5;14061:22;:48::i;:::-;14053:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:269;;;;:::o;202:723:100:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;6791:149:95:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;587:237:82:-;696:45;723:4;729:2;733:7;696:26;:45::i;:::-;761:8;:6;:8::i;:::-;760:9;752:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;587:237;;;:::o;6764:135:96:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:95:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:96:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;6572:140:95:-;6649:4;6672:33;6680:3;:10;;6700:3;6692:12;;6672:7;:33::i;:::-;6665:40;;6572:140;;;;:::o;4934:274::-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:96:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;20334:1050:79:-;20454:4;20479:15;:2;:13;;;:15::i;:::-;20474:58;;20517:4;20510:11;;;;20474:58;20601:12;20615:23;20642:2;:7;;20686:45;;;20745:12;:10;:12::i;:::-;20771:4;20789:7;20810:5;20650:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20642:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20600:226;;;;20841:7;20836:542;;20888:1;20868:10;:17;:21;20864:376;;;21033:10;21027:17;21093:15;21080:10;21076:2;21072:19;21065:44;20982:145;21165:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20836:542;21270:13;21297:10;21286:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21270:48;;1068:10;21350:16;;21340:26;;;:6;:26;;;;21332:35;;;;;20334:1050;;;;;;;:::o;4270:123:95:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;22101:93:79:-;;;;:::o;2183:1512:96:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:95:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;2674:1517::-;2738:4;2852:16;2871:3;:12;;:17;2884:3;2871:17;;;;;;;;;;;;2852:36;;2915:1;2903:8;:13;2899:1286;;3259:21;3294:1;3283:8;:12;3259:36;;3309:17;3351:1;3329:3;:12;;:19;;;;:23;3309:43;;3592:26;3621:3;:12;;3634:9;3621:23;;;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;3888:1;3872:13;:17;3841:3;:12;;:28;3854:9;:14;;;3841:28;;;;;;;;;;;:48;;;;3995:3;:12;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:3;:12;;:17;4101:3;4088:17;;;;;;;;;;;4081:24;;;4127:4;4120:11;;;;;;;;2899:1286;4169:5;4162:12;;;2674:1517;;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3776:127:96:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721PausableMock.sol", + "exportedSymbols": { + "ERC721PausableMock": [ + 4100 + ] + }, + "id": 4101, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4029, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:42" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Pausable.sol", + "file": "../token/ERC721/ERC721Pausable.sol", + "id": 4030, + "nodeType": "ImportDirective", + "scope": 4101, + "sourceUnit": 9346, + "src": "58:44:42", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4032, + "name": "ERC721Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9345, + "src": "261:14:42", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Pausable_$9345", + "typeString": "contract ERC721Pausable" + } + }, + "id": 4033, + "nodeType": "InheritanceSpecifier", + "src": "261:14:42" + } + ], + "contractDependencies": [ + 26, + 2190, + 2436, + 9253, + 9345, + 9461, + 9492, + 9519, + 12085 + ], + "contractKind": "contract", + "documentation": { + "id": 4031, + "nodeType": "StructuredDocumentation", + "src": "104:125:42", + "text": " @title ERC721PausableMock\n This mock just provides a public mint, burn and exists functions for testing purposes" + }, + "fullyImplemented": true, + "id": 4100, + "linearizedBaseContracts": [ + 4100, + 9345, + 12085, + 9253, + 9492, + 9519, + 9461, + 2190, + 2436, + 26 + ], + "name": "ERC721PausableMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4044, + "nodeType": "Block", + "src": "365:3:42", + "statements": [] + }, + "documentation": null, + "id": 4045, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4040, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4035, + "src": "351:4:42", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 4041, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4037, + "src": "357:6:42", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 4042, + "modifierName": { + "argumentTypes": null, + "id": 4039, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9253, + "src": "344:6:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$9253_$", + "typeString": "type(contract ERC721)" + } + }, + "nodeType": "ModifierInvocation", + "src": "344:20:42" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4035, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4045, + "src": "295:18:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4034, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "295:6:42", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4037, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4045, + "src": "315:20:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4036, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "315:6:42", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "294:42:42" + }, + "returnParameters": { + "id": 4043, + "nodeType": "ParameterList", + "parameters": [], + "src": "365:0:42" + }, + "scope": 4100, + "src": "282:86:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4059, + "nodeType": "Block", + "src": "424:41:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4055, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4047, + "src": "446:2:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4056, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4049, + "src": "450:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4052, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "434:5:42", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721PausableMock_$4100", + "typeString": "contract super ERC721PausableMock" + } + }, + "id": 4054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8971, + "src": "434:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "434:24:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4058, + "nodeType": "ExpressionStatement", + "src": "434:24:42" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 4060, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4047, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4060, + "src": "388:10:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "388:7:42", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4049, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4060, + "src": "400:15:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "400:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "387:29:42" + }, + "returnParameters": { + "id": 4051, + "nodeType": "ParameterList", + "parameters": [], + "src": "424:0:42" + }, + "scope": 4100, + "src": "374:91:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4071, + "nodeType": "Block", + "src": "509:37:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4068, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4062, + "src": "531:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4065, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "519:5:42", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721PausableMock_$4100", + "typeString": "contract super ERC721PausableMock" + } + }, + "id": 4067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 9039, + "src": "519:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "519:20:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4070, + "nodeType": "ExpressionStatement", + "src": "519:20:42" + } + ] + }, + "documentation": null, + "functionSelector": "42966c68", + "id": 4072, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4062, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4072, + "src": "485:15:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "485:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "484:17:42" + }, + "returnParameters": { + "id": 4064, + "nodeType": "ParameterList", + "parameters": [], + "src": "509:0:42" + }, + "scope": 4100, + "src": "471:75:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4084, + "nodeType": "Block", + "src": "612:46:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4081, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4074, + "src": "643:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4079, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "629:5:42", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721PausableMock_$4100", + "typeString": "contract super ERC721PausableMock" + } + }, + "id": 4080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_exists", + "nodeType": "MemberAccess", + "referencedDeclaration": 8828, + "src": "629:13:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 4082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "629:22:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4078, + "id": 4083, + "nodeType": "Return", + "src": "622:29:42" + } + ] + }, + "documentation": null, + "functionSelector": "4f558e79", + "id": 4085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exists", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4074, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4085, + "src": "568:15:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "568:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "567:17:42" + }, + "returnParameters": { + "id": 4078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4077, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4085, + "src": "606:4:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4076, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "606:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "605:6:42" + }, + "scope": 4100, + "src": "552:106:42", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4091, + "nodeType": "Block", + "src": "690:25:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4088, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12068, + "src": "700:6:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "700:8:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4090, + "nodeType": "ExpressionStatement", + "src": "700:8:42" + } + ] + }, + "documentation": null, + "functionSelector": "8456cb59", + "id": 4092, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4086, + "nodeType": "ParameterList", + "parameters": [], + "src": "678:2:42" + }, + "returnParameters": { + "id": 4087, + "nodeType": "ParameterList", + "parameters": [], + "src": "690:0:42" + }, + "scope": 4100, + "src": "664:51:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4098, + "nodeType": "Block", + "src": "749:27:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4095, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12084, + "src": "759:8:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "759:10:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4097, + "nodeType": "ExpressionStatement", + "src": "759:10:42" + } + ] + }, + "documentation": null, + "functionSelector": "3f4ba83a", + "id": 4099, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4093, + "nodeType": "ParameterList", + "parameters": [], + "src": "737:2:42" + }, + "returnParameters": { + "id": 4094, + "nodeType": "ParameterList", + "parameters": [], + "src": "749:0:42" + }, + "scope": 4100, + "src": "721:55:42", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4101, + "src": "230:548:42" + } + ], + "src": "33:746:42" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200334238038062003342833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508181620001cf6301ffc9a760e01b6200026e60201b60201c565b8160069080519060200190620001e792919062000377565b5080600790805190602001906200020092919062000377565b50620002196380ac58cd60e01b6200026e60201b60201c565b62000231635b5e139f60e01b6200026e60201b60201c565b6200024963780e9d6360e01b6200026e60201b60201c565b50506000600a60006101000a81548160ff021916908315150217905550505062000426565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156200030b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003ba57805160ff1916838001178555620003eb565b82800160010185558215620003eb579182015b82811115620003ea578251825591602001919060010190620003cd565b5b509050620003fa9190620003fe565b5090565b6200042391905b808211156200041f57600081600090555060010162000405565b5090565b90565b612f0c80620004366000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80634f558e79116100c35780638456cb591161007c5780638456cb59146106cb57806395d89b41146106d5578063a22cb46514610758578063b88d4fde146107a8578063c87b56dd146108ad578063e985e9c5146109545761014d565b80634f558e79146104d85780634f6ccce71461051e5780635c975abb146105605780636352211e146105825780636c0360eb146105f057806370a08231146106735761014d565b806323b872dd1161011557806323b872dd146103145780632f745c59146103825780633f4ba83a146103e457806340c10f19146103ee57806342842e0e1461043c57806342966c68146104aa5761014d565b806301ffc9a71461015257806306fdde03146101b7578063081812fc1461023a578063095ea7b3146102a857806318160ddd146102f6575b600080fd5b61019d6004803603602081101561016857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506109d0565b604051808215151515815260200191505060405180910390f35b6101bf610a37565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ff5780820151818401526020810190506101e4565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102666004803603602081101561025057600080fd5b8101908080359060200190929190505050610ad9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f4600480360360408110156102be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b74565b005b6102fe610cb8565b6040518082815260200191505060405180910390f35b6103806004803603606081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc9565b005b6103ce6004803603604081101561039857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d3f565b6040518082815260200191505060405180910390f35b6103ec610d9a565b005b61043a6004803603604081101561040457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610da4565b005b6104a86004803603606081101561045257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610db2565b005b6104d6600480360360208110156104c057600080fd5b8101908080359060200190929190505050610dd2565b005b610504600480360360208110156104ee57600080fd5b8101908080359060200190929190505050610dde565b604051808215151515815260200191505060405180910390f35b61054a6004803603602081101561053457600080fd5b8101908080359060200190929190505050610df0565b6040518082815260200191505060405180910390f35b610568610e13565b604051808215151515815260200191505060405180910390f35b6105ae6004803603602081101561059857600080fd5b8101908080359060200190929190505050610e2a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f8610e61565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561063857808201518184015260208101905061061d565b50505050905090810190601f1680156106655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106b56004803603602081101561068957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f03565b6040518082815260200191505060405180910390f35b6106d3610fd8565b005b6106dd610fe2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561071d578082015181840152602081019050610702565b50505050905090810190601f16801561074a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107a66004803603604081101561076e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611084565b005b6108ab600480360360808110156107be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561082557600080fd5b82018360208201111561083757600080fd5b8035906020019184600183028401116401000000008311171561085957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061123c565b005b6108d9600480360360208110156108c357600080fd5b81019080803590602001909291905050506112b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109195780820151818401526020810190506108fe565b50505050905090810190601f1680156109465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109b66004803603604081101561096a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061159d565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b5050505050905090565b6000610ae482611631565b610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612e01602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b7f82610e2a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e856021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c2561164e565b73ffffffffffffffffffffffffffffffffffffffff161480610c545750610c5381610c4e61164e565b61159d565b5b610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612d546038913960400191505060405180910390fd5b610cb38383611656565b505050565b6000610cc4600261170f565b905090565b610cda610cd461164e565b82611724565b610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612ea66031913960400191505060405180910390fd5b610d3a838383611818565b505050565b6000610d9282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611a5b90919063ffffffff16565b905092915050565b610da2611a75565b565b610dae8282611b7e565b5050565b610dcd8383836040518060200160405280600081525061123c565b505050565b610ddb81611d72565b50565b6000610de982611631565b9050919050565b600080610e07836002611eac90919063ffffffff16565b50905080915050919050565b6000600a60009054906101000a900460ff16905090565b6000610e5a82604051806060016040528060298152602001612db6602991396002611edb9092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612d8c602a913960400191505060405180910390fd5b610fd1600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611efa565b9050919050565b610fe0611f0f565b565b606060078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561107a5780601f1061104f5761010080835404028352916020019161107a565b820191906000526020600020905b81548152906001019060200180831161105d57829003601f168201915b5050505050905090565b61108c61164e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561112d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061113a61164e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111e761164e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61124d61124761164e565b83611724565b6112a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612ea66031913960400191505060405180910390fd5b6112ae84848484612019565b50505050565b60606112bf82611631565b611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612e56602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113bd5780601f10611392576101008083540402835291602001916113bd565b820191906000526020600020905b8154815290600101906020018083116113a057829003601f168201915b505050505090506000600980546001816001161561010002031660029004905014156113ec5780915050611598565b6000815111156114c55760098160405160200180838054600181600116156101000203166002900480156114575780601f10611435576101008083540402835291820191611457565b820191906000526020600020905b815481529060010190602001808311611443575b505082805190602001908083835b602083106114885780518252602082019150602081019050602083039250611465565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611598565b60096114d08461208b565b604051602001808380546001816001161561010002031660029004801561152e5780601f1061150c57610100808354040283529182019161152e565b820191906000526020600020905b81548152906001019060200180831161151a575b505082805190602001908083835b6020831061155f578051825260208201915060208101905060208303925061153c565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006116478260026121d290919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116c983610e2a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061171d826000016121ec565b9050919050565b600061172f82611631565b611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612d28602c913960400191505060405180910390fd5b600061178f83610e2a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117fe57508373ffffffffffffffffffffffffffffffffffffffff166117e684610ad9565b73ffffffffffffffffffffffffffffffffffffffff16145b8061180f575061180e818561159d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661183882610e2a565b73ffffffffffffffffffffffffffffffffffffffff16146118a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612e2d6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561192a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612d046024913960400191505060405180910390fd5b6119358383836121fd565b611940600082611656565b61199181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061226b90919063ffffffff16565b506119e381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061228590919063ffffffff16565b506119fa8183600261229f9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611a6a83600001836122d4565b60001c905092915050565b600a60009054906101000a900460ff16611af7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b3b61164e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611c2a81611631565b15611c9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b611ca9600083836121fd565b611cfa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061228590919063ffffffff16565b50611d118183600261229f9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611d7d82610e2a565b9050611d8b816000846121fd565b611d96600083611656565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014611de557600860008381526020019081526020016000206000611de49190612c17565b5b611e3682600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061226b90919063ffffffff16565b50611e4b82600261235790919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080600080611ebf8660000186612371565b915091508160001c8160001c8090509350935050509250929050565b6000611eee846000018460001b8461240a565b60001c90509392505050565b6000611f0882600001612500565b9050919050565b600a60009054906101000a900460ff1615611f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611fd661164e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b612024848484611818565b61203084848484612511565b612085576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612cd26032913960400191505060405180910390fd5b50505050565b606060008214156120d3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121cd565b600082905060005b600082146120fd578080600101915050600a82816120f557fe5b0491506120db565b60608167ffffffffffffffff8111801561211657600080fd5b506040519080825280601f01601f1916602001820160405280156121495781602001600182028036833780820191505090505b50905060006001830390508593505b600084146121c557600a848161216a57fe5b0660300160f81b8282806001900393508151811061218457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816121bd57fe5b049350612158565b819450505050505b919050565b60006121e4836000018360001b612834565b905092915050565b600081600001805490509050919050565b612208838383612857565b612210610e13565b15612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612ca7602b913960400191505060405180910390fd5b505050565b600061227d836000018360001b61285c565b905092915050565b6000612297836000018360001b612944565b905092915050565b60006122cb846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6129b4565b90509392505050565b600081836000018054905011612335576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612c856022913960400191505060405180910390fd5b82600001828154811061234457fe5b9060005260206000200154905092915050565b6000612369836000018360001b612a90565b905092915050565b600080828460000180549050116123d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ddf6022913960400191505060405180910390fd5b60008460000184815481106123e457fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561249657808201518184015260208101905061247b565b50505050905090810190601f1680156124c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106124e457fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b60006125328473ffffffffffffffffffffffffffffffffffffffff16612ba9565b61253f576001905061282c565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b61256a61164e565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561261a5780820151818401526020810190506125ff565b50505050905090810190601f1680156126475780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106126df57805182526020820191506020810190506020830392506126bc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612741576040519150601f19603f3d011682016040523d82523d6000602084013e612746565b606091505b5091509150816127b4576000815111156127635780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612cd26032913960400191505060405180910390fd5b60008180602001905160208110156127cb57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b505050565b6000808360010160008481526020019081526020016000205490506000811461293857600060018203905060006001866000018054905003905060008660000182815481106128a757fe5b90600052602060002001549050808760000184815481106128c457fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806128fc57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061293e565b60009150505b92915050565b60006129508383612bf4565b6129a95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506129ae565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415612a5b57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612a89565b82856000016001830381548110612a6e57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008083600101600084815260200190815260200160002054905060008114612b9d5760006001820390506000600186600001805490500390506000866000018281548110612adb57fe5b9060005260206000209060020201905080876000018481548110612afb57fe5b9060005260206000209060020201600082015481600001556001820154816001015590505060018301876001016000836000015481526020019081526020016000208190555086600001805480612b4e57fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050612ba3565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612beb57506000801b8214155b92505050919050565b600080836001016000848152602001908152602001600020541415905092915050565b50805460018160011615610100020316600290046000825580601f10612c3d5750612c5c565b601f016020900490600052602060002090810190612c5b9190612c5f565b5b50565b612c8191905b80821115612c7d576000816000905550600101612c65565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c65207061757365644552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ebc32acb369960e6fbc76147704c46d46b0a2198f16c6840c9ed8142a4e494cd64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80634f558e79116100c35780638456cb591161007c5780638456cb59146106cb57806395d89b41146106d5578063a22cb46514610758578063b88d4fde146107a8578063c87b56dd146108ad578063e985e9c5146109545761014d565b80634f558e79146104d85780634f6ccce71461051e5780635c975abb146105605780636352211e146105825780636c0360eb146105f057806370a08231146106735761014d565b806323b872dd1161011557806323b872dd146103145780632f745c59146103825780633f4ba83a146103e457806340c10f19146103ee57806342842e0e1461043c57806342966c68146104aa5761014d565b806301ffc9a71461015257806306fdde03146101b7578063081812fc1461023a578063095ea7b3146102a857806318160ddd146102f6575b600080fd5b61019d6004803603602081101561016857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506109d0565b604051808215151515815260200191505060405180910390f35b6101bf610a37565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ff5780820151818401526020810190506101e4565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102666004803603602081101561025057600080fd5b8101908080359060200190929190505050610ad9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f4600480360360408110156102be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b74565b005b6102fe610cb8565b6040518082815260200191505060405180910390f35b6103806004803603606081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc9565b005b6103ce6004803603604081101561039857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d3f565b6040518082815260200191505060405180910390f35b6103ec610d9a565b005b61043a6004803603604081101561040457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610da4565b005b6104a86004803603606081101561045257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610db2565b005b6104d6600480360360208110156104c057600080fd5b8101908080359060200190929190505050610dd2565b005b610504600480360360208110156104ee57600080fd5b8101908080359060200190929190505050610dde565b604051808215151515815260200191505060405180910390f35b61054a6004803603602081101561053457600080fd5b8101908080359060200190929190505050610df0565b6040518082815260200191505060405180910390f35b610568610e13565b604051808215151515815260200191505060405180910390f35b6105ae6004803603602081101561059857600080fd5b8101908080359060200190929190505050610e2a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f8610e61565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561063857808201518184015260208101905061061d565b50505050905090810190601f1680156106655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106b56004803603602081101561068957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f03565b6040518082815260200191505060405180910390f35b6106d3610fd8565b005b6106dd610fe2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561071d578082015181840152602081019050610702565b50505050905090810190601f16801561074a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107a66004803603604081101561076e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611084565b005b6108ab600480360360808110156107be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561082557600080fd5b82018360208201111561083757600080fd5b8035906020019184600183028401116401000000008311171561085957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061123c565b005b6108d9600480360360208110156108c357600080fd5b81019080803590602001909291905050506112b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109195780820151818401526020810190506108fe565b50505050905090810190601f1680156109465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109b66004803603604081101561096a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061159d565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b5050505050905090565b6000610ae482611631565b610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612e01602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b7f82610e2a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e856021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c2561164e565b73ffffffffffffffffffffffffffffffffffffffff161480610c545750610c5381610c4e61164e565b61159d565b5b610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612d546038913960400191505060405180910390fd5b610cb38383611656565b505050565b6000610cc4600261170f565b905090565b610cda610cd461164e565b82611724565b610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612ea66031913960400191505060405180910390fd5b610d3a838383611818565b505050565b6000610d9282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611a5b90919063ffffffff16565b905092915050565b610da2611a75565b565b610dae8282611b7e565b5050565b610dcd8383836040518060200160405280600081525061123c565b505050565b610ddb81611d72565b50565b6000610de982611631565b9050919050565b600080610e07836002611eac90919063ffffffff16565b50905080915050919050565b6000600a60009054906101000a900460ff16905090565b6000610e5a82604051806060016040528060298152602001612db6602991396002611edb9092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612d8c602a913960400191505060405180910390fd5b610fd1600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611efa565b9050919050565b610fe0611f0f565b565b606060078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561107a5780601f1061104f5761010080835404028352916020019161107a565b820191906000526020600020905b81548152906001019060200180831161105d57829003601f168201915b5050505050905090565b61108c61164e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561112d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061113a61164e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111e761164e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61124d61124761164e565b83611724565b6112a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612ea66031913960400191505060405180910390fd5b6112ae84848484612019565b50505050565b60606112bf82611631565b611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612e56602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113bd5780601f10611392576101008083540402835291602001916113bd565b820191906000526020600020905b8154815290600101906020018083116113a057829003601f168201915b505050505090506000600980546001816001161561010002031660029004905014156113ec5780915050611598565b6000815111156114c55760098160405160200180838054600181600116156101000203166002900480156114575780601f10611435576101008083540402835291820191611457565b820191906000526020600020905b815481529060010190602001808311611443575b505082805190602001908083835b602083106114885780518252602082019150602081019050602083039250611465565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611598565b60096114d08461208b565b604051602001808380546001816001161561010002031660029004801561152e5780601f1061150c57610100808354040283529182019161152e565b820191906000526020600020905b81548152906001019060200180831161151a575b505082805190602001908083835b6020831061155f578051825260208201915060208101905060208303925061153c565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006116478260026121d290919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166116c983610e2a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061171d826000016121ec565b9050919050565b600061172f82611631565b611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612d28602c913960400191505060405180910390fd5b600061178f83610e2a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117fe57508373ffffffffffffffffffffffffffffffffffffffff166117e684610ad9565b73ffffffffffffffffffffffffffffffffffffffff16145b8061180f575061180e818561159d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661183882610e2a565b73ffffffffffffffffffffffffffffffffffffffff16146118a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612e2d6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561192a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612d046024913960400191505060405180910390fd5b6119358383836121fd565b611940600082611656565b61199181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061226b90919063ffffffff16565b506119e381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061228590919063ffffffff16565b506119fa8183600261229f9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611a6a83600001836122d4565b60001c905092915050565b600a60009054906101000a900460ff16611af7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b3b61164e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b611c2a81611631565b15611c9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b611ca9600083836121fd565b611cfa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061228590919063ffffffff16565b50611d118183600261229f9092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611d7d82610e2a565b9050611d8b816000846121fd565b611d96600083611656565b60006008600084815260200190815260200160002080546001816001161561010002031660029004905014611de557600860008381526020019081526020016000206000611de49190612c17565b5b611e3682600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061226b90919063ffffffff16565b50611e4b82600261235790919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080600080611ebf8660000186612371565b915091508160001c8160001c8090509350935050509250929050565b6000611eee846000018460001b8461240a565b60001c90509392505050565b6000611f0882600001612500565b9050919050565b600a60009054906101000a900460ff1615611f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611fd661164e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b612024848484611818565b61203084848484612511565b612085576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612cd26032913960400191505060405180910390fd5b50505050565b606060008214156120d3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121cd565b600082905060005b600082146120fd578080600101915050600a82816120f557fe5b0491506120db565b60608167ffffffffffffffff8111801561211657600080fd5b506040519080825280601f01601f1916602001820160405280156121495781602001600182028036833780820191505090505b50905060006001830390508593505b600084146121c557600a848161216a57fe5b0660300160f81b8282806001900393508151811061218457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816121bd57fe5b049350612158565b819450505050505b919050565b60006121e4836000018360001b612834565b905092915050565b600081600001805490509050919050565b612208838383612857565b612210610e13565b15612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612ca7602b913960400191505060405180910390fd5b505050565b600061227d836000018360001b61285c565b905092915050565b6000612297836000018360001b612944565b905092915050565b60006122cb846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6129b4565b90509392505050565b600081836000018054905011612335576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612c856022913960400191505060405180910390fd5b82600001828154811061234457fe5b9060005260206000200154905092915050565b6000612369836000018360001b612a90565b905092915050565b600080828460000180549050116123d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612ddf6022913960400191505060405180910390fd5b60008460000184815481106123e457fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561249657808201518184015260208101905061247b565b50505050905090810190601f1680156124c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106124e457fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b60006125328473ffffffffffffffffffffffffffffffffffffffff16612ba9565b61253f576001905061282c565b600060608573ffffffffffffffffffffffffffffffffffffffff1663150b7a0260e01b61256a61164e565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561261a5780820151818401526020810190506125ff565b50505050905090810190601f1680156126475780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106126df57805182526020820191506020810190506020830392506126bc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612741576040519150601f19603f3d011682016040523d82523d6000602084013e612746565b606091505b5091509150816127b4576000815111156127635780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612cd26032913960400191505060405180910390fd5b60008180602001905160208110156127cb57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b505050565b6000808360010160008481526020019081526020016000205490506000811461293857600060018203905060006001866000018054905003905060008660000182815481106128a757fe5b90600052602060002001549050808760000184815481106128c457fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806128fc57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061293e565b60009150505b92915050565b60006129508383612bf4565b6129a95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506129ae565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415612a5b57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612a89565b82856000016001830381548110612a6e57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b60008083600101600084815260200190815260200160002054905060008114612b9d5760006001820390506000600186600001805490500390506000866000018281548110612adb57fe5b9060005260206000209060020201905080876000018481548110612afb57fe5b9060005260206000209060020201600082015481600001556001820154816001015590505060018301876001016000836000015481526020019081526020016000208190555086600001805480612b4e57fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050612ba3565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612beb57506000801b8214155b92505050919050565b600080836001016000848152602001908152602001600020541415905092915050565b50805460018160011615610100020316600290046000825580601f10612c3d5750612c5c565b601f016020900490600052602060002090810190612c5b9190612c5f565b5b50565b612c8191905b80821115612c7d576000816000905550600101612c65565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c65207061757365644552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ebc32acb369960e6fbc76147704c46d46b0a2198f16c6840c9ed8142a4e494cd64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721PresetMinterPauserAutoId.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721PresetMinterPauserAutoId.json new file mode 100644 index 0000000..45d92f8 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721PresetMinterPauserAutoId.json @@ -0,0 +1,2801 @@ +{ + "fileName": "ERC721PresetMinterPauserAutoId.sol", + "contractName": "ERC721PresetMinterPauserAutoId", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../access/AccessControl.sol\";\nimport \"../GSN/Context.sol\";\nimport \"../utils/Counters.sol\";\nimport \"../token/ERC721/ERC721.sol\";\nimport \"../token/ERC721/ERC721Burnable.sol\";\nimport \"../token/ERC721/ERC721Pausable.sol\";\n\n/**\n * @dev {ERC721} token, including:\n *\n * - ability for holders to burn (destroy) their tokens\n * - a minter role that allows for token minting (creation)\n * - a pauser role that allows to stop all token transfers\n * - token ID and URI autogeneration\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter and pauser\n * roles, as well as the default admin role, which will let it grant both minter\n * and pauser roles to other accounts.\n */\ncontract ERC721PresetMinterPauserAutoId is Context, AccessControl, ERC721Burnable, ERC721Pausable {\n using Counters for Counters.Counter;\n\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n Counters.Counter private _tokenIdTracker;\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\n * account that deploys the contract.\n *\n * Token URIs will be autogenerated based on `baseURI` and their token IDs.\n * See {ERC721-tokenURI}.\n */\n constructor(string memory name, string memory symbol, string memory baseURI) public ERC721(name, symbol) {\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n _setupRole(MINTER_ROLE, _msgSender());\n _setupRole(PAUSER_ROLE, _msgSender());\n\n _setBaseURI(baseURI);\n }\n\n /**\n * @dev Creates a new token for `to`. Its token ID will be automatically\n * assigned (and available on the emitted {IERC721-Transfer} event), and the token\n * URI autogenerated based on the base URI passed at construction.\n *\n * See {ERC721-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the `MINTER_ROLE`.\n */\n function mint(address to) public virtual {\n require(hasRole(MINTER_ROLE, _msgSender()), \"ERC721PresetMinterPauserAutoId: must have minter role to mint\");\n\n // We can just use balanceOf to create the new tokenId because tokens\n // can be burned (destroyed), so we need a separate counter.\n _mint(to, _tokenIdTracker.current());\n _tokenIdTracker.increment();\n }\n\n /**\n * @dev Pauses all token transfers.\n *\n * See {ERC721Pausable} and {Pausable-_pause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function pause() public virtual {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC721PresetMinterPauserAutoId: must have pauser role to pause\");\n _pause();\n }\n\n /**\n * @dev Unpauses all token transfers.\n *\n * See {ERC721Pausable} and {Pausable-_unpause}.\n *\n * Requirements:\n *\n * - the caller must have the `PAUSER_ROLE`.\n */\n function unpause() public virtual {\n require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC721PresetMinterPauserAutoId: must have pauser role to unpause\");\n _unpause();\n }\n\n function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override(ERC721, ERC721Pausable) {\n super._beforeTokenTransfer(from, to, tokenId);\n }\n}\n", + "sourcePath": "contracts/presets/ERC721PresetMinterPauserAutoId.sol", + "sourceMap": "891:2612:75:-:0;;;1476:292;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1567:4;1573:6;751:40:10;418:10;770:20;;751:18;;;:40;;:::i;:::-;3645:4:92;3637:5;:12;;;;;;;;;;;;:::i;:::-;;3669:6;3659:7;:16;;;;;;;;;;;;:::i;:::-;;3763:40;2730:10;3782:20;;3763:18;;;:40;;:::i;:::-;3813:49;3062:10;3832:29;;3813:18;;;:49;;:::i;:::-;3872:51;3435:10;3891:31;;3872:18;;;:51;;:::i;:::-;3565:365;;933:5:110;923:7;;:15;;;;;;;;;;;;;;;;;;1591:44:75::1;1762:4:6;1602:18:75::0;::::1;1622:12;:10;;;:12;;:::i;:::-;1591:10;;;:44;;:::i;:::-;1646:37;1075:24;;;;;;;::::0;::::1;;;;;;;;;;;1670:12;:10;;;:12;;:::i;:::-;1646:10;;;:37;;:::i;:::-;1693;1143:24;;;;;;;::::0;::::1;;;;;;;;;;;1717:12;:10;;;:12;;:::i;:::-;1693:10;;;:37;;:::i;:::-;1741:20;1753:7;1741:11;;;:20;;:::i;:::-;1476:292:::0;;;891:2612;;1482:198:10;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;6578:110:6:-;6656:25;6667:4;6673:7;6656:10;;;:25;;:::i;:::-;6578:110;;:::o;14647:98:92:-;14730:8;14719;:19;;;;;;;;;;;;:::i;:::-;;14647:98;:::o;7015:184:6:-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;;;:12;;:::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;;;:41;;:::i;:::-;4950:48;;4864:141;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;;;:21;;:::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;891:2612:75:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "891:2612:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:140:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4486:90:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6651:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6161:200;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7941:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4272:112:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4634:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5938:152:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5808:205:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3128:182:75;;;:::i;:::-;;8307:149:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;445:241:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6433:161:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1040:76:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4257:167:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2143:397:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5772:87:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3989:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2744:176:75;;;:::i;:::-;;3955:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2940:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4640:94:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:49:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7369:290:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8522:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4800:740;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3245:125:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1037:62:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5091:226:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1105:62:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7725:154:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;948:140:10;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;4486:90:92:-;4532:13;4564:5;4557:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:90;:::o;7093:209::-;7161:7;7188:16;7196:7;7188;:16::i;:::-;7180:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7271:15;:24;7287:7;7271:24;;;;;;;;;;;;;;;;;;;;;7264:31;;7093:209;;;:::o;6651:381::-;6731:13;6747:16;6755:7;6747;:16::i;:::-;6731:32;;6787:5;6781:11;;:2;:11;;;;6773:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6865:5;6849:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;6874:37;6891:5;6898:12;:10;:12::i;:::-;6874:16;:37::i;:::-;6849:62;6841:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7004:21;7013:2;7017:7;7004:8;:21::i;:::-;6651:381;;;:::o;6161:200::-;6214:7;6333:21;:12;:19;:21::i;:::-;6326:28;;6161:200;:::o;7941:300::-;8100:41;8119:12;:10;:12::i;:::-;8133:7;8100:18;:41::i;:::-;8092:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:28;8216:4;8222:2;8226:7;8206:9;:28::i;:::-;7941:300;;;:::o;4272:112:6:-;4329:7;4355:6;:12;4362:4;4355:12;;;;;;;;;;;:22;;;4348:29;;4272:112;;;:::o;4634:223::-;4717:45;4725:6;:12;4732:4;4725:12;;;;;;;;;;;:22;;;4749:12;:10;:12::i;:::-;4717:7;:45::i;:::-;4709:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4825:25;4836:4;4842:7;4825:10;:25::i;:::-;4634:223;;:::o;5938:152:92:-;6027:7;6053:30;6077:5;6053:13;:20;6067:5;6053:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6046:37;;5938:152;;;;:::o;5808:205:6:-;5905:12;:10;:12::i;:::-;5894:23;;:7;:23;;;5886:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5980:26;5992:4;5998:7;5980:11;:26::i;:::-;5808:205;;:::o;3128:182:75:-;3180:34;1143:24;;;;;;;;;;;;;;;;;;;3201:12;:10;:12::i;:::-;3180:7;:34::i;:::-;3172:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3293:10;:8;:10::i;:::-;3128:182::o;8307:149:92:-;8410:39;8427:4;8433:2;8437:7;8410:39;;;;;;;;;;;;:16;:39::i;:::-;8307:149;;;:::o;445:241:93:-;561:41;580:12;:10;:12::i;:::-;594:7;561:18;:41::i;:::-;553:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;665:14;671:7;665:5;:14::i;:::-;445:241;:::o;6433:161:92:-;6500:7;6520:15;6541:22;6557:5;6541:12;:15;;:22;;;;:::i;:::-;6519:44;;;6580:7;6573:14;;;6433:161;;;:::o;1040:76:110:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;4257:167:92:-;4321:7;4347:70;4364:7;4347:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4340:77;;4257:167;;;:::o;2143:397:75:-;2202:34;1075:24;;;;;;;;;;;;;;;;;;;2223:12;:10;:12::i;:::-;2202:7;:34::i;:::-;2194:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2460:36;2466:2;2470:25;:15;:23;:25::i;:::-;2460:5;:36::i;:::-;2506:27;:15;:25;:27::i;:::-;2143:397;:::o;5772:87:92:-;5812:13;5844:8;5837:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5772:87;:::o;3989:211::-;4053:7;4097:1;4080:19;;:5;:19;;;;4072:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4164:29;:13;:20;4178:5;4164:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4157:36;;3989:211;;;:::o;2744:176:75:-;2794:34;1143:24;;;;;;;;;;;;;;;;;;;2815:12;:10;:12::i;:::-;2794:7;:34::i;:::-;2786:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2905:8;:6;:8::i;:::-;2744:176::o;3955:136:6:-;4028:7;4054:30;4078:5;4054:6;:12;4061:4;4054:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;4047:37;;3955:136;;;;:::o;2940:137::-;3009:4;3032:38;3062:7;3032:6;:12;3039:4;3032:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;3025:45;;2940:137;;;;:::o;4640:94:92:-;4688:13;4720:7;4713:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4640:94;:::o;1717:49:6:-;1762:4;1717:49;;;:::o;7369:290:92:-;7483:12;:10;:12::i;:::-;7471:24;;:8;:24;;;;7463:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:8;7536:18;:32;7555:12;:10;:12::i;:::-;7536:32;;;;;;;;;;;;;;;:42;7569:8;7536:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7633:8;7604:48;;7619:12;:10;:12::i;:::-;7604:48;;;7643:8;7604:48;;;;;;;;;;;;;;;;;;;;;;7369:290;;:::o;8522:282::-;8653:41;8672:12;:10;:12::i;:::-;8686:7;8653:18;:41::i;:::-;8645:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8758:39;8772:4;8778:2;8782:7;8791:5;8758:13;:39::i;:::-;8522:282;;;;:::o;4800:740::-;4865:13;4898:16;4906:7;4898;:16::i;:::-;4890:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4977:23;5003:10;:19;5014:7;5003:19;;;;;;;;;;;4977:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5121:1;5101:8;5095:22;;;;;;;;;;;;;;;;:27;5091:74;;;5145:9;5138:16;;;;;5091:74;5293:1;5273:9;5267:23;:27;5263:110;;;5341:8;5351:9;5324:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:52;;;;;5263:110;5503:8;5513:18;:7;:16;:18::i;:::-;5486:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5472:61;;;4800:740;;;;:::o;3245:125:6:-;3308:7;3334:29;:6;:12;3341:4;3334:12;;;;;;;;;;;:20;;:27;:29::i;:::-;3327:36;;3245:125;;;:::o;1037:62:75:-;1075:24;;;;;;;;;;;;;;;;;;;1037:62;:::o;5091:226:6:-;5175:45;5183:6;:12;5190:4;5183:12;;;;;;;;;;;:22;;;5207:12;:10;:12::i;:::-;5175:7;:45::i;:::-;5167:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:26;5296:4;5302:7;5284:11;:26::i;:::-;5091:226;;:::o;1105:62:75:-;1143:24;;;;;;;;;;;;;;;;;;;1105:62;:::o;7725:154:92:-;7814:4;7837:18;:25;7856:5;7837:25;;;;;;;;;;;;;;;:35;7863:8;7837:35;;;;;;;;;;;;;;;;;;;;;;;;;7830:42;;7725:154;;;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;:41::i;:::-;4950:48;;4864:141;;;;:::o;10237:117:92:-;10294:4;10317:30;10339:7;10317:12;:21;;:30;;;;:::i;:::-;10310:37;;10237:117;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;15893:155:92:-;15985:2;15958:15;:24;15974:7;15958:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16033:7;16029:2;16002:39;;16011:16;16019:7;16011;:16::i;:::-;16002:39;;;;;;;;;;;;15893:155;;:::o;7023:121:108:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;10512:329:92:-;10597:4;10621:16;10629:7;10621;:16::i;:::-;10613:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10696:13;10712:16;10720:7;10712;:16::i;:::-;10696:32;;10757:5;10746:16;;:7;:16;;;:51;;;;10790:7;10766:31;;:20;10778:7;10766:11;:20::i;:::-;:31;;;10746:51;:87;;;;10801:32;10818:5;10825:7;10801:16;:32::i;:::-;10746:87;10738:96;;;10512:329;;;;:::o;13506:559::-;13623:4;13603:24;;:16;13611:7;13603;:16::i;:::-;:24;;;13595:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13705:1;13691:16;;:2;:16;;;;13683:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13759:39;13780:4;13786:2;13790:7;13759:20;:39::i;:::-;13860:29;13877:1;13881:7;13860:8;:29::i;:::-;13900:35;13927:7;13900:13;:19;13914:4;13900:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;13945:30;13967:7;13945:13;:17;13959:2;13945:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;13986:29;14003:7;14012:2;13986:12;:16;;:29;;;;;:::i;:::-;;14050:7;14046:2;14031:27;;14040:4;14031:27;;;;;;;;;;;;13506:559;;;:::o;7015:184:6:-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;:12::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;7649:135:109:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7205:188:6:-;7279:36;7307:7;7279:6;:12;7286:4;7279:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;7275:112;;;7363:12;:10;:12::i;:::-;7336:40;;7354:7;7336:40;;7348:4;7336:40;;;;;;;;;;7275:112;7205:188;;:::o;2042:117:110:-;1610:7;;;;;;;;;;;1602:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2110:5:::1;2100:7;;:15;;;;;;;;;;;;;;;;;;2130:22;2139:12;:10;:12::i;:::-;2130:22;;;;;;;;;;;;;;;;;;;;;;2042:117::o:0;12680:502:92:-;12739:13;12755:16;12763:7;12755;:16::i;:::-;12739:32;;12782:48;12803:5;12818:1;12822:7;12782:20;:48::i;:::-;12868:29;12885:1;12889:7;12868:8;:29::i;:::-;12984:1;12953:10;:19;12964:7;12953:19;;;;;;;;;;;12947:33;;;;;;;;;;;;;;;;:38;12943:95;;13008:10;:19;13019:7;13008:19;;;;;;;;;;;;13001:26;;;;:::i;:::-;12943:95;13048:36;13076:7;13048:13;:20;13062:5;13048:20;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;;13095:28;13115:7;13095:12;:19;;:28;;;;:::i;:::-;;13167:7;13163:1;13139:36;;13148:5;13139:36;;;;;;;;;;;;12680:502;;:::o;7472:224:108:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;1098:112:106:-;1163:7;1189;:14;;;1182:21;;1098:112;;;:::o;12070:393:92:-;12163:1;12149:16;;:2;:16;;;;12141:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12221:16;12229:7;12221;:16::i;:::-;12220:17;12212:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12281:45;12310:1;12314:2;12318:7;12281:20;:45::i;:::-;12337:30;12359:7;12337:13;:17;12351:2;12337:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;12378:29;12395:7;12404:2;12378:12;:16;;:29;;;;;:::i;:::-;;12448:7;12444:2;12423:33;;12440:1;12423:33;;;;;;;;;;;;12070:393;;:::o;1216:178:106:-;1386:1;1368:7;:14;;;:19;;;;;;;;;;;1216:178;:::o;7205:112:109:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;1795:115:110:-;1346:7;;;;;;;;;;;1345:8;1337:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:4:::1;1854:7;;:14;;;;;;;;;;;;;;;;;;1883:20;1890:12;:10;:12::i;:::-;1883:20;;;;;;;;;;;;;;;;;;;;;;1795:115::o:0;6085:147:109:-;6159:7;6201:22;6205:3;:10;;6217:5;6201:3;:22::i;:::-;6193:31;;6178:47;;6085:147;;;;:::o;5401:156::-;5481:4;5504:46;5514:3;:10;;5542:5;5534:14;;5526:23;;5504:9;:46::i;:::-;5497:53;;5401:156;;;;:::o;9665:269:92:-;9778:28;9788:4;9794:2;9798:7;9778:9;:28::i;:::-;9824:48;9847:4;9853:2;9857:7;9866:5;9824:22;:48::i;:::-;9816:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9665:269;;;;:::o;202:723:113:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;5638:115:109:-;5701:7;5727:19;5735:3;:10;;5727:7;:19::i;:::-;5720:26;;5638:115;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;6791:149:108:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;3316:185:75:-;3449:45;3476:4;3482:2;3486:7;3449:26;:45::i;:::-;3316:185;;;:::o;6764:135:109:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:108:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:109:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;5173:147::-;5246:4;5269:44;5277:3;:10;;5305:5;5297:14;;5289:23;;5269:7;:44::i;:::-;5262:51;;5173:147;;;;:::o;6572:140:108:-;6649:4;6672:33;6680:3;:10;;6700:3;6692:12;;6672:7;:33::i;:::-;6665:40;;6572:140;;;;:::o;4934:274::-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:109:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;15298:589:92:-;15418:4;15443:15;:2;:13;;;:15::i;:::-;15438:58;;15481:4;15474:11;;;;15438:58;15505:23;15531:246;15583:45;;;15642:12;:10;:12::i;:::-;15668:4;15686:7;15707:5;15547:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15531:246;;;;;;;;;;;;;;;;;:2;:15;;;;:246;;;;;:::i;:::-;15505:272;;15787:13;15814:10;15803:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15787:48;;1068:10;15863:16;;15853:26;;;:6;:26;;;;15845:35;;;;15298:589;;;;;;;:::o;4270:123:108:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;587:237:95:-;696:45;723:4;729:2;733:7;696:26;:45::i;:::-;761:8;:6;:8::i;:::-;760:9;752:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;587:237;;;:::o;2183:1512:109:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1828:678:108:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;2674:1517::-;2738:4;2852:16;2871:3;:12;;:17;2884:3;2871:17;;;;;;;;;;;;2852:36;;2915:1;2903:8;:13;2899:1286;;3259:21;3294:1;3283:8;:12;3259:36;;3309:17;3351:1;3329:3;:12;;:19;;;;:23;3309:43;;3592:26;3621:3;:12;;3634:9;3621:23;;;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;3888:1;3872:13;:17;3841:3;:12;;:28;3854:9;:14;;;3841:28;;;;;;;;;;;:48;;;;3995:3;:12;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:3;:12;;:17;4101:3;4088:17;;;;;;;;;;;4081:24;;;4127:4;4120:11;;;;;;;;2899:1286;4169:5;4162:12;;;2674:1517;;;;;:::o;718:610:104:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3770:194::-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;16644:93:92:-;;;;:::o;5117:958:104:-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:958;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "baseURI", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/presets/ERC721PresetMinterPauserAutoId.sol", + "exportedSymbols": { + "ERC721PresetMinterPauserAutoId": [ + 7292 + ] + }, + "id": 7293, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7141, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:75" + }, + { + "absolutePath": "contracts/access/AccessControl.sol", + "file": "../access/AccessControl.sol", + "id": 7142, + "nodeType": "ImportDirective", + "scope": 7293, + "sourceUnit": 1468, + "src": "58:37:75", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 7143, + "nodeType": "ImportDirective", + "scope": 7293, + "sourceUnit": 23, + "src": "96:28:75", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Counters.sol", + "file": "../utils/Counters.sol", + "id": 7144, + "nodeType": "ImportDirective", + "scope": 7293, + "sourceUnit": 12950, + "src": "125:31:75", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721.sol", + "file": "../token/ERC721/ERC721.sol", + "id": 7145, + "nodeType": "ImportDirective", + "scope": 7293, + "sourceUnit": 11026, + "src": "157:36:75", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Burnable.sol", + "file": "../token/ERC721/ERC721Burnable.sol", + "id": 7146, + "nodeType": "ImportDirective", + "scope": 7293, + "sourceUnit": 11056, + "src": "194:44:75", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/ERC721Pausable.sol", + "file": "../token/ERC721/ERC721Pausable.sol", + "id": 7147, + "nodeType": "ImportDirective", + "scope": 7293, + "sourceUnit": 11120, + "src": "239:44:75", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7149, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "934:7:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 7150, + "nodeType": "InheritanceSpecifier", + "src": "934:7:75" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7151, + "name": "AccessControl", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1467, + "src": "943:13:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AccessControl_$1467", + "typeString": "contract AccessControl" + } + }, + "id": 7152, + "nodeType": "InheritanceSpecifier", + "src": "943:13:75" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7153, + "name": "ERC721Burnable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11055, + "src": "958:14:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Burnable_$11055", + "typeString": "contract ERC721Burnable" + } + }, + "id": 7154, + "nodeType": "InheritanceSpecifier", + "src": "958:14:75" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7155, + "name": "ERC721Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11119, + "src": "974:14:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Pausable_$11119", + "typeString": "contract ERC721Pausable" + } + }, + "id": 7156, + "nodeType": "InheritanceSpecifier", + "src": "974:14:75" + } + ], + "contractDependencies": [ + 22, + 1467, + 1802, + 2048, + 11025, + 11055, + 11119, + 11235, + 11266, + 11293, + 13997 + ], + "contractKind": "contract", + "documentation": { + "id": 7148, + "nodeType": "StructuredDocumentation", + "src": "285:605:75", + "text": " @dev {ERC721} token, including:\n - ability for holders to burn (destroy) their tokens\n - a minter role that allows for token minting (creation)\n - a pauser role that allows to stop all token transfers\n - token ID and URI autogeneration\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the minter and pauser\n roles, as well as the default admin role, which will let it grant both minter\n and pauser roles to other accounts." + }, + "fullyImplemented": true, + "id": 7292, + "linearizedBaseContracts": [ + 7292, + 11119, + 13997, + 11055, + 11025, + 11266, + 11293, + 11235, + 1802, + 2048, + 1467, + 22 + ], + "name": "ERC721PresetMinterPauserAutoId", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 7159, + "libraryName": { + "contractScope": null, + "id": 7157, + "name": "Counters", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12949, + "src": "1001:8:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Counters_$12949", + "typeString": "library Counters" + } + }, + "nodeType": "UsingForDirective", + "src": "995:36:75", + "typeName": { + "contractScope": null, + "id": 7158, + "name": "Counters.Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "1014:16:75", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + } + }, + { + "constant": true, + "functionSelector": "d5391393", + "id": 7164, + "mutability": "constant", + "name": "MINTER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7292, + "src": "1037:62:75", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7160, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1037:7:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4d494e5445525f524f4c45", + "id": 7162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1085:13:75", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + }, + "value": "MINTER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", + "typeString": "literal_string \"MINTER_ROLE\"" + } + ], + "id": 7161, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1075:9:75", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1075:24:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "e63ab1e9", + "id": 7169, + "mutability": "constant", + "name": "PAUSER_ROLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7292, + "src": "1105:62:75", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7165, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1105:7:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "5041555345525f524f4c45", + "id": 7167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1153:13:75", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 7166, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1143:9:75", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1143:24:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 7171, + "mutability": "mutable", + "name": "_tokenIdTracker", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7292, + "src": "1174:40:75", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter" + }, + "typeName": { + "contractScope": null, + "id": 7170, + "name": "Counters.Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12909, + "src": "1174:16:75", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage_ptr", + "typeString": "struct Counters.Counter" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 7207, + "nodeType": "Block", + "src": "1581:187:75", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7186, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1210, + "src": "1602:18:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7187, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1622:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1622:12:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7185, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1591:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1591:44:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7190, + "nodeType": "ExpressionStatement", + "src": "1591:44:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7192, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7164, + "src": "1657:11:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7193, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1670:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1670:12:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7191, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1646:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1646:37:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7196, + "nodeType": "ExpressionStatement", + "src": "1646:37:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7198, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7169, + "src": "1704:11:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7199, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1717:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1717:12:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7197, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1693:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 7201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1693:37:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7202, + "nodeType": "ExpressionStatement", + "src": "1693:37:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7204, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7178, + "src": "1753:7:75", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 7203, + "name": "_setBaseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10933, + "src": "1741:11:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 7205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1741:20:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7206, + "nodeType": "ExpressionStatement", + "src": "1741:20:75" + } + ] + }, + "documentation": { + "id": 7172, + "nodeType": "StructuredDocumentation", + "src": "1221:250:75", + "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the\n account that deploys the contract.\n Token URIs will be autogenerated based on `baseURI` and their token IDs.\n See {ERC721-tokenURI}." + }, + "id": 7208, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7181, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7174, + "src": "1567:4:75", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 7182, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7176, + "src": "1573:6:75", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 7183, + "modifierName": { + "argumentTypes": null, + "id": 7180, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11025, + "src": "1560:6:75", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$11025_$", + "typeString": "type(contract ERC721)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1560:20:75" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7174, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7208, + "src": "1488:18:75", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7173, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1488:6:75", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7176, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7208, + "src": "1508:20:75", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7175, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1508:6:75", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7178, + "mutability": "mutable", + "name": "baseURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7208, + "src": "1530:21:75", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7177, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1530:6:75", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1487:65:75" + }, + "returnParameters": { + "id": 7184, + "nodeType": "ParameterList", + "parameters": [], + "src": "1581:0:75" + }, + "scope": 7292, + "src": "1476:292:75", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7235, + "nodeType": "Block", + "src": "2184:356:75", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7216, + "name": "MINTER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7164, + "src": "2210:11:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7217, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2223:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2223:12:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7215, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2202:7:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2202:34:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732315072657365744d696e7465725061757365724175746f49643a206d7573742068617665206d696e74657220726f6c6520746f206d696e74", + "id": 7220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2238:63:75", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ea198f3e8a5129d820e5e0bb8ade0f42a56b75e06362ce80ffa86409143aedbb", + "typeString": "literal_string \"ERC721PresetMinterPauserAutoId: must have minter role to mint\"" + }, + "value": "ERC721PresetMinterPauserAutoId: must have minter role to mint" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ea198f3e8a5129d820e5e0bb8ade0f42a56b75e06362ce80ffa86409143aedbb", + "typeString": "literal_string \"ERC721PresetMinterPauserAutoId: must have minter role to mint\"" + } + ], + "id": 7214, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2194:7:75", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2194:108:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7222, + "nodeType": "ExpressionStatement", + "src": "2194:108:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7224, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7211, + "src": "2466:2:75", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 7225, + "name": "_tokenIdTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "2470:15:75", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 7226, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 12920, + "src": "2470:23:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$12909_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$12909_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" + } + }, + "id": 7227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2470:25:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7223, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10761, + "src": "2460:5:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 7228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2460:36:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7229, + "nodeType": "ExpressionStatement", + "src": "2460:36:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 7230, + "name": "_tokenIdTracker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "2506:15:75", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$12909_storage", + "typeString": "struct Counters.Counter storage ref" + } + }, + "id": 7232, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "increment", + "nodeType": "MemberAccess", + "referencedDeclaration": 12932, + "src": "2506:25:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$12909_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$12909_storage_ptr_$", + "typeString": "function (struct Counters.Counter storage pointer)" + } + }, + "id": 7233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2506:27:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7234, + "nodeType": "ExpressionStatement", + "src": "2506:27:75" + } + ] + }, + "documentation": { + "id": 7209, + "nodeType": "StructuredDocumentation", + "src": "1774:364:75", + "text": " @dev Creates a new token for `to`. Its token ID will be automatically\n assigned (and available on the emitted {IERC721-Transfer} event), and the token\n URI autogenerated based on the base URI passed at construction.\n See {ERC721-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`." + }, + "functionSelector": "6a627842", + "id": 7236, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7211, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7236, + "src": "2157:10:75", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7210, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2157:7:75", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2156:12:75" + }, + "returnParameters": { + "id": 7213, + "nodeType": "ParameterList", + "parameters": [], + "src": "2184:0:75" + }, + "scope": 7292, + "src": "2143:397:75", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7252, + "nodeType": "Block", + "src": "2776:144:75", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7242, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7169, + "src": "2802:11:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7243, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2815:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2815:12:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7241, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "2794:7:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2794:34:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732315072657365744d696e7465725061757365724175746f49643a206d75737420686176652070617573657220726f6c6520746f207061757365", + "id": 7246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2830:64:75", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_40c9c95e9f416c51c55d88e1508883bb887c746928503de15b750cf10a750aef", + "typeString": "literal_string \"ERC721PresetMinterPauserAutoId: must have pauser role to pause\"" + }, + "value": "ERC721PresetMinterPauserAutoId: must have pauser role to pause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_40c9c95e9f416c51c55d88e1508883bb887c746928503de15b750cf10a750aef", + "typeString": "literal_string \"ERC721PresetMinterPauserAutoId: must have pauser role to pause\"" + } + ], + "id": 7240, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2786:7:75", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2786:109:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7248, + "nodeType": "ExpressionStatement", + "src": "2786:109:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7249, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13980, + "src": "2905:6:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2905:8:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7251, + "nodeType": "ExpressionStatement", + "src": "2905:8:75" + } + ] + }, + "documentation": { + "id": 7237, + "nodeType": "StructuredDocumentation", + "src": "2546:193:75", + "text": " @dev Pauses all token transfers.\n See {ERC721Pausable} and {Pausable-_pause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "8456cb59", + "id": 7253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7238, + "nodeType": "ParameterList", + "parameters": [], + "src": "2758:2:75" + }, + "returnParameters": { + "id": 7239, + "nodeType": "ParameterList", + "parameters": [], + "src": "2776:0:75" + }, + "scope": 7292, + "src": "2744:176:75", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7269, + "nodeType": "Block", + "src": "3162:148:75", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7259, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7169, + "src": "3188:11:75", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7260, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "3201:10:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 7261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3201:12:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7258, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1256, + "src": "3180:7:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 7262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3180:34:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732315072657365744d696e7465725061757365724175746f49643a206d75737420686176652070617573657220726f6c6520746f20756e7061757365", + "id": 7263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3216:66:75", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f3877585dfb2235e1900eee5d9e32a457b9d6148f93823a62cb07ae76c6585a8", + "typeString": "literal_string \"ERC721PresetMinterPauserAutoId: must have pauser role to unpause\"" + }, + "value": "ERC721PresetMinterPauserAutoId: must have pauser role to unpause" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f3877585dfb2235e1900eee5d9e32a457b9d6148f93823a62cb07ae76c6585a8", + "typeString": "literal_string \"ERC721PresetMinterPauserAutoId: must have pauser role to unpause\"" + } + ], + "id": 7257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3172:7:75", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 7264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3172:111:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7265, + "nodeType": "ExpressionStatement", + "src": "3172:111:75" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7266, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13996, + "src": "3293:8:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 7267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3293:10:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7268, + "nodeType": "ExpressionStatement", + "src": "3293:10:75" + } + ] + }, + "documentation": { + "id": 7254, + "nodeType": "StructuredDocumentation", + "src": "2926:197:75", + "text": " @dev Unpauses all token transfers.\n See {ERC721Pausable} and {Pausable-_unpause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`." + }, + "functionSelector": "3f4ba83a", + "id": 7270, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 7255, + "nodeType": "ParameterList", + "parameters": [], + "src": "3144:2:75" + }, + "returnParameters": { + "id": 7256, + "nodeType": "ParameterList", + "parameters": [], + "src": "3162:0:75" + }, + "scope": 7292, + "src": "3128:182:75", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 11024, + 11118 + ], + "body": { + "id": 7290, + "nodeType": "Block", + "src": "3439:62:75", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7285, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7272, + "src": "3476:4:75", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7286, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7274, + "src": "3482:2:75", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 7287, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7276, + "src": "3486:7:75", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 7282, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3449:5:75", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721PresetMinterPauserAutoId_$7292", + "typeString": "contract super ERC721PresetMinterPauserAutoId" + } + }, + "id": 7284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_beforeTokenTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 11118, + "src": "3449:26:75", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 7288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3449:45:75", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7289, + "nodeType": "ExpressionStatement", + "src": "3449:45:75" + } + ] + }, + "documentation": null, + "id": 7291, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7280, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 7278, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11025, + "src": "3415:6:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$11025", + "typeString": "contract ERC721" + } + }, + { + "contractScope": null, + "id": 7279, + "name": "ERC721Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11119, + "src": "3423:14:75", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Pausable_$11119", + "typeString": "contract ERC721Pausable" + } + } + ], + "src": "3406:32:75" + }, + "parameters": { + "id": 7277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7272, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7291, + "src": "3346:12:75", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3346:7:75", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7274, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7291, + "src": "3360:10:75", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7273, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3360:7:75", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7276, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 7291, + "src": "3372:15:75", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7275, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3372:7:75", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3345:43:75" + }, + "returnParameters": { + "id": 7281, + "nodeType": "ParameterList", + "parameters": [], + "src": "3439:0:75" + }, + "scope": 7292, + "src": "3316:185:75", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 7293, + "src": "891:2612:75" + } + ], + "src": "33:3471:75" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200436138038062004361833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001d257600080fd5b83820191506020820185811115620001e957600080fd5b82518660018202830111640100000000821117156200020757600080fd5b8083526020830192505050908051906020019080838360005b838110156200023d57808201518184015260208101905062000220565b50505050905090810190601f1680156200026b5780820380516001836020036101000a031916815260200191505b5060405250505082826200028c6301ffc9a760e01b6200040d60201b60201c565b8160079080519060200190620002a4929190620006c8565b508060089080519060200190620002bd929190620006c8565b50620002d66380ac58cd60e01b6200040d60201b60201c565b620002ee635b5e139f60e01b6200040d60201b60201c565b6200030663780e9d6360e01b6200040d60201b60201c565b50506000600b60006101000a81548160ff021916908315150217905550620003476000801b6200033b6200051660201b60201c565b6200051e60201b60201c565b6200039d60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620003916200051660201b60201c565b6200051e60201b60201c565b620003f360405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620003e76200051660201b60201c565b6200051e60201b60201c565b62000404816200053460201b60201c565b50505062000777565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620004aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b6200053082826200055060201b60201c565b5050565b80600a90805190602001906200054c929190620006c8565b5050565b6200057e81600080858152602001908152602001600020600001620005f360201b62001e2d1790919060201c565b15620005ef57620005946200051660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000623836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200062b60201b60201c565b905092915050565b60006200063f8383620006a560201b60201c565b6200069a5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200069f565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200070b57805160ff19168380011785556200073c565b828001600101855582156200073c579182015b828111156200073b5782518255916020019190600101906200071e565b5b5090506200074b91906200074f565b5090565b6200077491905b808211156200077057600081600090555060010162000756565b5090565b90565b613bda80620007876000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636a6278421161010f578063a22cb465116100a2578063d539139311610071578063d539139314610bc3578063d547741f14610be1578063e63ab1e914610c2f578063e985e9c514610c4d576101f0565b8063a22cb46514610985578063b88d4fde146109d5578063c87b56dd14610ada578063ca15c87314610b81576101f0565b80639010d07c116100de5780639010d07c1461080657806391d148541461087e57806395d89b41146108e4578063a217fddf14610967576101f0565b80636a627842146106dd5780636c0360eb1461072157806370a08231146107a45780638456cb59146107fc576101f0565b80632f745c591161018757806342966c681161015657806342966c68146105dd5780634f6ccce71461060b5780635c975abb1461064d5780636352211e1461066f576101f0565b80632f745c59146104b557806336568abe146105175780633f4ba83a1461056557806342842e0e1461056f576101f0565b806318160ddd116101c357806318160ddd1461039957806323b872dd146103b7578063248a9ca3146104255780632f2ff15d14610467576101f0565b806301ffc9a7146101f557806306fdde031461025a578063081812fc146102dd578063095ea7b31461034b575b600080fd5b6102406004803603602081101561020b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610cc9565b604051808215151515815260200191505060405180910390f35b610262610d31565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a2578082015181840152602081019050610287565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610309600480360360208110156102f357600080fd5b8101908080359060200190929190505050610dd3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103976004803603604081101561036157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e6e565b005b6103a1610fb2565b6040518082815260200191505060405180910390f35b610423600480360360608110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc3565b005b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104b36004803603604081101561047d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b005b610501600480360360408110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e1565b6040518082815260200191505060405180910390f35b6105636004803603604081101561052d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061113c565b005b61056d6111d5565b005b6105db6004803603606081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061127a565b005b610609600480360360208110156105f357600080fd5b810190808035906020019092919050505061129a565b005b6106376004803603602081101561062157600080fd5b810190808035906020019092919050505061130c565b6040518082815260200191505060405180910390f35b61065561132f565b604051808215151515815260200191505060405180910390f35b61069b6004803603602081101561068557600080fd5b8101908080359060200190929190505050611346565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61071f600480360360208110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061137d565b005b610729611438565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076957808201518184015260208101905061074e565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107e6600480360360208110156107ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114da565b6040518082815260200191505060405180910390f35b6108046115af565b005b61083c6004803603604081101561081c57600080fd5b810190808035906020019092919080359060200190929190505050611654565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108ca6004803603604081101561089457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611685565b604051808215151515815260200191505060405180910390f35b6108ec6116b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092c578082015181840152602081019050610911565b50505050905090810190601f1680156109595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61096f611758565b6040518082815260200191505060405180910390f35b6109d36004803603604081101561099b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061175f565b005b610ad8600480360360808110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a5257600080fd5b820183602082011115610a6457600080fd5b80359060200191846001830284011164010000000083111715610a8657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611917565b005b610b0660048036036020811015610af057600080fd5b810190808035906020019092919050505061198f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b46578082015181840152602081019050610b2b565b50505050905090810190601f168015610b735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bad60048036036020811015610b9757600080fd5b8101908080359060200190929190505050611c78565b6040518082815260200191505060405180910390f35b610bcb611c9e565b6040518082815260200191505060405180910390f35b610c2d60048036036040811015610bf757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd7565b005b610c37611d60565b6040518082815260200191505060405180910390f35b610caf60048036036040811015610c6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d99565b604051808215151515815260200191505060405180910390f35b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b5050505050905090565b6000610dde82611e5d565b610e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806139f3602c913960400191505060405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e7982611346565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a776021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f1f611e7a565b73ffffffffffffffffffffffffffffffffffffffff161480610f4e5750610f4d81610f48611e7a565b611d99565b5b610fa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806139466038913960400191505060405180910390fd5b610fad8383611e82565b505050565b6000610fbe6003611f3b565b905090565b610fd4610fce611e7a565b82611f50565b611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a986031913960400191505060405180910390fd5b611034838383612044565b505050565b6000806000838152602001908152602001600020600201549050919050565b61107e60008084815260200190815260200160002060020154611079611e7a565b611685565b6110d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613827602f913960400191505060405180910390fd5b6110dd8282612287565b5050565b600061113482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061231a90919063ffffffff16565b905092915050565b611144611e7a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613b76602f913960400191505060405180910390fd5b6111d18282612334565b5050565b61121b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611216611e7a565b611685565b611270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526040815260200180613b366040913960400191505060405180910390fd5b6112786123c7565b565b61129583838360405180602001604052806000815250611917565b505050565b6112ab6112a5611e7a565b82611f50565b611300576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613b066030913960400191505060405180910390fd5b611309816124d0565b50565b60008061132383600361260a90919063ffffffff16565b50905080915050919050565b6000600b60009054906101000a900460ff16905090565b6000611376826040518060600160405280602981526020016139a86029913960036126399092919063ffffffff16565b9050919050565b6113c360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206113be611e7a565b611685565b611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180613ac9603d913960400191505060405180910390fd5b61142b81611426600c612658565b612666565b611435600c61285a565b50565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114d05780601f106114a5576101008083540402835291602001916114d0565b820191906000526020600020905b8154815290600101906020018083116114b357829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061397e602a913960400191505060405180910390fd5b6115a8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612870565b9050919050565b6115f560405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206115f0611e7a565b611685565b61164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180613888603e913960400191505060405180910390fd5b611652612885565b565b600061167d8260008086815260200190815260200160002060000161298f90919063ffffffff16565b905092915050565b60006116ae826000808681526020019081526020016000206000016129a990919063ffffffff16565b905092915050565b606060088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561174e5780601f106117235761010080835404028352916020019161174e565b820191906000526020600020905b81548152906001019060200180831161173157829003601f168201915b5050505050905090565b6000801b81565b611767611e7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060066000611815611e7a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118c2611e7a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611928611922611e7a565b83611f50565b61197d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a986031913960400191505060405180910390fd5b611989848484846129d9565b50505050565b606061199a82611e5d565b6119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613a48602f913960400191505060405180910390fd5b6060600960008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a985780601f10611a6d57610100808354040283529160200191611a98565b820191906000526020600020905b815481529060010190602001808311611a7b57829003601f168201915b505050505090506000600a8054600181600116156101000203166002900490501415611ac75780915050611c73565b600081511115611ba057600a816040516020018083805460018160011615610100020316600290048015611b325780601f10611b10576101008083540402835291820191611b32565b820191906000526020600020905b815481529060010190602001808311611b1e575b505082805190602001908083835b60208310611b635780518252602082019150602081019050602083039250611b40565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611c73565b600a611bab84612a4b565b6040516020018083805460018160011615610100020316600290048015611c095780601f10611be7576101008083540402835291820191611c09565b820191906000526020600020905b815481529060010190602001808311611bf5575b505082805190602001908083835b60208310611c3a5780518252602082019150602081019050602083039250611c17565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000611c97600080848152602001908152602001600020600001612b92565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611cfd60008084815260200190815260200160002060020154611cf8611e7a565b611685565b611d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806139166030913960400191505060405180910390fd5b611d5c8282612334565b5050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611e55836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ba7565b905092915050565b6000611e73826003612c1790919063ffffffff16565b9050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ef583611346565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611f4982600001612c31565b9050919050565b6000611f5b82611e5d565b611fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806138ea602c913960400191505060405180910390fd5b6000611fbb83611346565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061202a57508373ffffffffffffffffffffffffffffffffffffffff1661201284610dd3565b73ffffffffffffffffffffffffffffffffffffffff16145b8061203b575061203a8185611d99565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661206482611346565b73ffffffffffffffffffffffffffffffffffffffff16146120d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613a1f6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806138c66024913960400191505060405180910390fd5b612161838383612c42565b61216c600082611e82565b6121bd81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c5290919063ffffffff16565b5061220f81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c6c90919063ffffffff16565b5061222681836003612c869092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6122ae81600080858152602001908152602001600020600001611e2d90919063ffffffff16565b15612316576122bb611e7a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006123298360000183612cbb565b60001c905092915050565b61235b81600080858152602001908152602001600020600001612d3e90919063ffffffff16565b156123c357612368611e7a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600b60009054906101000a900460ff16612449576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61248d611e7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006124db82611346565b90506124e981600084612c42565b6124f4600083611e82565b6000600960008481526020019081526020016000208054600181600116156101000203166002900490501461254357600960008381526020019081526020016000206000612542919061376c565b5b61259482600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c5290919063ffffffff16565b506125a9826003612d6e90919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008060008061261d8660000186612d88565b915091508160001c8160001c8090509350935050509250929050565b600061264c846000018460001b84612e21565b60001c90509392505050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61271281611e5d565b15612785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b61279160008383612c42565b6127e281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c6c90919063ffffffff16565b506127f981836003612c869092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b600061287e82600001612f17565b9050919050565b600b60009054906101000a900460ff1615612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861294c611e7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061299e8360000183612cbb565b60001c905092915050565b60006129d1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612f28565b905092915050565b6129e4848484612044565b6129f084848484612f4b565b612a45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806138566032913960400191505060405180910390fd5b50505050565b60606000821415612a93576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b8d565b600082905060005b60008214612abd578080600101915050600a8281612ab557fe5b049150612a9b565b60608167ffffffffffffffff81118015612ad657600080fd5b506040519080825280601f01601f191660200182016040528015612b095781602001600182028036833780820191505090505b50905060006001830390508593505b60008414612b8557600a8481612b2a57fe5b0660300160f81b82828060019003935081518110612b4457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481612b7d57fe5b049350612b18565b819450505050505b919050565b6000612ba082600001612f17565b9050919050565b6000612bb38383612f28565b612c0c578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c11565b600090505b92915050565b6000612c29836000018360001b613190565b905092915050565b600081600001805490509050919050565b612c4d8383836131b3565b505050565b6000612c64836000018360001b613221565b905092915050565b6000612c7e836000018360001b612ba7565b905092915050565b6000612cb2846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613309565b90509392505050565b600081836000018054905011612d1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b826000018281548110612d2b57fe5b9060005260206000200154905092915050565b6000612d66836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613221565b905092915050565b6000612d80836000018360001b6133e5565b905092915050565b60008082846000018054905011612dea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139d16022913960400191505060405180910390fd5b6000846000018481548110612dfb57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390612ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ead578082015181840152602081019050612e92565b50505050905090810190601f168015612eda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612efb57fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000612f6c8473ffffffffffffffffffffffffffffffffffffffff166134fe565b612f795760019050613188565b606061310f63150b7a0260e01b612f8e611e7a565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561303e578082015181840152602081019050613023565b50505050905090810190601f16801561306b5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001613856603291398773ffffffffffffffffffffffffffffffffffffffff166135499092919063ffffffff16565b9050600081806020019051602081101561312857600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b6131be838383613561565b6131c661132f565b1561321c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806137fc602b913960400191505060405180910390fd5b505050565b600080836001016000848152602001908152602001600020549050600081146132fd576000600182039050600060018660000180549050039050600086600001828154811061326c57fe5b906000526020600020015490508087600001848154811061328957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806132c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613303565b60009150505b92915050565b60008084600101600085815260200190815260200160002054905060008114156133b0578460000160405180604001604052808681526020018581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084600001805490508560010160008681526020019081526020016000208190555060019150506133de565b828560000160018303815481106133c357fe5b90600052602060002090600202016001018190555060009150505b9392505050565b600080836001016000848152602001908152602001600020549050600081146134f2576000600182039050600060018660000180549050039050600086600001828154811061343057fe5b906000526020600020906002020190508087600001848154811061345057fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600183018760010160008360000154815260200190815260200160002081905550866000018054806134a357fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558660010160008781526020019081526020016000206000905560019450505050506134f8565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561354057506000801b8214155b92505050919050565b60606135588484600085613566565b90509392505050565b505050565b6060613571856134fe565b6135e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106136335780518252602082019150602081019050602083039250613610565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613695576040519150601f19603f3d011682016040523d82523d6000602084013e61369a565b606091505b509150915081156136af578092505050613764565b6000815111156136c25780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561372957808201518184015260208101905061370e565b50505050905090810190601f1680156137565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b50805460018160011615610100020316600290046000825580601f1061379257506137b1565b601f0160209004906000526020600020908101906137b091906137b4565b5b50565b6137d691905b808211156137d25760008160009055506001016137ba565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315072657365744d696e7465725061757365724175746f49643a206d75737420686176652070617573657220726f6c6520746f2070617573654552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732315072657365744d696e7465725061757365724175746f49643a206d7573742068617665206d696e74657220726f6c6520746f206d696e744552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732315072657365744d696e7465725061757365724175746f49643a206d75737420686176652070617573657220726f6c6520746f20756e7061757365416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220c6efb8c295c938365117a6bd365628895881cfce64b8317fcb685f616689f72164736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80636a6278421161010f578063a22cb465116100a2578063d539139311610071578063d539139314610bc3578063d547741f14610be1578063e63ab1e914610c2f578063e985e9c514610c4d576101f0565b8063a22cb46514610985578063b88d4fde146109d5578063c87b56dd14610ada578063ca15c87314610b81576101f0565b80639010d07c116100de5780639010d07c1461080657806391d148541461087e57806395d89b41146108e4578063a217fddf14610967576101f0565b80636a627842146106dd5780636c0360eb1461072157806370a08231146107a45780638456cb59146107fc576101f0565b80632f745c591161018757806342966c681161015657806342966c68146105dd5780634f6ccce71461060b5780635c975abb1461064d5780636352211e1461066f576101f0565b80632f745c59146104b557806336568abe146105175780633f4ba83a1461056557806342842e0e1461056f576101f0565b806318160ddd116101c357806318160ddd1461039957806323b872dd146103b7578063248a9ca3146104255780632f2ff15d14610467576101f0565b806301ffc9a7146101f557806306fdde031461025a578063081812fc146102dd578063095ea7b31461034b575b600080fd5b6102406004803603602081101561020b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610cc9565b604051808215151515815260200191505060405180910390f35b610262610d31565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a2578082015181840152602081019050610287565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610309600480360360208110156102f357600080fd5b8101908080359060200190929190505050610dd3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103976004803603604081101561036157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e6e565b005b6103a1610fb2565b6040518082815260200191505060405180910390f35b610423600480360360608110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc3565b005b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104b36004803603604081101561047d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b005b610501600480360360408110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e1565b6040518082815260200191505060405180910390f35b6105636004803603604081101561052d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061113c565b005b61056d6111d5565b005b6105db6004803603606081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061127a565b005b610609600480360360208110156105f357600080fd5b810190808035906020019092919050505061129a565b005b6106376004803603602081101561062157600080fd5b810190808035906020019092919050505061130c565b6040518082815260200191505060405180910390f35b61065561132f565b604051808215151515815260200191505060405180910390f35b61069b6004803603602081101561068557600080fd5b8101908080359060200190929190505050611346565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61071f600480360360208110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061137d565b005b610729611438565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076957808201518184015260208101905061074e565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107e6600480360360208110156107ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114da565b6040518082815260200191505060405180910390f35b6108046115af565b005b61083c6004803603604081101561081c57600080fd5b810190808035906020019092919080359060200190929190505050611654565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108ca6004803603604081101561089457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611685565b604051808215151515815260200191505060405180910390f35b6108ec6116b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561092c578082015181840152602081019050610911565b50505050905090810190601f1680156109595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61096f611758565b6040518082815260200191505060405180910390f35b6109d36004803603604081101561099b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061175f565b005b610ad8600480360360808110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a5257600080fd5b820183602082011115610a6457600080fd5b80359060200191846001830284011164010000000083111715610a8657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611917565b005b610b0660048036036020811015610af057600080fd5b810190808035906020019092919050505061198f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b46578082015181840152602081019050610b2b565b50505050905090810190601f168015610b735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bad60048036036020811015610b9757600080fd5b8101908080359060200190929190505050611c78565b6040518082815260200191505060405180910390f35b610bcb611c9e565b6040518082815260200191505060405180910390f35b610c2d60048036036040811015610bf757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd7565b005b610c37611d60565b6040518082815260200191505060405180910390f35b610caf60048036036040811015610c6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d99565b604051808215151515815260200191505060405180910390f35b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b5050505050905090565b6000610dde82611e5d565b610e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806139f3602c913960400191505060405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e7982611346565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a776021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f1f611e7a565b73ffffffffffffffffffffffffffffffffffffffff161480610f4e5750610f4d81610f48611e7a565b611d99565b5b610fa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806139466038913960400191505060405180910390fd5b610fad8383611e82565b505050565b6000610fbe6003611f3b565b905090565b610fd4610fce611e7a565b82611f50565b611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a986031913960400191505060405180910390fd5b611034838383612044565b505050565b6000806000838152602001908152602001600020600201549050919050565b61107e60008084815260200190815260200160002060020154611079611e7a565b611685565b6110d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613827602f913960400191505060405180910390fd5b6110dd8282612287565b5050565b600061113482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061231a90919063ffffffff16565b905092915050565b611144611e7a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613b76602f913960400191505060405180910390fd5b6111d18282612334565b5050565b61121b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020611216611e7a565b611685565b611270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526040815260200180613b366040913960400191505060405180910390fd5b6112786123c7565b565b61129583838360405180602001604052806000815250611917565b505050565b6112ab6112a5611e7a565b82611f50565b611300576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613b066030913960400191505060405180910390fd5b611309816124d0565b50565b60008061132383600361260a90919063ffffffff16565b50905080915050919050565b6000600b60009054906101000a900460ff16905090565b6000611376826040518060600160405280602981526020016139a86029913960036126399092919063ffffffff16565b9050919050565b6113c360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206113be611e7a565b611685565b611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180613ac9603d913960400191505060405180910390fd5b61142b81611426600c612658565b612666565b611435600c61285a565b50565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114d05780601f106114a5576101008083540402835291602001916114d0565b820191906000526020600020905b8154815290600101906020018083116114b357829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061397e602a913960400191505060405180910390fd5b6115a8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612870565b9050919050565b6115f560405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206115f0611e7a565b611685565b61164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180613888603e913960400191505060405180910390fd5b611652612885565b565b600061167d8260008086815260200190815260200160002060000161298f90919063ffffffff16565b905092915050565b60006116ae826000808681526020019081526020016000206000016129a990919063ffffffff16565b905092915050565b606060088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561174e5780601f106117235761010080835404028352916020019161174e565b820191906000526020600020905b81548152906001019060200180831161173157829003601f168201915b5050505050905090565b6000801b81565b611767611e7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b8060066000611815611e7a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118c2611e7a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611928611922611e7a565b83611f50565b61197d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a986031913960400191505060405180910390fd5b611989848484846129d9565b50505050565b606061199a82611e5d565b6119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613a48602f913960400191505060405180910390fd5b6060600960008481526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a985780601f10611a6d57610100808354040283529160200191611a98565b820191906000526020600020905b815481529060010190602001808311611a7b57829003601f168201915b505050505090506000600a8054600181600116156101000203166002900490501415611ac75780915050611c73565b600081511115611ba057600a816040516020018083805460018160011615610100020316600290048015611b325780601f10611b10576101008083540402835291820191611b32565b820191906000526020600020905b815481529060010190602001808311611b1e575b505082805190602001908083835b60208310611b635780518252602082019150602081019050602083039250611b40565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050611c73565b600a611bab84612a4b565b6040516020018083805460018160011615610100020316600290048015611c095780601f10611be7576101008083540402835291820191611c09565b820191906000526020600020905b815481529060010190602001808311611bf5575b505082805190602001908083835b60208310611c3a5780518252602082019150602081019050602083039250611c17565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000611c97600080848152602001908152602001600020600001612b92565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b611cfd60008084815260200190815260200160002060020154611cf8611e7a565b611685565b611d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806139166030913960400191505060405180910390fd5b611d5c8282612334565b5050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611e55836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612ba7565b905092915050565b6000611e73826003612c1790919063ffffffff16565b9050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ef583611346565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611f4982600001612c31565b9050919050565b6000611f5b82611e5d565b611fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806138ea602c913960400191505060405180910390fd5b6000611fbb83611346565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061202a57508373ffffffffffffffffffffffffffffffffffffffff1661201284610dd3565b73ffffffffffffffffffffffffffffffffffffffff16145b8061203b575061203a8185611d99565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661206482611346565b73ffffffffffffffffffffffffffffffffffffffff16146120d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613a1f6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806138c66024913960400191505060405180910390fd5b612161838383612c42565b61216c600082611e82565b6121bd81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c5290919063ffffffff16565b5061220f81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c6c90919063ffffffff16565b5061222681836003612c869092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6122ae81600080858152602001908152602001600020600001611e2d90919063ffffffff16565b15612316576122bb611e7a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006123298360000183612cbb565b60001c905092915050565b61235b81600080858152602001908152602001600020600001612d3e90919063ffffffff16565b156123c357612368611e7a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600b60009054906101000a900460ff16612449576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61248d611e7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006124db82611346565b90506124e981600084612c42565b6124f4600083611e82565b6000600960008481526020019081526020016000208054600181600116156101000203166002900490501461254357600960008381526020019081526020016000206000612542919061376c565b5b61259482600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c5290919063ffffffff16565b506125a9826003612d6e90919063ffffffff16565b5081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008060008061261d8660000186612d88565b915091508160001c8160001c8090509350935050509250929050565b600061264c846000018460001b84612e21565b60001c90509392505050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61271281611e5d565b15612785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b61279160008383612c42565b6127e281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c6c90919063ffffffff16565b506127f981836003612c869092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b600061287e82600001612f17565b9050919050565b600b60009054906101000a900460ff1615612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861294c611e7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061299e8360000183612cbb565b60001c905092915050565b60006129d1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612f28565b905092915050565b6129e4848484612044565b6129f084848484612f4b565b612a45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806138566032913960400191505060405180910390fd5b50505050565b60606000821415612a93576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b8d565b600082905060005b60008214612abd578080600101915050600a8281612ab557fe5b049150612a9b565b60608167ffffffffffffffff81118015612ad657600080fd5b506040519080825280601f01601f191660200182016040528015612b095781602001600182028036833780820191505090505b50905060006001830390508593505b60008414612b8557600a8481612b2a57fe5b0660300160f81b82828060019003935081518110612b4457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481612b7d57fe5b049350612b18565b819450505050505b919050565b6000612ba082600001612f17565b9050919050565b6000612bb38383612f28565b612c0c578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612c11565b600090505b92915050565b6000612c29836000018360001b613190565b905092915050565b600081600001805490509050919050565b612c4d8383836131b3565b505050565b6000612c64836000018360001b613221565b905092915050565b6000612c7e836000018360001b612ba7565b905092915050565b6000612cb2846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613309565b90509392505050565b600081836000018054905011612d1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b826000018281548110612d2b57fe5b9060005260206000200154905092915050565b6000612d66836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613221565b905092915050565b6000612d80836000018360001b6133e5565b905092915050565b60008082846000018054905011612dea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139d16022913960400191505060405180910390fd5b6000846000018481548110612dfb57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008084600101600085815260200190815260200160002054905060008114158390612ee8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ead578082015181840152602081019050612e92565b50505050905090810190601f168015612eda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612efb57fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000612f6c8473ffffffffffffffffffffffffffffffffffffffff166134fe565b612f795760019050613188565b606061310f63150b7a0260e01b612f8e611e7a565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561303e578082015181840152602081019050613023565b50505050905090810190601f16801561306b5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001613856603291398773ffffffffffffffffffffffffffffffffffffffff166135499092919063ffffffff16565b9050600081806020019051602081101561312857600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b6131be838383613561565b6131c661132f565b1561321c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806137fc602b913960400191505060405180910390fd5b505050565b600080836001016000848152602001908152602001600020549050600081146132fd576000600182039050600060018660000180549050039050600086600001828154811061326c57fe5b906000526020600020015490508087600001848154811061328957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806132c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613303565b60009150505b92915050565b60008084600101600085815260200190815260200160002054905060008114156133b0578460000160405180604001604052808681526020018581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084600001805490508560010160008681526020019081526020016000208190555060019150506133de565b828560000160018303815481106133c357fe5b90600052602060002090600202016001018190555060009150505b9392505050565b600080836001016000848152602001908152602001600020549050600081146134f2576000600182039050600060018660000180549050039050600086600001828154811061343057fe5b906000526020600020906002020190508087600001848154811061345057fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600183018760010160008360000154815260200190815260200160002081905550866000018054806134a357fe5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558660010160008781526020019081526020016000206000905560019450505050506134f8565b60009150505b92915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561354057506000801b8214155b92505050919050565b60606135588484600085613566565b90509392505050565b505050565b6060613571856134fe565b6135e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106136335780518252602082019150602081019050602083039250613610565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613695576040519150601f19603f3d011682016040523d82523d6000602084013e61369a565b606091505b509150915081156136af578092505050613764565b6000815111156136c25780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561372957808201518184015260208101905061370e565b50505050905090810190601f1680156137565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b50805460018160011615610100020316600290046000825580601f1061379257506137b1565b601f0160209004906000526020600020908101906137b091906137b4565b5b50565b6137d691905b808211156137d25760008160009055506001016137ba565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315072657365744d696e7465725061757365724175746f49643a206d75737420686176652070617573657220726f6c6520746f2070617573654552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732315072657365744d696e7465725061757365724175746f49643a206d7573742068617665206d696e74657220726f6c6520746f206d696e744552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732315072657365744d696e7465725061757365724175746f49643a206d75737420686176652070617573657220726f6c6520746f20756e7061757365416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220c6efb8c295c938365117a6bd365628895881cfce64b8317fcb685f616689f72164736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC721ReceiverMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC721ReceiverMock.json new file mode 100644 index 0000000..f426ef1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC721ReceiverMock.json @@ -0,0 +1,1028 @@ +{ + "fileName": "ERC721ReceiverMock.sol", + "contractName": "ERC721ReceiverMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../token/ERC721/IERC721Receiver.sol\";\n\ncontract ERC721ReceiverMock is IERC721Receiver {\n bytes4 private _retval;\n bool private _reverts;\n\n event Received(address operator, address from, uint256 tokenId, bytes data, uint256 gas);\n\n constructor (bytes4 retval, bool reverts) public {\n _retval = retval;\n _reverts = reverts;\n }\n\n function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)\n public override returns (bytes4)\n {\n require(!_reverts, \"ERC721ReceiverMock: reverting\");\n emit Received(operator, from, tokenId, data, gasleft());\n return _retval;\n }\n}\n", + "sourcePath": "contracts/mocks/ERC721ReceiverMock.sol", + "sourceMap": "105:618:43:-:0;;;309:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;378:6;368:7;;:16;;;;;;;;;;;;;;;;;;405:7;394:8;;:18;;;;;;;;;;;;;;;;;;309:110;;105:618;;;;;;", + "deployedSourceMap": "105:618:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;425:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;552:6;583:8;;;;;;;;;;;582:9;574:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;640:50;649:8;659:4;665:7;674:4;680:9;640:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;707:7;;;;;;;;;;;700:14;;425:296;;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "retval", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "reverts", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gas", + "type": "uint256" + } + ], + "name": "Received", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC721ReceiverMock.sol", + "exportedSymbols": { + "ERC721ReceiverMock": [ + 4170 + ] + }, + "id": 4171, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4102, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:43" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Receiver.sol", + "file": "../token/ERC721/IERC721Receiver.sol", + "id": 4103, + "nodeType": "ImportDirective", + "scope": 4171, + "sourceUnit": 9538, + "src": "58:45:43", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4104, + "name": "IERC721Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9537, + "src": "136:15:43", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$9537", + "typeString": "contract IERC721Receiver" + } + }, + "id": 4105, + "nodeType": "InheritanceSpecifier", + "src": "136:15:43" + } + ], + "contractDependencies": [ + 9537 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4170, + "linearizedBaseContracts": [ + 4170, + 9537 + ], + "name": "ERC721ReceiverMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4107, + "mutability": "mutable", + "name": "_retval", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4170, + "src": "158:22:43", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4106, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "158:6:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4109, + "mutability": "mutable", + "name": "_reverts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4170, + "src": "186:21:43", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4108, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "186:4:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 4121, + "name": "Received", + "nodeType": "EventDefinition", + "parameters": { + "id": 4120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4111, + "indexed": false, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4121, + "src": "229:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "229:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4113, + "indexed": false, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4121, + "src": "247:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "247:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4115, + "indexed": false, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4121, + "src": "261:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "261:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4117, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4121, + "src": "278:10:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4116, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "278:5:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4119, + "indexed": false, + "mutability": "mutable", + "name": "gas", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4121, + "src": "290:11:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "290:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:74:43" + }, + "src": "214:89:43" + }, + { + "body": { + "id": 4136, + "nodeType": "Block", + "src": "358:61:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4128, + "name": "_retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4107, + "src": "368:7:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4129, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4123, + "src": "378:6:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "368:16:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 4131, + "nodeType": "ExpressionStatement", + "src": "368:16:43" + }, + { + "expression": { + "argumentTypes": null, + "id": 4134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4132, + "name": "_reverts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4109, + "src": "394:8:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4133, + "name": "reverts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4125, + "src": "405:7:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "394:18:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4135, + "nodeType": "ExpressionStatement", + "src": "394:18:43" + } + ] + }, + "documentation": null, + "id": 4137, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4123, + "mutability": "mutable", + "name": "retval", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4137, + "src": "322:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4122, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "322:6:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4125, + "mutability": "mutable", + "name": "reverts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4137, + "src": "337:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4124, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "337:4:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "321:29:43" + }, + "returnParameters": { + "id": 4127, + "nodeType": "ParameterList", + "parameters": [], + "src": "358:0:43" + }, + "scope": 4170, + "src": "309:110:43", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9536 + ], + "body": { + "id": 4168, + "nodeType": "Block", + "src": "564:157:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "582:9:43", + "subExpression": { + "argumentTypes": null, + "id": 4152, + "name": "_reverts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4109, + "src": "583:8:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524337323152656365697665724d6f636b3a20726576657274696e67", + "id": 4154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "593:31:43", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0dbe0f4c3249a8de74f224ef53fef2e300747c9f34527e99ce6490bf6e04eb76", + "typeString": "literal_string \"ERC721ReceiverMock: reverting\"" + }, + "value": "ERC721ReceiverMock: reverting" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0dbe0f4c3249a8de74f224ef53fef2e300747c9f34527e99ce6490bf6e04eb76", + "typeString": "literal_string \"ERC721ReceiverMock: reverting\"" + } + ], + "id": 4151, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "574:7:43", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "574:51:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4156, + "nodeType": "ExpressionStatement", + "src": "574:51:43" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4158, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "649:8:43", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4159, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "659:4:43", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4160, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4143, + "src": "665:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4161, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4145, + "src": "674:4:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4162, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -7, + "src": "680:7:43", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 4163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:9:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4157, + "name": "Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4121, + "src": "640:8:43", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory,uint256)" + } + }, + "id": 4164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "640:50:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4165, + "nodeType": "EmitStatement", + "src": "635:55:43" + }, + { + "expression": { + "argumentTypes": null, + "id": 4166, + "name": "_retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4107, + "src": "707:7:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 4150, + "id": 4167, + "nodeType": "Return", + "src": "700:14:43" + } + ] + }, + "documentation": null, + "functionSelector": "150b7a02", + "id": 4169, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4147, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "534:8:43" + }, + "parameters": { + "id": 4146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4139, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4169, + "src": "451:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "451:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4141, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4169, + "src": "469:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "469:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4143, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4169, + "src": "483:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "483:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4145, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4169, + "src": "500:17:43", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4144, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "500:5:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:68:43" + }, + "returnParameters": { + "id": 4150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4149, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4169, + "src": "552:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4148, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "552:6:43", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "551:8:43" + }, + "scope": 4170, + "src": "425:296:43", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4171, + "src": "105:618:43" + } + ], + "src": "33:691:43" + }, + "bytecode": "0x608060405234801561001057600080fd5b506040516104043803806104048339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548163ffffffff021916908360e01c021790555080600060046101000a81548160ff021916908315150217905550505061036e806100966000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b6101336004803603608081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100ad57600080fd5b8201836020820111156100bf57600080fd5b803590602001918460018302840111640100000000831117156100e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610187565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b60008060049054906101000a900460ff161561020b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f45524337323152656365697665724d6f636b3a20726576657274696e6700000081525060200191505060405180910390fd5b7f28fa6e16458f9c24aa59ddd4085264573006dbe30304837873c7deafc702b038858585855a604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156102e15780820151818401526020810190506102c6565b50505050905090810190601f16801561030e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a16000809054906101000a900460e01b905094935050505056fea2646970667358221220219cd9aae4223e4c87d8e96f6ccd41061cf35ffab608270354c40a8ba0ccba4164736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b6101336004803603608081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100ad57600080fd5b8201836020820111156100bf57600080fd5b803590602001918460018302840111640100000000831117156100e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610187565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b60008060049054906101000a900460ff161561020b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f45524337323152656365697665724d6f636b3a20726576657274696e6700000081525060200191505060405180910390fd5b7f28fa6e16458f9c24aa59ddd4085264573006dbe30304837873c7deafc702b038858585855a604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156102e15780820151818401526020810190506102c6565b50505050905090810190601f16801561030e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a16000809054906101000a900460e01b905094935050505056fea2646970667358221220219cd9aae4223e4c87d8e96f6ccd41061cf35ffab608270354c40a8ba0ccba4164736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC777.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC777.json new file mode 100644 index 0000000..523b28b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC777.json @@ -0,0 +1,15728 @@ +{ + "fileName": "ERC777.sol", + "contractName": "ERC777", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC777.sol\";\nimport \"./IERC777Recipient.sol\";\nimport \"./IERC777Sender.sol\";\nimport \"../../token/ERC20/IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../introspection/IERC1820Registry.sol\";\n\n/**\n * @dev Implementation of the {IERC777} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * Support for ERC20 is included in this contract, as specified by the EIP: both\n * the ERC777 and ERC20 interfaces can be safely used when interacting with it.\n * Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token\n * movements.\n *\n * Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there\n * are no special restrictions in the amount of tokens that created, moved, or\n * destroyed. This makes integration with ERC20 applications seamless.\n */\ncontract ERC777 is Context, IERC777, IERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n IERC1820Registry constant internal _ERC1820_REGISTRY = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24);\n\n mapping(address => uint256) private _balances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n // We inline the result of the following hashes because Solidity doesn't resolve them at compile time.\n // See https://github.com/ethereum/solidity/issues/4024.\n\n // keccak256(\"ERC777TokensSender\")\n bytes32 constant private _TOKENS_SENDER_INTERFACE_HASH =\n 0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895;\n\n // keccak256(\"ERC777TokensRecipient\")\n bytes32 constant private _TOKENS_RECIPIENT_INTERFACE_HASH =\n 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b;\n\n // This isn't ever read from - it's only used to respond to the defaultOperators query.\n address[] private _defaultOperatorsArray;\n\n // Immutable, but accounts may revoke them (tracked in __revokedDefaultOperators).\n mapping(address => bool) private _defaultOperators;\n\n // For each account, a mapping of its operators and revoked default operators.\n mapping(address => mapping(address => bool)) private _operators;\n mapping(address => mapping(address => bool)) private _revokedDefaultOperators;\n\n // ERC20-allowances\n mapping (address => mapping (address => uint256)) private _allowances;\n\n /**\n * @dev `defaultOperators` may be an empty array.\n */\n constructor(\n string memory name,\n string memory symbol,\n address[] memory defaultOperators\n ) public {\n _name = name;\n _symbol = symbol;\n\n _defaultOperatorsArray = defaultOperators;\n for (uint256 i = 0; i < _defaultOperatorsArray.length; i++) {\n _defaultOperators[_defaultOperatorsArray[i]] = true;\n }\n\n // register interfaces\n _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256(\"ERC777Token\"), address(this));\n _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256(\"ERC20Token\"), address(this));\n }\n\n /**\n * @dev See {IERC777-name}.\n */\n function name() public view override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC777-symbol}.\n */\n function symbol() public view override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {ERC20-decimals}.\n *\n * Always returns 18, as per the\n * [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility).\n */\n function decimals() public pure returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC777-granularity}.\n *\n * This implementation always returns `1`.\n */\n function granularity() public view override returns (uint256) {\n return 1;\n }\n\n /**\n * @dev See {IERC777-totalSupply}.\n */\n function totalSupply() public view override(IERC20, IERC777) returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Returns the amount of tokens owned by an account (`tokenHolder`).\n */\n function balanceOf(address tokenHolder) public view override(IERC20, IERC777) returns (uint256) {\n return _balances[tokenHolder];\n }\n\n /**\n * @dev See {IERC777-send}.\n *\n * Also emits a {IERC20-Transfer} event for ERC20 compatibility.\n */\n function send(address recipient, uint256 amount, bytes memory data) public override {\n _send(_msgSender(), recipient, amount, data, \"\", true);\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient}\n * interface if it is a contract.\n *\n * Also emits a {Sent} event.\n */\n function transfer(address recipient, uint256 amount) public override returns (bool) {\n require(recipient != address(0), \"ERC777: transfer to the zero address\");\n\n address from = _msgSender();\n\n _callTokensToSend(from, from, recipient, amount, \"\", \"\");\n\n _move(from, from, recipient, amount, \"\", \"\");\n\n _callTokensReceived(from, from, recipient, amount, \"\", \"\", false);\n\n return true;\n }\n\n /**\n * @dev See {IERC777-burn}.\n *\n * Also emits a {IERC20-Transfer} event for ERC20 compatibility.\n */\n function burn(uint256 amount, bytes memory data) public override {\n _burn(_msgSender(), amount, data, \"\");\n }\n\n /**\n * @dev See {IERC777-isOperatorFor}.\n */\n function isOperatorFor(\n address operator,\n address tokenHolder\n ) public view override returns (bool) {\n return operator == tokenHolder ||\n (_defaultOperators[operator] && !_revokedDefaultOperators[tokenHolder][operator]) ||\n _operators[tokenHolder][operator];\n }\n\n /**\n * @dev See {IERC777-authorizeOperator}.\n */\n function authorizeOperator(address operator) public override {\n require(_msgSender() != operator, \"ERC777: authorizing self as operator\");\n\n if (_defaultOperators[operator]) {\n delete _revokedDefaultOperators[_msgSender()][operator];\n } else {\n _operators[_msgSender()][operator] = true;\n }\n\n emit AuthorizedOperator(operator, _msgSender());\n }\n\n /**\n * @dev See {IERC777-revokeOperator}.\n */\n function revokeOperator(address operator) public override {\n require(operator != _msgSender(), \"ERC777: revoking self as operator\");\n\n if (_defaultOperators[operator]) {\n _revokedDefaultOperators[_msgSender()][operator] = true;\n } else {\n delete _operators[_msgSender()][operator];\n }\n\n emit RevokedOperator(operator, _msgSender());\n }\n\n /**\n * @dev See {IERC777-defaultOperators}.\n */\n function defaultOperators() public view override returns (address[] memory) {\n return _defaultOperatorsArray;\n }\n\n /**\n * @dev See {IERC777-operatorSend}.\n *\n * Emits {Sent} and {IERC20-Transfer} events.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes memory data,\n bytes memory operatorData\n )\n public override\n {\n require(isOperatorFor(_msgSender(), sender), \"ERC777: caller is not an operator for holder\");\n _send(sender, recipient, amount, data, operatorData, true);\n }\n\n /**\n * @dev See {IERC777-operatorBurn}.\n *\n * Emits {Burned} and {IERC20-Transfer} events.\n */\n function operatorBurn(address account, uint256 amount, bytes memory data, bytes memory operatorData) public override {\n require(isOperatorFor(_msgSender(), account), \"ERC777: caller is not an operator for holder\");\n _burn(account, amount, data, operatorData);\n }\n\n /**\n * @dev See {IERC20-allowance}.\n *\n * Note that operator and allowance concepts are orthogonal: operators may\n * not have allowance, and accounts with allowance may not be operators\n * themselves.\n */\n function allowance(address holder, address spender) public view override returns (uint256) {\n return _allowances[holder][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Note that accounts cannot have allowance issued by their operators.\n */\n function approve(address spender, uint256 value) public override returns (bool) {\n address holder = _msgSender();\n _approve(holder, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Note that operator and allowance concepts are orthogonal: operators cannot\n * call `transferFrom` (unless they have allowance), and accounts with\n * allowance cannot call `operatorSend` (unless they are operators).\n *\n * Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events.\n */\n function transferFrom(address holder, address recipient, uint256 amount) public override returns (bool) {\n require(recipient != address(0), \"ERC777: transfer to the zero address\");\n require(holder != address(0), \"ERC777: transfer from the zero address\");\n\n address spender = _msgSender();\n\n _callTokensToSend(spender, holder, recipient, amount, \"\", \"\");\n\n _move(spender, holder, recipient, amount, \"\", \"\");\n _approve(holder, spender, _allowances[holder][spender].sub(amount, \"ERC777: transfer amount exceeds allowance\"));\n\n _callTokensReceived(spender, holder, recipient, amount, \"\", \"\", false);\n\n return true;\n }\n\n /**\n * @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `operator`, `data` and `operatorData`.\n *\n * See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits {Minted} and {IERC20-Transfer} events.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - if `account` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function _mint(\n address account,\n uint256 amount,\n bytes memory userData,\n bytes memory operatorData\n )\n internal virtual\n {\n require(account != address(0), \"ERC777: mint to the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), account, amount);\n\n // Update state variables\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n\n _callTokensReceived(operator, address(0), account, amount, userData, operatorData, true);\n\n emit Minted(operator, account, amount, userData, operatorData);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Send tokens\n * @param from address token holder address\n * @param to address recipient address\n * @param amount uint256 amount of tokens to transfer\n * @param userData bytes extra information provided by the token holder (if any)\n * @param operatorData bytes extra information provided by the operator (if any)\n * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient\n */\n function _send(\n address from,\n address to,\n uint256 amount,\n bytes memory userData,\n bytes memory operatorData,\n bool requireReceptionAck\n )\n internal\n {\n require(from != address(0), \"ERC777: send from the zero address\");\n require(to != address(0), \"ERC777: send to the zero address\");\n\n address operator = _msgSender();\n\n _callTokensToSend(operator, from, to, amount, userData, operatorData);\n\n _move(operator, from, to, amount, userData, operatorData);\n\n _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck);\n }\n\n /**\n * @dev Burn tokens\n * @param from address token holder address\n * @param amount uint256 amount of tokens to burn\n * @param data bytes extra information provided by the token holder\n * @param operatorData bytes extra information provided by the operator (if any)\n */\n function _burn(\n address from,\n uint256 amount,\n bytes memory data,\n bytes memory operatorData\n )\n internal virtual\n {\n require(from != address(0), \"ERC777: burn from the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, address(0), amount);\n\n _callTokensToSend(operator, from, address(0), amount, data, operatorData);\n\n // Update state variables\n _balances[from] = _balances[from].sub(amount, \"ERC777: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n\n emit Burned(operator, from, amount, data, operatorData);\n emit Transfer(from, address(0), amount);\n }\n\n function _move(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes memory userData,\n bytes memory operatorData\n )\n private\n {\n _beforeTokenTransfer(operator, from, to, amount);\n\n _balances[from] = _balances[from].sub(amount, \"ERC777: transfer amount exceeds balance\");\n _balances[to] = _balances[to].add(amount);\n\n emit Sent(operator, from, to, amount, userData, operatorData);\n emit Transfer(from, to, amount);\n }\n\n /**\n * @dev See {ERC20-_approve}.\n *\n * Note that accounts cannot have allowance issued by their operators.\n */\n function _approve(address holder, address spender, uint256 value) internal {\n require(holder != address(0), \"ERC777: approve from the zero address\");\n require(spender != address(0), \"ERC777: approve to the zero address\");\n\n _allowances[holder][spender] = value;\n emit Approval(holder, spender, value);\n }\n\n /**\n * @dev Call from.tokensToSend() if the interface is registered\n * @param operator address operator requesting the transfer\n * @param from address token holder address\n * @param to address recipient address\n * @param amount uint256 amount of tokens to transfer\n * @param userData bytes extra information provided by the token holder (if any)\n * @param operatorData bytes extra information provided by the operator (if any)\n */\n function _callTokensToSend(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes memory userData,\n bytes memory operatorData\n )\n private\n {\n address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(from, _TOKENS_SENDER_INTERFACE_HASH);\n if (implementer != address(0)) {\n IERC777Sender(implementer).tokensToSend(operator, from, to, amount, userData, operatorData);\n }\n }\n\n /**\n * @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but\n * tokensReceived() was not registered for the recipient\n * @param operator address operator requesting the transfer\n * @param from address token holder address\n * @param to address recipient address\n * @param amount uint256 amount of tokens to transfer\n * @param userData bytes extra information provided by the token holder (if any)\n * @param operatorData bytes extra information provided by the operator (if any)\n * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient\n */\n function _callTokensReceived(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes memory userData,\n bytes memory operatorData,\n bool requireReceptionAck\n )\n private\n {\n address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(to, _TOKENS_RECIPIENT_INTERFACE_HASH);\n if (implementer != address(0)) {\n IERC777Recipient(implementer).tokensReceived(operator, from, to, amount, userData, operatorData);\n } else if (requireReceptionAck) {\n require(!to.isContract(), \"ERC777: token recipient contract has no implementer for ERC777TokensRecipient\");\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes\n * calls to {send}, {transfer}, {operatorSend}, minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address operator, address from, address to, uint256 amount) internal virtual { }\n}\n", + "sourcePath": "contracts/token/ERC777/ERC777.sol", + "sourceMap": "1049:16252:100:-:0;;;2645:623;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2789:4;2781:5;:12;;;;;;;;;;;;:::i;:::-;;2813:6;2803:7;:16;;;;;;;;;;;;:::i;:::-;;2855;2830:22;:41;;;;;;;;;;;;:::i;:::-;;2886:9;2898:1;2886:13;;2881:136;2905:22;:29;;;;2901:1;:33;2881:136;;;3002:4;2955:17;:44;2973:22;2996:1;2973:25;;;;;;;;;;;;;;;;;;;;;;;;;2955:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;2936:3;;;;;;;2881:136;;;;1235:42;3058:41;;;3108:4;3115:24;;;;;;;;;;;;;;;;;;;3149:4;3058:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:42;3165:41;;;3215:4;3222:23;;;;;;;;;;;;;;;;;;;3255:4;3165:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2645:623;;;1049:16252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "1049:16252:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7012:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3322:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8539:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4083:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9093:672;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3746:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3935:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7253:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4298:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6081:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3468:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4570:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4957:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5701:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8258:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6550:396;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7740:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7012:122;7070:16;7105:22;7098:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7012:122;:::o;3322:90::-;3368:13;3400:5;3393:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3322:90;:::o;8539:189::-;8613:4;8629:14;8646:12;:10;:12::i;:::-;8629:29;;8668:32;8677:6;8685:7;8694:5;8668:8;:32::i;:::-;8717:4;8710:11;;;8539:189;;;;:::o;4083:115::-;4153:7;4179:12;;4172:19;;4083:115;:::o;9093:672::-;9191:4;9236:1;9215:23;;:9;:23;;;;9207:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9315:1;9297:20;;:6;:20;;;;9289:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9371:15;9389:12;:10;:12::i;:::-;9371:30;;9412:61;9430:7;9439:6;9447:9;9458:6;9412:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;9484:49;9490:7;9499:6;9507:9;9518:6;9484:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;9543:112;9552:6;9560:7;9569:85;9602:6;9569:85;;;;;;;;;;;;;;;;;:11;:19;9581:6;9569:19;;;;;;;;;;;;;;;:28;9589:7;9569:28;;;;;;;;;;;;;;;;:32;;:85;;;;;:::i;:::-;9543:8;:112::i;:::-;9666:70;9686:7;9695:6;9703:9;9714:6;9666:70;;;;;;;;;;;;;;;;;;;;;;;;9730:5;9666:19;:70::i;:::-;9754:4;9747:11;;;9093:672;;;;;:::o;3746:74::-;3787:5;3811:2;3804:9;;3746:74;:::o;3935:87::-;3988:7;4014:1;4007:8;;3935:87;:::o;7253:366::-;7460:35;7474:12;:10;:12::i;:::-;7488:6;7460:13;:35::i;:::-;7452:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7554:58;7560:6;7568:9;7579:6;7587:4;7593:12;7607:4;7554:5;:58::i;:::-;7253:366;;;;;:::o;4298:142::-;4385:7;4411:9;:22;4421:11;4411:22;;;;;;;;;;;;;;;;4404:29;;4298:142;;;:::o;6081:405::-;6177:8;6161:24;;:12;:10;:12::i;:::-;:24;;;;6153:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6241:17;:27;6259:8;6241:27;;;;;;;;;;;;;;;;;;;;;;;;;6237:185;;;6291:24;:38;6316:12;:10;:12::i;:::-;6291:38;;;;;;;;;;;;;;;:48;6330:8;6291:48;;;;;;;;;;;;;;;;6284:55;;;;;;;;;;;6237:185;;;6407:4;6370:10;:24;6381:12;:10;:12::i;:::-;6370:24;;;;;;;;;;;;;;;:34;6395:8;6370:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6237:185;6466:12;:10;:12::i;:::-;6437:42;;6456:8;6437:42;;;;;;;;;;;;6081:405;:::o;3468:94::-;3516:13;3548:7;3541:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:94;:::o;4570:156::-;4665:54;4671:12;:10;:12::i;:::-;4685:9;4696:6;4704:4;4665:54;;;;;;;;;;;;4714:4;4665:5;:54::i;:::-;4570:156;;;:::o;4957:431::-;5035:4;5080:1;5059:23;;:9;:23;;;;5051:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:12;5149;:10;:12::i;:::-;5134:27;;5172:56;5190:4;5196;5202:9;5213:6;5172:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;5239:44;5245:4;5251;5257:9;5268:6;5239:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;5294:65;5314:4;5320;5326:9;5337:6;5294:65;;;;;;;;;;;;;;;;;;;;;;;;5353:5;5294:19;:65::i;:::-;5377:4;5370:11;;;4957:431;;;;:::o;5701:313::-;5815:4;5850:11;5838:23;;:8;:23;;;:120;;;;5878:17;:27;5896:8;5878:27;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;;5910:24;:37;5935:11;5910:37;;;;;;;;;;;;;;;:47;5948:8;5910:47;;;;;;;;;;;;;;;;;;;;;;;;;5909:48;5878:79;5838:120;:169;;;;5974:10;:23;5985:11;5974:23;;;;;;;;;;;;;;;:33;5998:8;5974:33;;;;;;;;;;;;;;;;;;;;;;;;;5838:169;5831:176;;5701:313;;;;:::o;8258:143::-;8340:7;8366:11;:19;8378:6;8366:19;;;;;;;;;;;;;;;:28;8386:7;8366:28;;;;;;;;;;;;;;;;8359:35;;8258:143;;;;:::o;6550:396::-;6639:12;:10;:12::i;:::-;6627:24;;:8;:24;;;;6619:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6704:17;:27;6722:8;6704:27;;;;;;;;;;;;;;;;;;;;;;;;;6700:185;;;6798:4;6747:24;:38;6772:12;:10;:12::i;:::-;6747:38;;;;;;;;;;;;;;;:48;6786:8;6747:48;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;6700:185;;;6840:10;:24;6851:12;:10;:12::i;:::-;6840:24;;;;;;;;;;;;;;;:34;6865:8;6840:34;;;;;;;;;;;;;;;;6833:41;;;;;;;;;;;6700:185;6926:12;:10;:12::i;:::-;6900:39;;6916:8;6900:39;;;;;;;;;;;;6550:396;:::o;7740:279::-;7875:36;7889:12;:10;:12::i;:::-;7903:7;7875:13;:36::i;:::-;7867:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7970:42;7976:7;7985:6;7993:4;7999:12;7970:5;:42::i;:::-;7740:279;;;;:::o;5518:120::-;5594:37;5600:12;:10;:12::i;:::-;5614:6;5622:4;5594:37;;;;;;;;;;;;:5;:37::i;:::-;5518:120;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;13892:335:100:-;14003:1;13985:20;;:6;:20;;;;13977:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14084:1;14065:21;;:7;:21;;;;14057:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14168:5;14137:11;:19;14149:6;14137:19;;;;;;;;;;;;;;;:28;14157:7;14137:28;;;;;;;;;;;;;;;:36;;;;14205:7;14188:32;;14197:6;14188:32;;;14214:5;14188:32;;;;;;;;;;;;;;;;;;13892:335;;;:::o;14700:484::-;14921:19;1235:42;14943:41;;;14985:4;1700:66;14991:29;;14943:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14921:100;;15058:1;15035:25;;:11;:25;;;15031:147;;15090:11;15076:39;;;15116:8;15126:4;15132:2;15136:6;15144:8;15154:12;15076:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15031:147;14700:484;;;;;;;:::o;13227:527::-;13436:48;13457:8;13467:4;13473:2;13477:6;13436:20;:48::i;:::-;13513:70;13533:6;13513:70;;;;;;;;;;;;;;;;;:9;:15;13523:4;13513:15;;;;;;;;;;;;;;;;:19;;:70;;;;;:::i;:::-;13495:9;:15;13505:4;13495:15;;;;;;;;;;;;;;;:88;;;;13609:25;13627:6;13609:9;:13;13619:2;13609:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;13593:9;:13;13603:2;13593:13;;;;;;;;;;;;;;;:41;;;;13671:2;13650:56;;13665:4;13650:56;;13655:8;13650:56;;;13675:6;13683:8;13693:12;13650:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13736:2;13721:26;;13730:4;13721:26;;;13740:6;13721:26;;;;;;;;;;;;;;;;;;13227:527;;;;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;15873:688:100:-;16130:19;1235:42;16152:41;;;16194:2;1883:66;16198:32;;16152:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16130:101;;16268:1;16245:25;;:11;:25;;;16241:314;;16303:11;16286:44;;;16331:8;16341:4;16347:2;16351:6;16359:8;16369:12;16286:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16241:314;;;16403:19;16399:156;;;16447:15;:2;:13;;;:15::i;:::-;16446:16;16438:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16399:156;16241:314;15873:688;;;;;;;;:::o;11536:654::-;11778:1;11762:18;;:4;:18;;;;11754:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11851:1;11837:16;;:2;:16;;;;11829:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:16;11920:12;:10;:12::i;:::-;11901:31;;11943:69;11961:8;11971:4;11977:2;11981:6;11989:8;11999:12;11943:17;:69::i;:::-;12023:57;12029:8;12039:4;12045:2;12049:6;12057:8;12067:12;12023:5;:57::i;:::-;12091:92;12111:8;12121:4;12127:2;12131:6;12139:8;12149:12;12163:19;12091;:92::i;:::-;11536:654;;;;;;;:::o;12495:726::-;12687:1;12671:18;;:4;:18;;;;12663:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12739:16;12758:12;:10;:12::i;:::-;12739:31;;12781:56;12802:8;12812:4;12826:1;12830:6;12781:20;:56::i;:::-;12848:73;12866:8;12876:4;12890:1;12894:6;12902:4;12908:12;12848:17;:73::i;:::-;12984:66;13004:6;12984:66;;;;;;;;;;;;;;;;;:9;:15;12994:4;12984:15;;;;;;;;;;;;;;;;:19;;:66;;;;;:::i;:::-;12966:9;:15;12976:4;12966:15;;;;;;;;;;;;;;;:84;;;;13075:24;13092:6;13075:12;;:16;;:24;;;;:::i;:::-;13060:12;:39;;;;13132:4;13115:50;;13122:8;13115:50;;;13138:6;13146:4;13152:12;13115:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13203:1;13180:34;;13189:4;13180:34;;;13207:6;13180:34;;;;;;;;;;;;;;;;;;12495:726;;;;;:::o;17189:110::-;;;;;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;718:610:104:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;1321:134:17:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address[]", + "name": "defaultOperators", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "granularity", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC777/ERC777.sol", + "exportedSymbols": { + "ERC777": [ + 12411 + ] + }, + "id": 12412, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11313, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:100" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 11314, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 23, + "src": "58:31:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/IERC777.sol", + "file": "./IERC777.sol", + "id": 11315, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 12571, + "src": "90:23:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/IERC777Recipient.sol", + "file": "./IERC777Recipient.sol", + "id": 11316, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 12591, + "src": "114:32:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/IERC777Sender.sol", + "file": "./IERC777Sender.sol", + "id": 11317, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 12611, + "src": "147:29:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 11318, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 9774, + "src": "177:38:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 11319, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 2422, + "src": "216:33:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 11320, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 12815, + "src": "250:33:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/IERC1820Registry.sol", + "file": "../../introspection/IERC1820Registry.sol", + "id": 11321, + "nodeType": "ImportDirective", + "scope": 12412, + "sourceUnit": 2153, + "src": "284:50:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11323, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "1068:7:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 11324, + "nodeType": "InheritanceSpecifier", + "src": "1068:7:100" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11325, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12570, + "src": "1077:7:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$12570", + "typeString": "contract IERC777" + } + }, + "id": 11326, + "nodeType": "InheritanceSpecifier", + "src": "1077:7:100" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11327, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1086:6:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 11328, + "nodeType": "InheritanceSpecifier", + "src": "1086:6:100" + } + ], + "contractDependencies": [ + 22, + 9773, + 12570 + ], + "contractKind": "contract", + "documentation": { + "id": 11322, + "nodeType": "StructuredDocumentation", + "src": "336:712:100", + "text": " @dev Implementation of the {IERC777} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n Support for ERC20 is included in this contract, as specified by the EIP: both\n the ERC777 and ERC20 interfaces can be safely used when interacting with it.\n Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token\n movements.\n Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there\n are no special restrictions in the amount of tokens that created, moved, or\n destroyed. This makes integration with ERC20 applications seamless." + }, + "fullyImplemented": true, + "id": 12411, + "linearizedBaseContracts": [ + 12411, + 9773, + 12570, + 22 + ], + "name": "ERC777", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 11331, + "libraryName": { + "contractScope": null, + "id": 11329, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "1105:8:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1099:27:100", + "typeName": { + "id": 11330, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1118:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 11334, + "libraryName": { + "contractScope": null, + "id": 11332, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "1137:7:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "1131:26:100", + "typeName": { + "id": 11333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1149:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": true, + "id": 11339, + "mutability": "constant", + "name": "_ERC1820_REGISTRY", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1163:115:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + }, + "typeName": { + "contractScope": null, + "id": 11335, + "name": "IERC1820Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2152, + "src": "1163:16:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234", + "id": 11337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1235:42:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11336, + "name": "IERC1820Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2152, + "src": "1218:16:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1820Registry_$2152_$", + "typeString": "type(contract IERC1820Registry)" + } + }, + "id": 11338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1218:60:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11343, + "mutability": "mutable", + "name": "_balances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1285:45:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 11342, + "keyType": { + "id": 11340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1293:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1285:27:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 11341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1304:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11345, + "mutability": "mutable", + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1337:28:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11344, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1337:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11347, + "mutability": "mutable", + "name": "_name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1372:20:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 11346, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1372:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11349, + "mutability": "mutable", + "name": "_symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1398:22:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 11348, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1398:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 11352, + "mutability": "constant", + "name": "_TOKENS_SENDER_INTERFACE_HASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1635:131:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1635:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307832396464623538396231666235666337636633393439363163316164663566386336343534373631616466373935653637666531343966363538616265383935", + "id": 11351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1700:66:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18936552921575092301472466748482491067159488139731697543124572343800628504725_by_1", + "typeString": "int_const 1893...(69 digits omitted)...4725" + }, + "value": "0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 11355, + "mutability": "constant", + "name": "_TOKENS_RECIPIENT_INTERFACE_HASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "1815:134:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11353, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1815:7:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307862323831666338633132393534643232353434646234356465333135396133393237323839356231363961383532623331346639636337363265343463353362", + "id": 11354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1883:66:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_80741353335606793576644178559265408063696393279619534167571325834855102858555_by_1", + "typeString": "int_const 8074...(69 digits omitted)...8555" + }, + "value": "0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 11358, + "mutability": "mutable", + "name": "_defaultOperatorsArray", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "2048:40:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 11356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2048:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11357, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2048:9:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11362, + "mutability": "mutable", + "name": "_defaultOperators", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "2182:50:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 11361, + "keyType": { + "id": 11359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2190:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2182:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 11360, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2201:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11368, + "mutability": "mutable", + "name": "_operators", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "2322:63:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 11367, + "keyType": { + "id": 11363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2330:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2322:44:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 11366, + "keyType": { + "id": 11364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2349:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2341:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 11365, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2360:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11374, + "mutability": "mutable", + "name": "_revokedDefaultOperators", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "2391:77:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 11373, + "keyType": { + "id": 11369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2399:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2391:44:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 11372, + "keyType": { + "id": 11370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2418:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2410:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 11371, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2429:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 11380, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12411, + "src": "2499:69:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 11379, + "keyType": { + "id": 11375, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2508:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2499:49:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 11378, + "keyType": { + "id": 11376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2528:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2519:28:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 11377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2539:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 11456, + "nodeType": "Block", + "src": "2771:497:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11391, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11347, + "src": "2781:5:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11392, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11383, + "src": "2789:4:100", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2781:12:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 11394, + "nodeType": "ExpressionStatement", + "src": "2781:12:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 11397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11395, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11349, + "src": "2803:7:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11396, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11385, + "src": "2813:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2803:16:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 11398, + "nodeType": "ExpressionStatement", + "src": "2803:16:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 11401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11399, + "name": "_defaultOperatorsArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11358, + "src": "2830:22:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 11400, + "name": "defaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11388, + "src": "2855:16:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2830:41:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 11402, + "nodeType": "ExpressionStatement", + "src": "2830:41:100" + }, + { + "body": { + "id": 11422, + "nodeType": "Block", + "src": "2941:76:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11414, + "name": "_defaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11362, + "src": "2955:17:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11418, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11415, + "name": "_defaultOperatorsArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11358, + "src": "2973:22:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 11417, + "indexExpression": { + "argumentTypes": null, + "id": 11416, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11404, + "src": "2996:1:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2973:25:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2955:44:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3002:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2955:51:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11421, + "nodeType": "ExpressionStatement", + "src": "2955:51:100" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11407, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11404, + "src": "2901:1:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 11408, + "name": "_defaultOperatorsArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11358, + "src": "2905:22:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 11409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2905:29:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2901:33:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11423, + "initializationExpression": { + "assignments": [ + 11404 + ], + "declarations": [ + { + "constant": false, + "id": 11404, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11423, + "src": "2886:9:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2886:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11406, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 11405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2898:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2886:13:100" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 11412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2936:3:100", + "subExpression": { + "argumentTypes": null, + "id": 11411, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11404, + "src": "2936:1:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11413, + "nodeType": "ExpressionStatement", + "src": "2936:3:100" + }, + "nodeType": "ForStatement", + "src": "2881:136:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11429, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3108:4:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + ], + "id": 11428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3100:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3100:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3100:13:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243373737546f6b656e", + "id": 11432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3125:13:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054", + "typeString": "literal_string \"ERC777Token\"" + }, + "value": "ERC777Token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054", + "typeString": "literal_string \"ERC777Token\"" + } + ], + "id": 11431, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3115:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3115:24:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11436, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3149:4:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + ], + "id": 11435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3141:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3141:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3141:13:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11424, + "name": "_ERC1820_REGISTRY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11339, + "src": "3058:17:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + } + }, + "id": 11426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setInterfaceImplementer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2091, + "src": "3058:41:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,bytes32,address) external" + } + }, + "id": 11438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3058:97:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11439, + "nodeType": "ExpressionStatement", + "src": "3058:97:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11445, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3215:4:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + ], + "id": 11444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3207:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3207:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3207:13:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "4552433230546f6b656e", + "id": 11448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3232:12:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a", + "typeString": "literal_string \"ERC20Token\"" + }, + "value": "ERC20Token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_aea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a", + "typeString": "literal_string \"ERC20Token\"" + } + ], + "id": 11447, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3222:9:100", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 11449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3222:23:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11452, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3255:4:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777_$12411", + "typeString": "contract ERC777" + } + ], + "id": 11451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3247:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3247:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3247:13:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 11440, + "name": "_ERC1820_REGISTRY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11339, + "src": "3165:17:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + } + }, + "id": 11442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setInterfaceImplementer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2091, + "src": "3165:41:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,bytes32,address) external" + } + }, + "id": 11454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3165:96:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11455, + "nodeType": "ExpressionStatement", + "src": "3165:96:100" + } + ] + }, + "documentation": { + "id": 11381, + "nodeType": "StructuredDocumentation", + "src": "2575:65:100", + "text": " @dev `defaultOperators` may be an empty array." + }, + "id": 11457, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11383, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11457, + "src": "2666:18:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11382, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2666:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11385, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11457, + "src": "2694:20:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11384, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2694:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11388, + "mutability": "mutable", + "name": "defaultOperators", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11457, + "src": "2724:33:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 11386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2724:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11387, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2724:9:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2656:107:100" + }, + "returnParameters": { + "id": 11390, + "nodeType": "ParameterList", + "parameters": [], + "src": "2771:0:100" + }, + "scope": 12411, + "src": "2645:623:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12420 + ], + "body": { + "id": 11466, + "nodeType": "Block", + "src": "3383:29:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11464, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11347, + "src": "3400:5:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 11463, + "id": 11465, + "nodeType": "Return", + "src": "3393:12:100" + } + ] + }, + "documentation": { + "id": 11458, + "nodeType": "StructuredDocumentation", + "src": "3274:43:100", + "text": " @dev See {IERC777-name}." + }, + "functionSelector": "06fdde03", + "id": 11467, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11460, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3350:8:100" + }, + "parameters": { + "id": 11459, + "nodeType": "ParameterList", + "parameters": [], + "src": "3335:2:100" + }, + "returnParameters": { + "id": 11463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11462, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11467, + "src": "3368:13:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11461, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3368:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3367:15:100" + }, + "scope": 12411, + "src": "3322:90:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12426 + ], + "body": { + "id": 11476, + "nodeType": "Block", + "src": "3531:31:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11474, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11349, + "src": "3548:7:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 11473, + "id": 11475, + "nodeType": "Return", + "src": "3541:14:100" + } + ] + }, + "documentation": { + "id": 11468, + "nodeType": "StructuredDocumentation", + "src": "3418:45:100", + "text": " @dev See {IERC777-symbol}." + }, + "functionSelector": "95d89b41", + "id": 11477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11470, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3498:8:100" + }, + "parameters": { + "id": 11469, + "nodeType": "ParameterList", + "parameters": [], + "src": "3483:2:100" + }, + "returnParameters": { + "id": 11473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11472, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11477, + "src": "3516:13:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11471, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3516:6:100", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3515:15:100" + }, + "scope": 12411, + "src": "3468:94:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11485, + "nodeType": "Block", + "src": "3794:26:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "3138", + "id": 11483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3811:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 11482, + "id": 11484, + "nodeType": "Return", + "src": "3804:9:100" + } + ] + }, + "documentation": { + "id": 11478, + "nodeType": "StructuredDocumentation", + "src": "3568:173:100", + "text": " @dev See {ERC20-decimals}.\n Always returns 18, as per the\n [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility)." + }, + "functionSelector": "313ce567", + "id": 11486, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11479, + "nodeType": "ParameterList", + "parameters": [], + "src": "3763:2:100" + }, + "returnParameters": { + "id": 11482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11481, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11486, + "src": "3787:5:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11480, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3787:5:100", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3786:7:100" + }, + "scope": 12411, + "src": "3746:74:100", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12432 + ], + "body": { + "id": 11495, + "nodeType": "Block", + "src": "3997:25:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "31", + "id": 11493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4014:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 11492, + "id": 11494, + "nodeType": "Return", + "src": "4007:8:100" + } + ] + }, + "documentation": { + "id": 11487, + "nodeType": "StructuredDocumentation", + "src": "3826:104:100", + "text": " @dev See {IERC777-granularity}.\n This implementation always returns `1`." + }, + "functionSelector": "556f0dc7", + "id": 11496, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "granularity", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11489, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3970:8:100" + }, + "parameters": { + "id": 11488, + "nodeType": "ParameterList", + "parameters": [], + "src": "3955:2:100" + }, + "returnParameters": { + "id": 11492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11491, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11496, + "src": "3988:7:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3988:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3987:9:100" + }, + "scope": 12411, + "src": "3935:87:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9704, + 12438 + ], + "body": { + "id": 11507, + "nodeType": "Block", + "src": "4162:36:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11505, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "4179:12:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11504, + "id": 11506, + "nodeType": "Return", + "src": "4172:19:100" + } + ] + }, + "documentation": { + "id": 11497, + "nodeType": "StructuredDocumentation", + "src": "4028:50:100", + "text": " @dev See {IERC777-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 11508, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11501, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 11499, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "4127:6:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "contractScope": null, + "id": 11500, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12570, + "src": "4135:7:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$12570", + "typeString": "contract IERC777" + } + } + ], + "src": "4118:25:100" + }, + "parameters": { + "id": 11498, + "nodeType": "ParameterList", + "parameters": [], + "src": "4103:2:100" + }, + "returnParameters": { + "id": 11504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11503, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11508, + "src": "4153:7:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4153:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4152:9:100" + }, + "scope": 12411, + "src": "4083:115:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9712, + 12446 + ], + "body": { + "id": 11523, + "nodeType": "Block", + "src": "4394:46:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11519, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "4411:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11521, + "indexExpression": { + "argumentTypes": null, + "id": 11520, + "name": "tokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11511, + "src": "4421:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4411:22:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11518, + "id": 11522, + "nodeType": "Return", + "src": "4404:29:100" + } + ] + }, + "documentation": { + "id": 11509, + "nodeType": "StructuredDocumentation", + "src": "4204:89:100", + "text": " @dev Returns the amount of tokens owned by an account (`tokenHolder`)." + }, + "functionSelector": "70a08231", + "id": 11524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11515, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 11513, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "4359:6:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "contractScope": null, + "id": 11514, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12570, + "src": "4367:7:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$12570", + "typeString": "contract IERC777" + } + } + ], + "src": "4350:25:100" + }, + "parameters": { + "id": 11512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11511, + "mutability": "mutable", + "name": "tokenHolder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11524, + "src": "4317:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4317:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4316:21:100" + }, + "returnParameters": { + "id": 11518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11517, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11524, + "src": "4385:7:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4385:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4384:9:100" + }, + "scope": 12411, + "src": "4298:142:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12456 + ], + "body": { + "id": 11545, + "nodeType": "Block", + "src": "4655:71:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11536, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "4671:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4671:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 11538, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11527, + "src": "4685:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11539, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11529, + "src": "4696:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11540, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11531, + "src": "4704:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4710:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4714:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11535, + "name": "_send", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12102, + "src": "4665:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory,bytes memory,bool)" + } + }, + "id": 11543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4665:54:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11544, + "nodeType": "ExpressionStatement", + "src": "4665:54:100" + } + ] + }, + "documentation": { + "id": 11525, + "nodeType": "StructuredDocumentation", + "src": "4446:119:100", + "text": " @dev See {IERC777-send}.\n Also emits a {IERC20-Transfer} event for ERC20 compatibility." + }, + "functionSelector": "9bd9bbc6", + "id": 11546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "send", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11533, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4645:8:100" + }, + "parameters": { + "id": 11532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11527, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11546, + "src": "4584:17:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4584:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11529, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11546, + "src": "4603:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4603:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11531, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11546, + "src": "4619:17:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11530, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4619:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4583:54:100" + }, + "returnParameters": { + "id": 11534, + "nodeType": "ParameterList", + "parameters": [], + "src": "4655:0:100" + }, + "scope": 12411, + "src": "4570:156:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9722 + ], + "body": { + "id": 11602, + "nodeType": "Block", + "src": "5041:347:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11558, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "5059:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5080:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5072:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11559, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5072:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5072:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5059:23:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 11564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5084:38:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a", + "typeString": "literal_string \"ERC777: transfer to the zero address\"" + }, + "value": "ERC777: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a", + "typeString": "literal_string \"ERC777: transfer to the zero address\"" + } + ], + "id": 11557, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5051:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5051:72:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11566, + "nodeType": "ExpressionStatement", + "src": "5051:72:100" + }, + { + "assignments": [ + 11568 + ], + "declarations": [ + { + "constant": false, + "id": 11568, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11602, + "src": "5134:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11567, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5134:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11571, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11569, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5149:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5149:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5134:27:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11573, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "5190:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11574, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "5196:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11575, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "5202:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11576, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11551, + "src": "5213:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5221:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5225:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 11572, + "name": "_callTokensToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12339, + "src": "5172:17:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 11579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5172:56:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11580, + "nodeType": "ExpressionStatement", + "src": "5172:56:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11582, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "5245:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11583, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "5251:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11584, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "5257:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11585, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11551, + "src": "5268:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5276:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 11581, + "name": "_move", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12249, + "src": "5239:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 11588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5239:44:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11589, + "nodeType": "ExpressionStatement", + "src": "5239:44:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11591, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "5314:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11592, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "5320:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11593, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "5326:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11594, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11551, + "src": "5337:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5345:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5349:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 11597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5353:5:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11590, + "name": "_callTokensReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12397, + "src": "5294:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)" + } + }, + "id": 11598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5294:65:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11599, + "nodeType": "ExpressionStatement", + "src": "5294:65:100" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5377:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11556, + "id": 11601, + "nodeType": "Return", + "src": "5370:11:100" + } + ] + }, + "documentation": { + "id": 11547, + "nodeType": "StructuredDocumentation", + "src": "4732:220:100", + "text": " @dev See {IERC20-transfer}.\n Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient}\n interface if it is a contract.\n Also emits a {Sent} event." + }, + "functionSelector": "a9059cbb", + "id": 11603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11553, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5017:8:100" + }, + "parameters": { + "id": 11552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11549, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11603, + "src": "4975:17:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4975:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11551, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11603, + "src": "4994:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4994:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4974:35:100" + }, + "returnParameters": { + "id": 11556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11555, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11603, + "src": "5035:4:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5035:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5034:6:100" + }, + "scope": 12411, + "src": "4957:431:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12464 + ], + "body": { + "id": 11620, + "nodeType": "Block", + "src": "5584:54:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11613, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5600:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5600:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 11615, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11606, + "src": "5614:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11616, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11608, + "src": "5622:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5628:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 11612, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12188, + "src": "5594:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory,bytes memory)" + } + }, + "id": 11618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5594:37:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11619, + "nodeType": "ExpressionStatement", + "src": "5594:37:100" + } + ] + }, + "documentation": { + "id": 11604, + "nodeType": "StructuredDocumentation", + "src": "5394:119:100", + "text": " @dev See {IERC777-burn}.\n Also emits a {IERC20-Transfer} event for ERC20 compatibility." + }, + "functionSelector": "fe9d9303", + "id": 11621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11610, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5574:8:100" + }, + "parameters": { + "id": 11609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11606, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11621, + "src": "5532:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5532:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11608, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11621, + "src": "5548:17:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5548:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5531:35:100" + }, + "returnParameters": { + "id": 11611, + "nodeType": "ParameterList", + "parameters": [], + "src": "5584:0:100" + }, + "scope": 12411, + "src": "5518:120:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12474 + ], + "body": { + "id": 11654, + "nodeType": "Block", + "src": "5821:193:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11632, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "5838:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 11633, + "name": "tokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "5850:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5838:23:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11635, + "name": "_defaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11362, + "src": "5878:17:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11637, + "indexExpression": { + "argumentTypes": null, + "id": 11636, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "5896:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5878:27:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 11643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5909:48:100", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11638, + "name": "_revokedDefaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11374, + "src": "5910:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11640, + "indexExpression": { + "argumentTypes": null, + "id": 11639, + "name": "tokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "5935:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5910:37:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11642, + "indexExpression": { + "argumentTypes": null, + "id": 11641, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "5948:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5910:47:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5878:79:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 11645, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5877:81:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5838:120:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11647, + "name": "_operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "5974:10:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11649, + "indexExpression": { + "argumentTypes": null, + "id": 11648, + "name": "tokenHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11626, + "src": "5985:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5974:23:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11651, + "indexExpression": { + "argumentTypes": null, + "id": 11650, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "5998:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5974:33:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5838:169:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11631, + "id": 11653, + "nodeType": "Return", + "src": "5831:176:100" + } + ] + }, + "documentation": { + "id": 11622, + "nodeType": "StructuredDocumentation", + "src": "5644:52:100", + "text": " @dev See {IERC777-isOperatorFor}." + }, + "functionSelector": "d95b6371", + "id": 11655, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOperatorFor", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11628, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5797:8:100" + }, + "parameters": { + "id": 11627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11624, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11655, + "src": "5733:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5733:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11626, + "mutability": "mutable", + "name": "tokenHolder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11655, + "src": "5759:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5759:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5723:61:100" + }, + "returnParameters": { + "id": 11631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11630, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11655, + "src": "5815:4:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11629, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5815:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5814:6:100" + }, + "scope": 12411, + "src": "5701:313:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12480 + ], + "body": { + "id": 11699, + "nodeType": "Block", + "src": "6143:343:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11663, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6161:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6161:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 11665, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11658, + "src": "6177:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6161:24:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a20617574686f72697a696e672073656c66206173206f70657261746f72", + "id": 11667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6187:38:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c", + "typeString": "literal_string \"ERC777: authorizing self as operator\"" + }, + "value": "ERC777: authorizing self as operator" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c", + "typeString": "literal_string \"ERC777: authorizing self as operator\"" + } + ], + "id": 11662, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6153:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6153:73:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11669, + "nodeType": "ExpressionStatement", + "src": "6153:73:100" + }, + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11670, + "name": "_defaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11362, + "src": "6241:17:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11672, + "indexExpression": { + "argumentTypes": null, + "id": 11671, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11658, + "src": "6259:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6241:27:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11691, + "nodeType": "Block", + "src": "6356:66:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11682, + "name": "_operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "6370:10:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11686, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11683, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6381:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6381:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6370:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11687, + "indexExpression": { + "argumentTypes": null, + "id": 11685, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11658, + "src": "6395:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6370:34:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6407:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6370:41:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11690, + "nodeType": "ExpressionStatement", + "src": "6370:41:100" + } + ] + }, + "id": 11692, + "nodeType": "IfStatement", + "src": "6237:185:100", + "trueBody": { + "id": 11681, + "nodeType": "Block", + "src": "6270:80:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6284:55:100", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11673, + "name": "_revokedDefaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11374, + "src": "6291:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11676, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11674, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6316:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6316:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6291:38:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11678, + "indexExpression": { + "argumentTypes": null, + "id": 11677, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11658, + "src": "6330:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6291:48:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11680, + "nodeType": "ExpressionStatement", + "src": "6284:55:100" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11694, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11658, + "src": "6456:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11695, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6466:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6466:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11693, + "name": "AuthorizedOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12563, + "src": "6437:18:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 11697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6437:42:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11698, + "nodeType": "EmitStatement", + "src": "6432:47:100" + } + ] + }, + "documentation": { + "id": 11656, + "nodeType": "StructuredDocumentation", + "src": "6020:56:100", + "text": " @dev See {IERC777-authorizeOperator}." + }, + "functionSelector": "959b8c3f", + "id": 11700, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "authorizeOperator", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11660, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6133:8:100" + }, + "parameters": { + "id": 11659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11658, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11700, + "src": "6108:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11657, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6108:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6107:18:100" + }, + "returnParameters": { + "id": 11661, + "nodeType": "ParameterList", + "parameters": [], + "src": "6143:0:100" + }, + "scope": 12411, + "src": "6081:405:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12486 + ], + "body": { + "id": 11744, + "nodeType": "Block", + "src": "6609:337:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11708, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "6627:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11709, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6639:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6639:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6627:24:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a207265766f6b696e672073656c66206173206f70657261746f72", + "id": 11712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6653:35:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5", + "typeString": "literal_string \"ERC777: revoking self as operator\"" + }, + "value": "ERC777: revoking self as operator" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5", + "typeString": "literal_string \"ERC777: revoking self as operator\"" + } + ], + "id": 11707, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6619:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6619:70:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11714, + "nodeType": "ExpressionStatement", + "src": "6619:70:100" + }, + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11715, + "name": "_defaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11362, + "src": "6704:17:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11717, + "indexExpression": { + "argumentTypes": null, + "id": 11716, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "6722:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6704:27:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11736, + "nodeType": "Block", + "src": "6819:66:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6833:41:100", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11728, + "name": "_operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11368, + "src": "6840:10:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11731, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11729, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6851:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6851:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6840:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11733, + "indexExpression": { + "argumentTypes": null, + "id": 11732, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "6865:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6840:34:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11735, + "nodeType": "ExpressionStatement", + "src": "6833:41:100" + } + ] + }, + "id": 11737, + "nodeType": "IfStatement", + "src": "6700:185:100", + "trueBody": { + "id": 11727, + "nodeType": "Block", + "src": "6733:80:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11718, + "name": "_revokedDefaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11374, + "src": "6747:24:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 11722, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11719, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6772:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6772:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6747:38:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 11723, + "indexExpression": { + "argumentTypes": null, + "id": 11721, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "6786:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6747:48:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6798:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6747:55:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11726, + "nodeType": "ExpressionStatement", + "src": "6747:55:100" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11739, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11703, + "src": "6916:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11740, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6926:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6926:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 11738, + "name": "RevokedOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12569, + "src": "6900:15:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 11742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6900:39:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11743, + "nodeType": "EmitStatement", + "src": "6895:44:100" + } + ] + }, + "documentation": { + "id": 11701, + "nodeType": "StructuredDocumentation", + "src": "6492:53:100", + "text": " @dev See {IERC777-revokeOperator}." + }, + "functionSelector": "fad8b32a", + "id": 11745, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revokeOperator", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11705, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6599:8:100" + }, + "parameters": { + "id": 11704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11703, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11745, + "src": "6574:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6574:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6573:18:100" + }, + "returnParameters": { + "id": 11706, + "nodeType": "ParameterList", + "parameters": [], + "src": "6609:0:100" + }, + "scope": 12411, + "src": "6550:396:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12493 + ], + "body": { + "id": 11755, + "nodeType": "Block", + "src": "7088:46:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 11753, + "name": "_defaultOperatorsArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11358, + "src": "7105:22:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 11752, + "id": 11754, + "nodeType": "Return", + "src": "7098:29:100" + } + ] + }, + "documentation": { + "id": 11746, + "nodeType": "StructuredDocumentation", + "src": "6952:55:100", + "text": " @dev See {IERC777-defaultOperators}." + }, + "functionSelector": "06e48538", + "id": 11756, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "defaultOperators", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11748, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7052:8:100" + }, + "parameters": { + "id": 11747, + "nodeType": "ParameterList", + "parameters": [], + "src": "7037:2:100" + }, + "returnParameters": { + "id": 11752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11751, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11756, + "src": "7070:16:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 11749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7070:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 11750, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7070:9:100", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7069:18:100" + }, + "scope": 12411, + "src": "7012:122:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12507 + ], + "body": { + "id": 11789, + "nodeType": "Block", + "src": "7442:177:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11773, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7474:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7474:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 11775, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11759, + "src": "7488:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11772, + "name": "isOperatorFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11655, + "src": "7460:13:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 11776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7460:35:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c646572", + "id": 11777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7497:46:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235", + "typeString": "literal_string \"ERC777: caller is not an operator for holder\"" + }, + "value": "ERC777: caller is not an operator for holder" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235", + "typeString": "literal_string \"ERC777: caller is not an operator for holder\"" + } + ], + "id": 11771, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7452:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7452:92:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11779, + "nodeType": "ExpressionStatement", + "src": "7452:92:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11781, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11759, + "src": "7560:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11782, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11761, + "src": "7568:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11783, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11763, + "src": "7579:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11784, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11765, + "src": "7587:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 11785, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11767, + "src": "7593:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7607:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11780, + "name": "_send", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12102, + "src": "7554:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory,bytes memory,bool)" + } + }, + "id": 11787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7554:58:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11788, + "nodeType": "ExpressionStatement", + "src": "7554:58:100" + } + ] + }, + "documentation": { + "id": 11757, + "nodeType": "StructuredDocumentation", + "src": "7140:108:100", + "text": " @dev See {IERC777-operatorSend}.\n Emits {Sent} and {IERC20-Transfer} events." + }, + "functionSelector": "62ad1b83", + "id": 11790, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "operatorSend", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11769, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7429:8:100" + }, + "parameters": { + "id": 11768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11759, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11790, + "src": "7284:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7284:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11761, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11790, + "src": "7308:17:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7308:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11763, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11790, + "src": "7335:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7335:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11765, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11790, + "src": "7359:17:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7359:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11767, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11790, + "src": "7386:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11766, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7386:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7274:143:100" + }, + "returnParameters": { + "id": 11770, + "nodeType": "ParameterList", + "parameters": [], + "src": "7442:0:100" + }, + "scope": 12411, + "src": "7253:366:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 12519 + ], + "body": { + "id": 11819, + "nodeType": "Block", + "src": "7857:162:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11805, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "7889:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7889:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 11807, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11793, + "src": "7903:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11804, + "name": "isOperatorFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11655, + "src": "7875:13:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 11808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7875:36:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c646572", + "id": 11809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7913:46:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235", + "typeString": "literal_string \"ERC777: caller is not an operator for holder\"" + }, + "value": "ERC777: caller is not an operator for holder" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235", + "typeString": "literal_string \"ERC777: caller is not an operator for holder\"" + } + ], + "id": 11803, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7867:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7867:93:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11811, + "nodeType": "ExpressionStatement", + "src": "7867:93:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11813, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11793, + "src": "7976:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11814, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11795, + "src": "7985:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 11815, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11797, + "src": "7993:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 11816, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11799, + "src": "7999:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11812, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12188, + "src": "7970:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory,bytes memory)" + } + }, + "id": 11817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7970:42:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11818, + "nodeType": "ExpressionStatement", + "src": "7970:42:100" + } + ] + }, + "documentation": { + "id": 11791, + "nodeType": "StructuredDocumentation", + "src": "7625:110:100", + "text": " @dev See {IERC777-operatorBurn}.\n Emits {Burned} and {IERC20-Transfer} events." + }, + "functionSelector": "fc673c4f", + "id": 11820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "operatorBurn", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11801, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7848:8:100" + }, + "parameters": { + "id": 11800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11793, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11820, + "src": "7762:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7762:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11795, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11820, + "src": "7779:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7779:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11797, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11820, + "src": "7795:17:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11796, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7795:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11799, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11820, + "src": "7814:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11798, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7814:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7761:79:100" + }, + "returnParameters": { + "id": 11802, + "nodeType": "ParameterList", + "parameters": [], + "src": "7857:0:100" + }, + "scope": 12411, + "src": "7740:279:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9732 + ], + "body": { + "id": 11837, + "nodeType": "Block", + "src": "8349:52:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11831, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "8366:11:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 11833, + "indexExpression": { + "argumentTypes": null, + "id": 11832, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11823, + "src": "8378:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8366:19:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11835, + "indexExpression": { + "argumentTypes": null, + "id": 11834, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11825, + "src": "8386:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8366:28:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11830, + "id": 11836, + "nodeType": "Return", + "src": "8359:35:100" + } + ] + }, + "documentation": { + "id": 11821, + "nodeType": "StructuredDocumentation", + "src": "8025:228:100", + "text": " @dev See {IERC20-allowance}.\n Note that operator and allowance concepts are orthogonal: operators may\n not have allowance, and accounts with allowance may not be operators\n themselves." + }, + "functionSelector": "dd62ed3e", + "id": 11838, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11827, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8322:8:100" + }, + "parameters": { + "id": 11826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11823, + "mutability": "mutable", + "name": "holder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11838, + "src": "8277:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11822, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8277:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11825, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11838, + "src": "8293:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11824, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8293:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8276:33:100" + }, + "returnParameters": { + "id": 11830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11829, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11838, + "src": "8340:7:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8340:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8339:9:100" + }, + "scope": 12411, + "src": "8258:143:100", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9742 + ], + "body": { + "id": 11862, + "nodeType": "Block", + "src": "8619:109:100", + "statements": [ + { + "assignments": [ + 11850 + ], + "declarations": [ + { + "constant": false, + "id": 11850, + "mutability": "mutable", + "name": "holder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11862, + "src": "8629:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8629:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11853, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11851, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "8646:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8646:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8629:29:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11855, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11850, + "src": "8677:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11856, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11841, + "src": "8685:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11857, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11843, + "src": "8694:5:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11854, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12294, + "src": "8668:8:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8668:32:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11859, + "nodeType": "ExpressionStatement", + "src": "8668:32:100" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8717:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11848, + "id": 11861, + "nodeType": "Return", + "src": "8710:11:100" + } + ] + }, + "documentation": { + "id": 11839, + "nodeType": "StructuredDocumentation", + "src": "8407:127:100", + "text": " @dev See {IERC20-approve}.\n Note that accounts cannot have allowance issued by their operators." + }, + "functionSelector": "095ea7b3", + "id": 11863, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11845, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8595:8:100" + }, + "parameters": { + "id": 11844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11841, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11863, + "src": "8556:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11840, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8556:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11843, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11863, + "src": "8573:13:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8573:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8555:32:100" + }, + "returnParameters": { + "id": 11848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11847, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11863, + "src": "8613:4:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11846, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8613:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8612:6:100" + }, + "scope": 12411, + "src": "8539:189:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9754 + ], + "body": { + "id": 11945, + "nodeType": "Block", + "src": "9197:568:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11877, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11868, + "src": "9215:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9236:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9228:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9228:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9228:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9215:23:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 11883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9240:38:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a", + "typeString": "literal_string \"ERC777: transfer to the zero address\"" + }, + "value": "ERC777: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a", + "typeString": "literal_string \"ERC777: transfer to the zero address\"" + } + ], + "id": 11876, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9207:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9207:72:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11885, + "nodeType": "ExpressionStatement", + "src": "9207:72:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11887, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "9297:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9315:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9307:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9307:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9307:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9297:20:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 11893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9319:40:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a", + "typeString": "literal_string \"ERC777: transfer from the zero address\"" + }, + "value": "ERC777: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a", + "typeString": "literal_string \"ERC777: transfer from the zero address\"" + } + ], + "id": 11886, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9289:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9289:71:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11895, + "nodeType": "ExpressionStatement", + "src": "9289:71:100" + }, + { + "assignments": [ + 11897 + ], + "declarations": [ + { + "constant": false, + "id": 11897, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11945, + "src": "9371:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11896, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9371:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11900, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11898, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "9389:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9389:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9371:30:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11902, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11897, + "src": "9430:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11903, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "9439:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11904, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11868, + "src": "9447:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11905, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11870, + "src": "9458:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9466:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9470:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 11901, + "name": "_callTokensToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12339, + "src": "9412:17:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 11908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9412:61:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11909, + "nodeType": "ExpressionStatement", + "src": "9412:61:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11911, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11897, + "src": "9490:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11912, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "9499:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11913, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11868, + "src": "9507:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11914, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11870, + "src": "9518:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9526:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9530:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 11910, + "name": "_move", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12249, + "src": "9484:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 11917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9484:49:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11918, + "nodeType": "ExpressionStatement", + "src": "9484:49:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11920, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "9552:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11921, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11897, + "src": "9560:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11928, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11870, + "src": "9602:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 11929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9610:43:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d8bf23f1408d4800b3aee66cb36df9b55f0e49735257afe214dda2085ed7cd5c", + "typeString": "literal_string \"ERC777: transfer amount exceeds allowance\"" + }, + "value": "ERC777: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_d8bf23f1408d4800b3aee66cb36df9b55f0e49735257afe214dda2085ed7cd5c", + "typeString": "literal_string \"ERC777: transfer amount exceeds allowance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11922, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "9569:11:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 11924, + "indexExpression": { + "argumentTypes": null, + "id": 11923, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "9581:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9569:19:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11926, + "indexExpression": { + "argumentTypes": null, + "id": 11925, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11897, + "src": "9589:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9569:28:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "9569:32:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 11930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9569:85:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11919, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12294, + "src": "9543:8:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 11931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9543:112:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11932, + "nodeType": "ExpressionStatement", + "src": "9543:112:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11934, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11897, + "src": "9686:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11935, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11866, + "src": "9695:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11936, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11868, + "src": "9703:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11937, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11870, + "src": "9714:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9722:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 11939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9726:2:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 11940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9730:5:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11933, + "name": "_callTokensReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12397, + "src": "9666:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)" + } + }, + "id": 11941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9666:70:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11942, + "nodeType": "ExpressionStatement", + "src": "9666:70:100" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 11943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9754:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 11875, + "id": 11944, + "nodeType": "Return", + "src": "9747:11:100" + } + ] + }, + "documentation": { + "id": 11864, + "nodeType": "StructuredDocumentation", + "src": "8733:355:100", + "text": " @dev See {IERC20-transferFrom}.\n Note that operator and allowance concepts are orthogonal: operators cannot\n call `transferFrom` (unless they have allowance), and accounts with\n allowance cannot call `operatorSend` (unless they are operators).\n Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events." + }, + "functionSelector": "23b872dd", + "id": 11946, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 11872, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9173:8:100" + }, + "parameters": { + "id": 11871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11866, + "mutability": "mutable", + "name": "holder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11946, + "src": "9115:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9115:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11868, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11946, + "src": "9131:17:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11867, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9131:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11870, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11946, + "src": "9150:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9150:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9114:51:100" + }, + "returnParameters": { + "id": 11875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11874, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11946, + "src": "9191:4:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11873, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9191:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9190:6:100" + }, + "scope": 12411, + "src": "9093:672:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12031, + "nodeType": "Block", + "src": "10496:564:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 11959, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "10514:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10533:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10525:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10525:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10525:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10514:21:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a206d696e7420746f20746865207a65726f2061646472657373", + "id": 11965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10537:34:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080", + "typeString": "literal_string \"ERC777: mint to the zero address\"" + }, + "value": "ERC777: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080", + "typeString": "literal_string \"ERC777: mint to the zero address\"" + } + ], + "id": 11958, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10506:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 11966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10506:66:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11967, + "nodeType": "ExpressionStatement", + "src": "10506:66:100" + }, + { + "assignments": [ + 11969 + ], + "declarations": [ + { + "constant": false, + "id": 11969, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12031, + "src": "10583:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10583:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 11972, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11970, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "10602:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 11971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10602:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10583:31:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11974, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11969, + "src": "10646:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 11977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10664:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10656:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10656:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 11978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10656:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 11979, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "10668:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 11980, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11951, + "src": "10677:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11973, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12410, + "src": "10625:20:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 11981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10625:59:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11982, + "nodeType": "ExpressionStatement", + "src": "10625:59:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 11988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11983, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "10729:12:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11986, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11951, + "src": "10761:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 11984, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "10744:12:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "10744:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10744:24:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10729:39:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11989, + "nodeType": "ExpressionStatement", + "src": "10729:39:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 11999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11990, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "10778:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11992, + "indexExpression": { + "argumentTypes": null, + "id": 11991, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "10788:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10778:18:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 11997, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11951, + "src": "10822:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 11993, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "10799:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 11995, + "indexExpression": { + "argumentTypes": null, + "id": 11994, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "10809:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10799:18:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "10799:22:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 11998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10799:30:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10778:51:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12000, + "nodeType": "ExpressionStatement", + "src": "10778:51:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12002, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11969, + "src": "10860:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10878:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12004, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10870:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12003, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10870:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10870:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12007, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "10882:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12008, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11951, + "src": "10891:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12009, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11953, + "src": "10899:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12010, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11955, + "src": "10909:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 12011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10923:4:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 12001, + "name": "_callTokensReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12397, + "src": "10840:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)" + } + }, + "id": 12012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10840:88:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12013, + "nodeType": "ExpressionStatement", + "src": "10840:88:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12015, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11969, + "src": "10951:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12016, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "10961:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12017, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11951, + "src": "10970:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12018, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11953, + "src": "10978:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12019, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11955, + "src": "10988:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12014, + "name": "Minted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12545, + "src": "10944:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 12020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10944:57:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12021, + "nodeType": "EmitStatement", + "src": "10939:62:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11033:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11025:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11025:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11025:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12027, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11949, + "src": "11037:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12028, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11951, + "src": "11046:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12022, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9763, + "src": "11016:8:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 12029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11016:37:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12030, + "nodeType": "EmitStatement", + "src": "11011:42:100" + } + ] + }, + "documentation": { + "id": 11947, + "nodeType": "StructuredDocumentation", + "src": "9771:559:100", + "text": " @dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n If a send hook is registered for `account`, the corresponding function\n will be called with `operator`, `data` and `operatorData`.\n See {IERC777Sender} and {IERC777Recipient}.\n Emits {Minted} and {IERC20-Transfer} events.\n Requirements\n - `account` cannot be the zero address.\n - if `account` is a contract, it must implement the {IERC777Recipient}\n interface." + }, + "id": 12032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11949, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12032, + "src": "10359:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10359:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11951, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12032, + "src": "10384:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10384:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11953, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12032, + "src": "10408:21:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11952, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10408:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11955, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12032, + "src": "10439:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11954, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10439:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10349:121:100" + }, + "returnParameters": { + "id": 11957, + "nodeType": "ParameterList", + "parameters": [], + "src": "10496:0:100" + }, + "scope": 12411, + "src": "10335:725:100", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12101, + "nodeType": "Block", + "src": "11744:446:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12049, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12035, + "src": "11762:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11778:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11770:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12050, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11770:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11770:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11762:18:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a2073656e642066726f6d20746865207a65726f2061646472657373", + "id": 12055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11782:36:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401", + "typeString": "literal_string \"ERC777: send from the zero address\"" + }, + "value": "ERC777: send from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401", + "typeString": "literal_string \"ERC777: send from the zero address\"" + } + ], + "id": 12048, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11754:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11754:65:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12057, + "nodeType": "ExpressionStatement", + "src": "11754:65:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12059, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12037, + "src": "11837:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11851:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11843:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11843:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11843:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11837:16:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a2073656e6420746f20746865207a65726f2061646472657373", + "id": 12065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11855:34:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3", + "typeString": "literal_string \"ERC777: send to the zero address\"" + }, + "value": "ERC777: send to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3", + "typeString": "literal_string \"ERC777: send to the zero address\"" + } + ], + "id": 12058, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11829:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11829:61:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12067, + "nodeType": "ExpressionStatement", + "src": "11829:61:100" + }, + { + "assignments": [ + 12069 + ], + "declarations": [ + { + "constant": false, + "id": 12069, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12101, + "src": "11901:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11901:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12072, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12070, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "11920:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 12071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11920:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11901:31:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12074, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "11961:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12075, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12035, + "src": "11971:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12076, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12037, + "src": "11977:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12077, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12039, + "src": "11981:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12078, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12041, + "src": "11989:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12079, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12043, + "src": "11999:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12073, + "name": "_callTokensToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12339, + "src": "11943:17:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 12080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11943:69:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12081, + "nodeType": "ExpressionStatement", + "src": "11943:69:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12083, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "12029:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12084, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12035, + "src": "12039:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12085, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12037, + "src": "12045:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12086, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12039, + "src": "12049:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12087, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12041, + "src": "12057:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12088, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12043, + "src": "12067:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12082, + "name": "_move", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12249, + "src": "12023:5:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 12089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12023:57:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12090, + "nodeType": "ExpressionStatement", + "src": "12023:57:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12092, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12069, + "src": "12111:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12093, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12035, + "src": "12121:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12094, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12037, + "src": "12127:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12095, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12039, + "src": "12131:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12096, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12041, + "src": "12139:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12097, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12043, + "src": "12149:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12098, + "name": "requireReceptionAck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12045, + "src": "12163:19:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 12091, + "name": "_callTokensReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12397, + "src": "12091:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)" + } + }, + "id": 12099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12091:92:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12100, + "nodeType": "ExpressionStatement", + "src": "12091:92:100" + } + ] + }, + "documentation": { + "id": 12033, + "nodeType": "StructuredDocumentation", + "src": "11066:465:100", + "text": " @dev Send tokens\n @param from address token holder address\n @param to address recipient address\n @param amount uint256 amount of tokens to transfer\n @param userData bytes extra information provided by the token holder (if any)\n @param operatorData bytes extra information provided by the operator (if any)\n @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient" + }, + "id": 12102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_send", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12035, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12102, + "src": "11560:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11560:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12037, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12102, + "src": "11582:10:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11582:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12039, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12102, + "src": "11602:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11602:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12041, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12102, + "src": "11626:21:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12040, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11626:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12043, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12102, + "src": "11657:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12042, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11657:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12045, + "mutability": "mutable", + "name": "requireReceptionAck", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12102, + "src": "11692:24:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11692:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11550:172:100" + }, + "returnParameters": { + "id": 12047, + "nodeType": "ParameterList", + "parameters": [], + "src": "11744:0:100" + }, + "scope": 12411, + "src": "11536:654:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12187, + "nodeType": "Block", + "src": "12653:568:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12115, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "12671:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12687:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12679:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12116, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12679:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12679:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12671:18:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 12121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12691:36:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c", + "typeString": "literal_string \"ERC777: burn from the zero address\"" + }, + "value": "ERC777: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c", + "typeString": "literal_string \"ERC777: burn from the zero address\"" + } + ], + "id": 12114, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12663:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12663:65:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12123, + "nodeType": "ExpressionStatement", + "src": "12663:65:100" + }, + { + "assignments": [ + 12125 + ], + "declarations": [ + { + "constant": false, + "id": 12125, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12187, + "src": "12739:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12739:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12128, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12126, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "12758:10:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 12127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12758:12:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12739:31:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12130, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12125, + "src": "12802:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12131, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "12812:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12826:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12818:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12818:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12818:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12136, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12107, + "src": "12830:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12129, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12410, + "src": "12781:20:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 12137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12781:56:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12138, + "nodeType": "ExpressionStatement", + "src": "12781:56:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12140, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12125, + "src": "12866:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12141, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "12876:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12890:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12882:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12882:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12882:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12146, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12107, + "src": "12894:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12147, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12109, + "src": "12902:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12148, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12111, + "src": "12908:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12139, + "name": "_callTokensToSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12339, + "src": "12848:17:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 12149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12848:73:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12150, + "nodeType": "ExpressionStatement", + "src": "12848:73:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 12161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12151, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "12966:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12153, + "indexExpression": { + "argumentTypes": null, + "id": 12152, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "12976:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "12966:15:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12158, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12107, + "src": "13004:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 12159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13012:37:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe", + "typeString": "literal_string \"ERC777: burn amount exceeds balance\"" + }, + "value": "ERC777: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe", + "typeString": "literal_string \"ERC777: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12154, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "12984:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12156, + "indexExpression": { + "argumentTypes": null, + "id": 12155, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "12994:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12984:15:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "12984:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 12160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12984:66:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12966:84:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12162, + "nodeType": "ExpressionStatement", + "src": "12966:84:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 12168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 12163, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "13060:12:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12166, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12107, + "src": "13092:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 12164, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11345, + "src": "13075:12:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "13075:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 12167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13075:24:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13060:39:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12169, + "nodeType": "ExpressionStatement", + "src": "13060:39:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12171, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12125, + "src": "13122:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12172, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "13132:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12173, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12107, + "src": "13138:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12174, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12109, + "src": "13146:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12175, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12111, + "src": "13152:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12170, + "name": "Burned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12557, + "src": "13115:6:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 12176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13115:50:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12177, + "nodeType": "EmitStatement", + "src": "13110:55:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12179, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12105, + "src": "13189:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13203:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13195:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13195:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13195:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 12184, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12107, + "src": "13207:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12178, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9763, + "src": "13180:8:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 12185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13180:34:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12186, + "nodeType": "EmitStatement", + "src": "13175:39:100" + } + ] + }, + "documentation": { + "id": 12103, + "nodeType": "StructuredDocumentation", + "src": "12196:294:100", + "text": " @dev Burn tokens\n @param from address token holder address\n @param amount uint256 amount of tokens to burn\n @param data bytes extra information provided by the token holder\n @param operatorData bytes extra information provided by the operator (if any)" + }, + "id": 12188, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12105, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12188, + "src": "12519:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12519:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12107, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12188, + "src": "12541:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12541:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12109, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12188, + "src": "12565:17:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12108, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12565:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12111, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12188, + "src": "12592:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12110, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12592:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12509:114:100" + }, + "returnParameters": { + "id": 12113, + "nodeType": "ParameterList", + "parameters": [], + "src": "12653:0:100" + }, + "scope": 12411, + "src": "12495:726:100", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 12248, + "nodeType": "Block", + "src": "13426:328:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12204, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12190, + "src": "13457:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12205, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12192, + "src": "13467:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12206, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "13473:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12207, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "13477:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12203, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12410, + "src": "13436:20:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 12208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13436:48:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12209, + "nodeType": "ExpressionStatement", + "src": "13436:48:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 12220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12210, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "13495:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12212, + "indexExpression": { + "argumentTypes": null, + "id": 12211, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12192, + "src": "13505:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13495:15:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12217, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "13533:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 12218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13541:41:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b", + "typeString": "literal_string \"ERC777: transfer amount exceeds balance\"" + }, + "value": "ERC777: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b", + "typeString": "literal_string \"ERC777: transfer amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12213, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "13513:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12215, + "indexExpression": { + "argumentTypes": null, + "id": 12214, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12192, + "src": "13523:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13513:15:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "13513:19:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 12219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13513:70:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13495:88:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12221, + "nodeType": "ExpressionStatement", + "src": "13495:88:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 12231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12222, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "13593:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12224, + "indexExpression": { + "argumentTypes": null, + "id": 12223, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "13603:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13593:13:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12229, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "13627:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12225, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11343, + "src": "13609:9:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12227, + "indexExpression": { + "argumentTypes": null, + "id": 12226, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "13619:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13609:13:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "13609:17:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 12230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13609:25:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13593:41:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12232, + "nodeType": "ExpressionStatement", + "src": "13593:41:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12234, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12190, + "src": "13655:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12235, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12192, + "src": "13665:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12236, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "13671:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12237, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "13675:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12238, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12198, + "src": "13683:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12239, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12200, + "src": "13693:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12233, + "name": "Sent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12533, + "src": "13650:4:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)" + } + }, + "id": 12240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13650:56:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12241, + "nodeType": "EmitStatement", + "src": "13645:61:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12243, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12192, + "src": "13730:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12244, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12194, + "src": "13736:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12245, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "13740:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12242, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9763, + "src": "13721:8:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 12246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13721:26:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12247, + "nodeType": "EmitStatement", + "src": "13716:31:100" + } + ] + }, + "documentation": null, + "id": 12249, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_move", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12190, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12249, + "src": "13251:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13251:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12192, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12249, + "src": "13277:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13277:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12194, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12249, + "src": "13299:10:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13299:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12196, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12249, + "src": "13319:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13319:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12198, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12249, + "src": "13343:21:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12197, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13343:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12200, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12249, + "src": "13374:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12199, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13374:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13241:164:100" + }, + "returnParameters": { + "id": 12202, + "nodeType": "ParameterList", + "parameters": [], + "src": "13426:0:100" + }, + "scope": 12411, + "src": "13227:527:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 12293, + "nodeType": "Block", + "src": "13967:260:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12260, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12252, + "src": "13985:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14003:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13995:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13995:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13995:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13985:20:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 12266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14007:39:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7", + "typeString": "literal_string \"ERC777: approve from the zero address\"" + }, + "value": "ERC777: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7", + "typeString": "literal_string \"ERC777: approve from the zero address\"" + } + ], + "id": 12259, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13977:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13977:70:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12268, + "nodeType": "ExpressionStatement", + "src": "13977:70:100" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12270, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12254, + "src": "14065:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14084:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14076:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14076:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14076:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14065:21:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 12276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14088:37:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d", + "typeString": "literal_string \"ERC777: approve to the zero address\"" + }, + "value": "ERC777: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d", + "typeString": "literal_string \"ERC777: approve to the zero address\"" + } + ], + "id": 12269, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14057:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14057:69:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12278, + "nodeType": "ExpressionStatement", + "src": "14057:69:100" + }, + { + "expression": { + "argumentTypes": null, + "id": 12285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 12279, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "14137:11:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 12282, + "indexExpression": { + "argumentTypes": null, + "id": 12280, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12252, + "src": "14149:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14137:19:100", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12283, + "indexExpression": { + "argumentTypes": null, + "id": 12281, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12254, + "src": "14157:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14137:28:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 12284, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12256, + "src": "14168:5:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14137:36:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12286, + "nodeType": "ExpressionStatement", + "src": "14137:36:100" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12288, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12252, + "src": "14197:6:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12289, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12254, + "src": "14205:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12290, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12256, + "src": "14214:5:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12287, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9772, + "src": "14188:8:100", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 12291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14188:32:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12292, + "nodeType": "EmitStatement", + "src": "14183:37:100" + } + ] + }, + "documentation": { + "id": 12250, + "nodeType": "StructuredDocumentation", + "src": "13760:127:100", + "text": " @dev See {ERC20-_approve}.\n Note that accounts cannot have allowance issued by their operators." + }, + "id": 12294, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12252, + "mutability": "mutable", + "name": "holder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12294, + "src": "13910:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13910:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12254, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12294, + "src": "13926:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13926:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12256, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12294, + "src": "13943:13:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13943:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13909:48:100" + }, + "returnParameters": { + "id": 12258, + "nodeType": "ParameterList", + "parameters": [], + "src": "13967:0:100" + }, + "scope": 12411, + "src": "13892:335:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12338, + "nodeType": "Block", + "src": "14911:273:100", + "statements": [ + { + "assignments": [ + 12311 + ], + "declarations": [ + { + "constant": false, + "id": 12311, + "mutability": "mutable", + "name": "implementer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12338, + "src": "14921:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14921:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12317, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12314, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "14985:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12315, + "name": "_TOKENS_SENDER_INTERFACE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11352, + "src": "14991:29:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 12312, + "name": "_ERC1820_REGISTRY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11339, + "src": "14943:17:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + } + }, + "id": 12313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getInterfaceImplementer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2101, + "src": "14943:41:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view external returns (address)" + } + }, + "id": 12316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14943:78:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14921:100:100" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12318, + "name": "implementer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12311, + "src": "15035:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15058:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15050:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15050:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15050:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "15035:25:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 12337, + "nodeType": "IfStatement", + "src": "15031:147:100", + "trueBody": { + "id": 12336, + "nodeType": "Block", + "src": "15062:116:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12328, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12297, + "src": "15116:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12329, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "15126:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12330, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12301, + "src": "15132:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12331, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12303, + "src": "15136:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12332, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12305, + "src": "15144:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12333, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12307, + "src": "15154:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12325, + "name": "implementer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12311, + "src": "15090:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12324, + "name": "IERC777Sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12610, + "src": "15076:13:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC777Sender_$12610_$", + "typeString": "type(contract IERC777Sender)" + } + }, + "id": 12326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15076:26:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777Sender_$12610", + "typeString": "contract IERC777Sender" + } + }, + "id": 12327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "tokensToSend", + "nodeType": "MemberAccess", + "referencedDeclaration": 12609, + "src": "15076:39:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory) external" + } + }, + "id": 12334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15076:91:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12335, + "nodeType": "ExpressionStatement", + "src": "15076:91:100" + } + ] + } + } + ] + }, + "documentation": { + "id": 12295, + "nodeType": "StructuredDocumentation", + "src": "14233:462:100", + "text": " @dev Call from.tokensToSend() if the interface is registered\n @param operator address operator requesting the transfer\n @param from address token holder address\n @param to address recipient address\n @param amount uint256 amount of tokens to transfer\n @param userData bytes extra information provided by the token holder (if any)\n @param operatorData bytes extra information provided by the operator (if any)" + }, + "id": 12339, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callTokensToSend", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12297, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12339, + "src": "14736:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14736:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12299, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12339, + "src": "14762:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14762:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12301, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12339, + "src": "14784:10:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14784:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12303, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12339, + "src": "14804:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14804:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12305, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12339, + "src": "14828:21:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12304, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14828:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12307, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12339, + "src": "14859:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12306, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14859:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14726:164:100" + }, + "returnParameters": { + "id": 12309, + "nodeType": "ParameterList", + "parameters": [], + "src": "14911:0:100" + }, + "scope": 12411, + "src": "14700:484:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 12396, + "nodeType": "Block", + "src": "16120:441:100", + "statements": [ + { + "assignments": [ + 12358 + ], + "declarations": [ + { + "constant": false, + "id": 12358, + "mutability": "mutable", + "name": "implementer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12396, + "src": "16130:19:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12357, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16130:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 12364, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12361, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12346, + "src": "16194:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12362, + "name": "_TOKENS_RECIPIENT_INTERFACE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11355, + "src": "16198:32:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 12359, + "name": "_ERC1820_REGISTRY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11339, + "src": "16152:17:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2152", + "typeString": "contract IERC1820Registry" + } + }, + "id": 12360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getInterfaceImplementer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2101, + "src": "16152:41:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,bytes32) view external returns (address)" + } + }, + "id": 12363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16152:79:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16130:101:100" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12365, + "name": "implementer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12358, + "src": "16245:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 12368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16268:1:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 12367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16260:7:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16260:7:100", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 12369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16260:10:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "16245:25:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "id": 12384, + "name": "requireReceptionAck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12354, + "src": "16403:19:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 12394, + "nodeType": "IfStatement", + "src": "16399:156:100", + "trueBody": { + "id": 12393, + "nodeType": "Block", + "src": "16424:131:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16446:16:100", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 12386, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12346, + "src": "16447:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 12639, + "src": "16447:13:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 12388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16447:15:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e74", + "id": 12390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16464:79:100", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80", + "typeString": "literal_string \"ERC777: token recipient contract has no implementer for ERC777TokensRecipient\"" + }, + "value": "ERC777: token recipient contract has no implementer for ERC777TokensRecipient" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80", + "typeString": "literal_string \"ERC777: token recipient contract has no implementer for ERC777TokensRecipient\"" + } + ], + "id": 12385, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16438:7:100", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 12391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16438:106:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12392, + "nodeType": "ExpressionStatement", + "src": "16438:106:100" + } + ] + } + }, + "id": 12395, + "nodeType": "IfStatement", + "src": "16241:314:100", + "trueBody": { + "id": 12383, + "nodeType": "Block", + "src": "16272:121:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12375, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12342, + "src": "16331:8:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12376, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12344, + "src": "16341:4:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12377, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12346, + "src": "16347:2:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 12378, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12348, + "src": "16351:6:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 12379, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12350, + "src": "16359:8:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 12380, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12352, + "src": "16369:12:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 12372, + "name": "implementer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12358, + "src": "16303:11:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12371, + "name": "IERC777Recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12590, + "src": "16286:16:100", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC777Recipient_$12590_$", + "typeString": "type(contract IERC777Recipient)" + } + }, + "id": 12373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16286:29:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777Recipient_$12590", + "typeString": "contract IERC777Recipient" + } + }, + "id": 12374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "tokensReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 12589, + "src": "16286:44:100", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory) external" + } + }, + "id": 12381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16286:96:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12382, + "nodeType": "ExpressionStatement", + "src": "16286:96:100" + } + ] + } + } + ] + }, + "documentation": { + "id": 12340, + "nodeType": "StructuredDocumentation", + "src": "15190:678:100", + "text": " @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but\n tokensReceived() was not registered for the recipient\n @param operator address operator requesting the transfer\n @param from address token holder address\n @param to address recipient address\n @param amount uint256 amount of tokens to transfer\n @param userData bytes extra information provided by the token holder (if any)\n @param operatorData bytes extra information provided by the operator (if any)\n @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient" + }, + "id": 12397, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callTokensReceived", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12342, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "15911:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15911:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12344, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "15937:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12343, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15937:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12346, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "15959:10:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15959:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12348, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "15979:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15979:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12350, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "16003:21:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12349, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16003:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12352, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "16034:25:100", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12351, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16034:5:100", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12354, + "mutability": "mutable", + "name": "requireReceptionAck", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12397, + "src": "16069:24:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12353, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16069:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15901:198:100" + }, + "returnParameters": { + "id": 12356, + "nodeType": "ParameterList", + "parameters": [], + "src": "16120:0:100" + }, + "scope": 12411, + "src": "15873:688:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 12409, + "nodeType": "Block", + "src": "17296:3:100", + "statements": [] + }, + "documentation": { + "id": 12398, + "nodeType": "StructuredDocumentation", + "src": "16567:617:100", + "text": " @dev Hook that is called before any token transfer. This includes\n calls to {send}, {transfer}, {operatorSend}, minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 12410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12400, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12410, + "src": "17219:16:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17219:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12402, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12410, + "src": "17237:12:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12401, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17237:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12404, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12410, + "src": "17251:10:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17251:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12406, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12410, + "src": "17263:14:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17263:7:100", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17218:60:100" + }, + "returnParameters": { + "id": 12408, + "nodeType": "ParameterList", + "parameters": [], + "src": "17296:0:100" + }, + "scope": 12411, + "src": "17189:110:100", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 12412, + "src": "1049:16252:100" + } + ], + "src": "33:17269:100" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200349f3803806200349f833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001d257600080fd5b83820191506020820185811115620001e957600080fd5b82518660208202830111640100000000821117156200020757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200024057808201518184015260208101905062000223565b5050505090500160405250505082600290805190602001906200026592919062000590565b5081600390805190602001906200027e92919062000590565b5080600490805190602001906200029792919062000617565b5060008090505b6004805490508110156200034a5760016005600060048481548110620002c057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506200029e565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e000000000000000000000000000000000000000000815250600b0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200045057600080fd5b505af115801562000465573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f4552433230546f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200056e57600080fd5b505af115801562000583573d6000803e3d6000fd5b5050505050505062000714565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005d357805160ff191683800117855562000604565b8280016001018555821562000604579182015b8281111562000603578251825591602001919060010190620005e6565b5b509050620006139190620006a6565b5090565b82805482825590600052602060002090810192821562000693579160200282015b82811115620006925782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000638565b5b509050620006a29190620006ce565b5090565b620006cb91905b80821115620006c7576000816000905550600101620006ad565b5090565b90565b6200071191905b808211156200070d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620006d5565b5090565b90565b612d7b80620007246000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461074f578063dd62ed3e146107cb578063fad8b32a14610843578063fc673c4f14610887578063fe9d930314610a0357610116565b8063959b8c3f1461053d57806395d89b41146105815780639bd9bbc614610604578063a9059cbb146106e957610116565b806323b872dd116100e957806323b872dd14610281578063313ce56714610307578063556f0dc71461032b57806362ad1b831461034957806370a08231146104e557610116565b806306e485381461011b57806306fdde031461017a578063095ea7b3146101fd57806318160ddd14610263575b600080fd5b610123610ac8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561016657808201518184015260208101905061014b565b505050509050019250505060405180910390f35b610182610b56565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c25780820151818401526020810190506101a7565b50505050905090810190601f1680156101ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102496004803603604081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bf8565b604051808215151515815260200191505060405180910390f35b61026b610c1b565b6040518082815260200191505060405180910390f35b6102ed6004803603606081101561029757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c25565b604051808215151515815260200191505060405180910390f35b61030f610e83565b604051808260ff1660ff16815260200191505060405180910390f35b610333610e8c565b6040518082815260200191505060405180910390f35b6104e3600480360360a081101561035f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111640100000000831117156103fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561045d57600080fd5b82018360208201111561046f57600080fd5b8035906020019184600183028401116401000000008311171561049157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e95565b005b610527600480360360208110156104fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f11565b6040518082815260200191505060405180910390f35b61057f6004803603602081101561055357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f59565b005b6105896111d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c95780820151818401526020810190506105ae565b50505050905090810190601f1680156105f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106e76004803603606081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561066157600080fd5b82018360208201111561067357600080fd5b8035906020019184600183028401116401000000008311171561069557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611272565b005b610735600480360360408110156106ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129c565b604051808215151515815260200191505060405180910390f35b6107b16004803603604081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c0565b604051808215151515815260200191505060405180910390f35b61082d600480360360408110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611571565b6040518082815260200191505060405180910390f35b6108856004803603602081101561085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f8565b005b610a016004803603608081101561089d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108e457600080fd5b8201836020820111156108f657600080fd5b8035906020019184600183028401116401000000008311171561091857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561097b57600080fd5b82018360208201111561098d57600080fd5b803590602001918460018302840111640100000000831117156109af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061186f565b005b610ac660048036036040811015610a1957600080fd5b810190808035906020019092919080359060200190640100000000811115610a4057600080fd5b820183602082011115610a5257600080fd5b80359060200191846001830284011164010000000083111715610a7457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506118e7565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610b4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b02575b5050505050905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bee5780601f10610bc357610100808354040283529160200191610bee565b820191906000526020600020905b815481529060010190602001808311610bd157829003601f168201915b5050505050905090565b600080610c0361190d565b9050610c10818585611915565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c616024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612cda6026913960400191505060405180910390fd5b6000610d3c61190d565b9050610d6a818686866040518060200160405280600081525060405180602001604052806000815250611b0c565b610d96818686866040518060200160405280600081525060405180602001604052806000815250611e26565b610e498582610e4486604051806060016040528060298152602001612cb160299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121359092919063ffffffff16565b611915565b610e7781868686604051806020016040528060008152506040518060200160405280600081525060006121f5565b60019150509392505050565b60006012905090565b60006001905090565b610ea6610ea061190d565b866113c0565b610efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c85602c913960400191505060405180910390fd5b610f0a85858585856001612590565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8073ffffffffffffffffffffffffffffffffffffffff16610f7861190d565b73ffffffffffffffffffffffffffffffffffffffff161415610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612bcf6024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110cf576007600061104361190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905561116c565b6001600660006110dd61190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61117461190d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112685780601f1061123d57610100808354040283529160200191611268565b820191906000526020600020905b81548152906001019060200180831161124b57829003601f168201915b5050505050905090565b61129761127d61190d565b848484604051806020016040528060008152506001612590565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611323576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c616024913960400191505060405180910390fd5b600061132d61190d565b905061135b818286866040518060200160405280600081525060405180602001604052806000815250611b0c565b611387818286866040518060200160405280600081525060405180602001604052806000815250611e26565b6113b581828686604051806020016040528060008152506040518060200160405280600081525060006121f5565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806114d85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156114d75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806115695750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61160061190d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611684576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612bf36021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611777576001600760006116e461190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061180b565b6006600061178361190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b61181361190d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b61188061187a61190d565b856113c0565b6118d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c85602c913960400191505060405180910390fd5b6118e1848484846126f9565b50505050565b6119096118f261190d565b8383604051806020016040528060008152506126f9565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561199b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b3f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d236023913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611bca57600080fd5b505afa158015611bde573d6000803e3d6000fd5b505050506040513d6020811015611bf457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611e1d578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611d4c578082015181840152602081019050611d31565b50505050905090810190601f168015611d795780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611db2578082015181840152602081019050611d97565b50505050905090810190601f168015611ddf5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b505050505b50505050505050565b611e3286868686612a1b565b611e9d83604051806060016040528060278152602001612b86602791396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121359092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f30836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561202557808201518184015260208101905061200a565b50505050905090810190601f1680156120525780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561208b578082015181840152602081019050612070565b50505050905090810190601f1680156120b85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121a757808201518184015260208101905061218c565b50505050905090810190601f1680156121d45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156122b357600080fd5b505afa1580156122c7573d6000803e3d6000fd5b505050506040513d60208110156122dd57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612509578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612434578082015181840152602081019050612419565b50505050905090810190601f1680156124615780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561249a57808201518184015260208101905061247f565b50505050905090810190601f1680156124c75780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156124ec57600080fd5b505af1158015612500573d6000803e3d6000fd5b50505050612586565b81156125855761252e8673ffffffffffffffffffffffffffffffffffffffff16612aa9565b15612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180612c14604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612616576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612b646022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b60006126c361190d565b90506126d3818888888888611b0c565b6126e1818888888888611e26565b6126f0818888888888886121f5565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561277f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612bad6022913960400191505060405180910390fd5b600061278961190d565b90506127988186600087612a1b565b6127a781866000878787611b0c565b61281284604051806060016040528060238152602001612d00602391396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121359092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061286984600154612af490919063ffffffff16565b6001819055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561290b5780820151818401526020810190506128f0565b50505050905090810190601f1680156129385780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612971578082015181840152602081019050612956565b50505050905090810190601f16801561299e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b50505050565b600080828401905083811015612a9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612aeb57506000801b8214155b92505050919050565b6000612b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612135565b90509291505056fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220b91b290a9c62cb74212792bb7e4fb40c2982737d100f1abe8f21e12a0c8438c064736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461074f578063dd62ed3e146107cb578063fad8b32a14610843578063fc673c4f14610887578063fe9d930314610a0357610116565b8063959b8c3f1461053d57806395d89b41146105815780639bd9bbc614610604578063a9059cbb146106e957610116565b806323b872dd116100e957806323b872dd14610281578063313ce56714610307578063556f0dc71461032b57806362ad1b831461034957806370a08231146104e557610116565b806306e485381461011b57806306fdde031461017a578063095ea7b3146101fd57806318160ddd14610263575b600080fd5b610123610ac8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561016657808201518184015260208101905061014b565b505050509050019250505060405180910390f35b610182610b56565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c25780820151818401526020810190506101a7565b50505050905090810190601f1680156101ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102496004803603604081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bf8565b604051808215151515815260200191505060405180910390f35b61026b610c1b565b6040518082815260200191505060405180910390f35b6102ed6004803603606081101561029757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c25565b604051808215151515815260200191505060405180910390f35b61030f610e83565b604051808260ff1660ff16815260200191505060405180910390f35b610333610e8c565b6040518082815260200191505060405180910390f35b6104e3600480360360a081101561035f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111640100000000831117156103fa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561045d57600080fd5b82018360208201111561046f57600080fd5b8035906020019184600183028401116401000000008311171561049157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e95565b005b610527600480360360208110156104fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f11565b6040518082815260200191505060405180910390f35b61057f6004803603602081101561055357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f59565b005b6105896111d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c95780820151818401526020810190506105ae565b50505050905090810190601f1680156105f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106e76004803603606081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561066157600080fd5b82018360208201111561067357600080fd5b8035906020019184600183028401116401000000008311171561069557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611272565b005b610735600480360360408110156106ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129c565b604051808215151515815260200191505060405180910390f35b6107b16004803603604081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c0565b604051808215151515815260200191505060405180910390f35b61082d600480360360408110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611571565b6040518082815260200191505060405180910390f35b6108856004803603602081101561085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f8565b005b610a016004803603608081101561089d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108e457600080fd5b8201836020820111156108f657600080fd5b8035906020019184600183028401116401000000008311171561091857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561097b57600080fd5b82018360208201111561098d57600080fd5b803590602001918460018302840111640100000000831117156109af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061186f565b005b610ac660048036036040811015610a1957600080fd5b810190808035906020019092919080359060200190640100000000811115610a4057600080fd5b820183602082011115610a5257600080fd5b80359060200191846001830284011164010000000083111715610a7457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506118e7565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610b4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b02575b5050505050905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bee5780601f10610bc357610100808354040283529160200191610bee565b820191906000526020600020905b815481529060010190602001808311610bd157829003601f168201915b5050505050905090565b600080610c0361190d565b9050610c10818585611915565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c616024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612cda6026913960400191505060405180910390fd5b6000610d3c61190d565b9050610d6a818686866040518060200160405280600081525060405180602001604052806000815250611b0c565b610d96818686866040518060200160405280600081525060405180602001604052806000815250611e26565b610e498582610e4486604051806060016040528060298152602001612cb160299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121359092919063ffffffff16565b611915565b610e7781868686604051806020016040528060008152506040518060200160405280600081525060006121f5565b60019150509392505050565b60006012905090565b60006001905090565b610ea6610ea061190d565b866113c0565b610efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c85602c913960400191505060405180910390fd5b610f0a85858585856001612590565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8073ffffffffffffffffffffffffffffffffffffffff16610f7861190d565b73ffffffffffffffffffffffffffffffffffffffff161415610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612bcf6024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110cf576007600061104361190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905561116c565b6001600660006110dd61190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61117461190d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112685780601f1061123d57610100808354040283529160200191611268565b820191906000526020600020905b81548152906001019060200180831161124b57829003601f168201915b5050505050905090565b61129761127d61190d565b848484604051806020016040528060008152506001612590565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611323576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c616024913960400191505060405180910390fd5b600061132d61190d565b905061135b818286866040518060200160405280600081525060405180602001604052806000815250611b0c565b611387818286866040518060200160405280600081525060405180602001604052806000815250611e26565b6113b581828686604051806020016040528060008152506040518060200160405280600081525060006121f5565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806114d85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156114d75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806115695750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61160061190d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611684576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612bf36021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611777576001600760006116e461190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061180b565b6006600061178361190d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b61181361190d565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b61188061187a61190d565b856113c0565b6118d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c85602c913960400191505060405180910390fd5b6118e1848484846126f9565b50505050565b6119096118f261190d565b8383604051806020016040528060008152506126f9565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561199b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b3f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d236023913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611bca57600080fd5b505afa158015611bde573d6000803e3d6000fd5b505050506040513d6020811015611bf457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611e1d578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611d4c578082015181840152602081019050611d31565b50505050905090810190601f168015611d795780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611db2578082015181840152602081019050611d97565b50505050905090810190601f168015611ddf5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b505050505b50505050505050565b611e3286868686612a1b565b611e9d83604051806060016040528060278152602001612b86602791396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121359092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f30836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561202557808201518184015260208101905061200a565b50505050905090810190601f1680156120525780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561208b578082015181840152602081019050612070565b50505050905090810190601f1680156120b85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121a757808201518184015260208101905061218c565b50505050905090810190601f1680156121d45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156122b357600080fd5b505afa1580156122c7573d6000803e3d6000fd5b505050506040513d60208110156122dd57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612509578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612434578082015181840152602081019050612419565b50505050905090810190601f1680156124615780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561249a57808201518184015260208101905061247f565b50505050905090810190601f1680156124c75780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156124ec57600080fd5b505af1158015612500573d6000803e3d6000fd5b50505050612586565b81156125855761252e8673ffffffffffffffffffffffffffffffffffffffff16612aa9565b15612584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d815260200180612c14604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612616576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612b646022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b60006126c361190d565b90506126d3818888888888611b0c565b6126e1818888888888611e26565b6126f0818888888888886121f5565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561277f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612bad6022913960400191505060405180910390fd5b600061278961190d565b90506127988186600087612a1b565b6127a781866000878787611b0c565b61281284604051806060016040528060238152602001612d00602391396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121359092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061286984600154612af490919063ffffffff16565b6001819055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561290b5780820151818401526020810190506128f0565b50505050905090810190601f1680156129385780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612971578082015181840152602081019050612956565b50505050905090810190601f16801561299e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b50505050565b600080828401905083811015612a9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612aeb57506000801b8214155b92505050919050565b6000612b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612135565b90509291505056fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220b91b290a9c62cb74212792bb7e4fb40c2982737d100f1abe8f21e12a0c8438c064736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC777Mock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC777Mock.json new file mode 100644 index 0000000..f0f43e2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC777Mock.json @@ -0,0 +1,1598 @@ +{ + "fileName": "ERC777Mock.sol", + "contractName": "ERC777Mock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC777/ERC777.sol\";\n\ncontract ERC777Mock is Context, ERC777 {\n constructor(\n address initialHolder,\n uint256 initialBalance,\n string memory name,\n string memory symbol,\n address[] memory defaultOperators\n ) public ERC777(name, symbol, defaultOperators) {\n _mint(initialHolder, initialBalance, \"\", \"\");\n }\n\n function mintInternal (\n address to,\n uint256 amount,\n bytes memory userData,\n bytes memory operatorData\n ) public {\n _mint(to, amount, userData, operatorData);\n }\n\n function approveInternal(address holder, address spender, uint256 value) public {\n _approve(holder, spender, value);\n }\n}\n", + "sourcePath": "contracts/mocks/ERC777Mock.sol", + "sourceMap": "125:681:44:-:0;;;170:289;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;366:4;372:6;380:16;2789:4:87;2781:5;:12;;;;;;;;;;;;:::i;:::-;;2813:6;2803:7;:16;;;;;;;;;;;;:::i;:::-;;2855;2830:22;:41;;;;;;;;;;;;:::i;:::-;;2886:9;2898:1;2886:13;;2881:136;2905:22;:29;;;;2901:1;:33;2881:136;;;3002:4;2955:17;:44;2973:22;2996:1;2973:25;;;;;;;;;;;;;;;;;;;;;;;;;2955:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;2936:3;;;;;;;2881:136;;;;1235:42;3058:41;;;3108:4;3115:24;;;;;;;;;;;;;;;;;;;3149:4;3058:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:42;3165:41;;;3215:4;3222:23;;;;;;;;;;;;;;;;;;;3255:4;3165:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2645:623;;;408:44:44::1;414:13;429:14;408:44;;;;;;;;;;;::::0;::::1;;;;;;;;;;;::::0;:5:::1;;;:44;;:::i;:::-;170:289:::0;;;;;125:681;;10335:725:87;10533:1;10514:21;;:7;:21;;;;10506:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10583:16;10602:12;:10;;;:12;;:::i;:::-;10583:31;;10625:59;10646:8;10664:1;10668:7;10677:6;10625:20;;;:59;;:::i;:::-;10744:24;10761:6;10744:12;;:16;;;;;;:24;;;;:::i;:::-;10729:12;:39;;;;10799:30;10822:6;10799:9;:18;10809:7;10799:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;10778:9;:18;10788:7;10778:18;;;;;;;;;;;;;;;:51;;;;10840:88;10860:8;10878:1;10882:7;10891:6;10899:8;10909:12;10923:4;10840:19;;;:88;;:::i;:::-;10961:7;10944:57;;10951:8;10944:57;;;10970:6;10978:8;10988:12;10944:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11037:7;11016:37;;11033:1;11016:37;;;11046:6;11016:37;;;;;;;;;;;;;;;;;;10335:725;;;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;17162:111:87:-;;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;15873:688:87:-;16130:19;1235:42;16152:41;;;16194:2;1883:66;16198:32;;16152:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16130:101;;16268:1;16245:25;;:11;:25;;;16241:314;;16303:11;16286:44;;;16331:8;16341:4;16347:2;16351:6;16359:8;16369:12;16286:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16241:314;;;16403:19;16399:156;;;16447:15;:2;:13;;;;;;;:15;;:::i;:::-;16446:16;16438:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16399:156;16241:314;15873:688;;;;;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;125:681:44:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "125:681:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7012:122:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3322:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8539:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4083:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9093:672;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3746:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3935:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;675:129:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7253:366:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4298:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6081:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3468:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4570:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4957:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;465:204:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5701:313:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8258:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6550:396;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7740:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5518:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7012:122;7070:16;7105:22;7098:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7012:122;:::o;3322:90::-;3368:13;3400:5;3393:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3322:90;:::o;8539:189::-;8613:4;8629:14;8646:12;:10;:12::i;:::-;8629:29;;8668:32;8677:6;8685:7;8694:5;8668:8;:32::i;:::-;8717:4;8710:11;;;8539:189;;;;:::o;4083:115::-;4153:7;4179:12;;4172:19;;4083:115;:::o;9093:672::-;9191:4;9236:1;9215:23;;:9;:23;;;;9207:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9315:1;9297:20;;:6;:20;;;;9289:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9371:15;9389:12;:10;:12::i;:::-;9371:30;;9412:61;9430:7;9439:6;9447:9;9458:6;9412:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;9484:49;9490:7;9499:6;9507:9;9518:6;9484:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;9543:112;9552:6;9560:7;9569:85;9602:6;9569:85;;;;;;;;;;;;;;;;;:11;:19;9581:6;9569:19;;;;;;;;;;;;;;;:28;9589:7;9569:28;;;;;;;;;;;;;;;;:32;;:85;;;;;:::i;:::-;9543:8;:112::i;:::-;9666:70;9686:7;9695:6;9703:9;9714:6;9666:70;;;;;;;;;;;;;;;;;;;;;;;;9730:5;9666:19;:70::i;:::-;9754:4;9747:11;;;9093:672;;;;;:::o;3746:74::-;3787:5;3811:2;3804:9;;3746:74;:::o;3935:87::-;3988:7;4014:1;4007:8;;3935:87;:::o;675:129:44:-;765:32;774:6;782:7;791:5;765:8;:32::i;:::-;675:129;;;:::o;7253:366:87:-;7460:35;7474:12;:10;:12::i;:::-;7488:6;7460:13;:35::i;:::-;7452:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7554:58;7560:6;7568:9;7579:6;7587:4;7593:12;7607:4;7554:5;:58::i;:::-;7253:366;;;;;:::o;4298:142::-;4385:7;4411:9;:22;4421:11;4411:22;;;;;;;;;;;;;;;;4404:29;;4298:142;;;:::o;6081:405::-;6177:8;6161:24;;:12;:10;:12::i;:::-;:24;;;;6153:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6241:17;:27;6259:8;6241:27;;;;;;;;;;;;;;;;;;;;;;;;;6237:185;;;6291:24;:38;6316:12;:10;:12::i;:::-;6291:38;;;;;;;;;;;;;;;:48;6330:8;6291:48;;;;;;;;;;;;;;;;6284:55;;;;;;;;;;;6237:185;;;6407:4;6370:10;:24;6381:12;:10;:12::i;:::-;6370:24;;;;;;;;;;;;;;;:34;6395:8;6370:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6237:185;6466:12;:10;:12::i;:::-;6437:42;;6456:8;6437:42;;;;;;;;;;;;6081:405;:::o;3468:94::-;3516:13;3548:7;3541:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:94;:::o;4570:156::-;4665:54;4671:12;:10;:12::i;:::-;4685:9;4696:6;4704:4;4665:54;;;;;;;;;;;;4714:4;4665:5;:54::i;:::-;4570:156;;;:::o;4957:431::-;5035:4;5080:1;5059:23;;:9;:23;;;;5051:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:12;5149;:10;:12::i;:::-;5134:27;;5172:56;5190:4;5196;5202:9;5213:6;5172:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;5239:44;5245:4;5251;5257:9;5268:6;5239:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;5294:65;5314:4;5320;5326:9;5337:6;5294:65;;;;;;;;;;;;;;;;;;;;;;;;5353:5;5294:19;:65::i;:::-;5377:4;5370:11;;;4957:431;;;;:::o;465:204:44:-;621:41;627:2;631:6;639:8;649:12;621:5;:41::i;:::-;465:204;;;;:::o;5701:313:87:-;5815:4;5850:11;5838:23;;:8;:23;;;:120;;;;5878:17;:27;5896:8;5878:27;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;;5910:24;:37;5935:11;5910:37;;;;;;;;;;;;;;;:47;5948:8;5910:47;;;;;;;;;;;;;;;;;;;;;;;;;5909:48;5878:79;5838:120;:169;;;;5974:10;:23;5985:11;5974:23;;;;;;;;;;;;;;;:33;5998:8;5974:33;;;;;;;;;;;;;;;;;;;;;;;;;5838:169;5831:176;;5701:313;;;;:::o;8258:143::-;8340:7;8366:11;:19;8378:6;8366:19;;;;;;;;;;;;;;;:28;8386:7;8366:28;;;;;;;;;;;;;;;;8359:35;;8258:143;;;;:::o;6550:396::-;6639:12;:10;:12::i;:::-;6627:24;;:8;:24;;;;6619:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6704:17;:27;6722:8;6704:27;;;;;;;;;;;;;;;;;;;;;;;;;6700:185;;;6798:4;6747:24;:38;6772:12;:10;:12::i;:::-;6747:38;;;;;;;;;;;;;;;:48;6786:8;6747:48;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;6700:185;;;6840:10;:24;6851:12;:10;:12::i;:::-;6840:24;;;;;;;;;;;;;;;:34;6865:8;6840:34;;;;;;;;;;;;;;;;6833:41;;;;;;;;;;;6700:185;6926:12;:10;:12::i;:::-;6900:39;;6916:8;6900:39;;;;;;;;;;;;6550:396;:::o;7740:279::-;7875:36;7889:12;:10;:12::i;:::-;7903:7;7875:13;:36::i;:::-;7867:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7970:42;7976:7;7985:6;7993:4;7999:12;7970:5;:42::i;:::-;7740:279;;;;:::o;5518:120::-;5594:37;5600:12;:10;:12::i;:::-;5614:6;5622:4;5594:37;;;;;;;;;;;;:5;:37::i;:::-;5518:120;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;13892:335:87:-;14003:1;13985:20;;:6;:20;;;;13977:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14084:1;14065:21;;:7;:21;;;;14057:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14168:5;14137:11;:19;14149:6;14137:19;;;;;;;;;;;;;;;:28;14157:7;14137:28;;;;;;;;;;;;;;;:36;;;;14205:7;14188:32;;14197:6;14188:32;;;14214:5;14188:32;;;;;;;;;;;;;;;;;;13892:335;;;:::o;14700:484::-;14921:19;1235:42;14943:41;;;14985:4;1700:66;14991:29;;14943:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14921:100;;15058:1;15035:25;;:11;:25;;;15031:147;;15090:11;15076:39;;;15116:8;15126:4;15132:2;15136:6;15144:8;15154:12;15076:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15031:147;14700:484;;;;;;;:::o;13227:527::-;13436:48;13457:8;13467:4;13473:2;13477:6;13436:20;:48::i;:::-;13513:70;13533:6;13513:70;;;;;;;;;;;;;;;;;:9;:15;13523:4;13513:15;;;;;;;;;;;;;;;;:19;;:70;;;;;:::i;:::-;13495:9;:15;13505:4;13495:15;;;;;;;;;;;;;;;:88;;;;13609:25;13627:6;13609:9;:13;13619:2;13609:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;13593:9;:13;13603:2;13593:13;;;;;;;;;;;;;;;:41;;;;13671:2;13650:56;;13665:4;13650:56;;13655:8;13650:56;;;13675:6;13683:8;13693:12;13650:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13736:2;13721:26;;13730:4;13721:26;;;13740:6;13721:26;;;;;;;;;;;;;;;;;;13227:527;;;;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;15873:688:87:-;16130:19;1235:42;16152:41;;;16194:2;1883:66;16198:32;;16152:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16130:101;;16268:1;16245:25;;:11;:25;;;16241:314;;16303:11;16286:44;;;16331:8;16341:4;16347:2;16351:6;16359:8;16369:12;16286:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16241:314;;;16403:19;16399:156;;;16447:15;:2;:13;;;:15::i;:::-;16446:16;16438:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16399:156;16241:314;15873:688;;;;;;;;:::o;11536:654::-;11778:1;11762:18;;:4;:18;;;;11754:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11851:1;11837:16;;:2;:16;;;;11829:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:16;11920:12;:10;:12::i;:::-;11901:31;;11943:69;11961:8;11971:4;11977:2;11981:6;11989:8;11999:12;11943:17;:69::i;:::-;12023:57;12029:8;12039:4;12045:2;12049:6;12057:8;12067:12;12023:5;:57::i;:::-;12091:92;12111:8;12121:4;12127:2;12131:6;12139:8;12149:12;12163:19;12091;:92::i;:::-;11536:654;;;;;;;:::o;10335:725::-;10533:1;10514:21;;:7;:21;;;;10506:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10583:16;10602:12;:10;:12::i;:::-;10583:31;;10625:59;10646:8;10664:1;10668:7;10677:6;10625:20;:59::i;:::-;10744:24;10761:6;10744:12;;:16;;:24;;;;:::i;:::-;10729:12;:39;;;;10799:30;10822:6;10799:9;:18;10809:7;10799:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10778:9;:18;10788:7;10778:18;;;;;;;;;;;;;;;:51;;;;10840:88;10860:8;10878:1;10882:7;10891:6;10899:8;10909:12;10923:4;10840:19;:88::i;:::-;10961:7;10944:57;;10951:8;10944:57;;;10970:6;10978:8;10988:12;10944:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11037:7;11016:37;;11033:1;11016:37;;;11046:6;11016:37;;;;;;;;;;;;;;;;;;10335:725;;;;;:::o;12495:726::-;12687:1;12671:18;;:4;:18;;;;12663:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12739:16;12758:12;:10;:12::i;:::-;12739:31;;12781:56;12802:8;12812:4;12826:1;12830:6;12781:20;:56::i;:::-;12848:73;12866:8;12876:4;12890:1;12894:6;12902:4;12908:12;12848:17;:73::i;:::-;12984:66;13004:6;12984:66;;;;;;;;;;;;;;;;;:9;:15;12994:4;12984:15;;;;;;;;;;;;;;;;:19;;:66;;;;;:::i;:::-;12966:9;:15;12976:4;12966:15;;;;;;;;;;;;;;;:84;;;;13075:24;13092:6;13075:12;;:16;;:24;;;;:::i;:::-;13060:12;:39;;;;13132:4;13115:50;;13122:8;13115:50;;;13138:6;13146:4;13152:12;13115:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13203:1;13180:34;;13189:4;13180:34;;;13207:6;13180:34;;;;;;;;;;;;;;;;;;12495:726;;;;;:::o;17162:111::-;;;;;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "initialHolder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialBalance", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address[]", + "name": "defaultOperators", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approveInternal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "granularity", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "mintInternal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC777Mock.sol", + "exportedSymbols": { + "ERC777Mock": [ + 4241 + ] + }, + "id": 4242, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4172, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:44" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 4173, + "nodeType": "ImportDirective", + "scope": 4242, + "sourceUnit": 27, + "src": "58:28:44", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/ERC777.sol", + "file": "../token/ERC777/ERC777.sol", + "id": 4174, + "nodeType": "ImportDirective", + "scope": 4242, + "sourceUnit": 10638, + "src": "87:36:44", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4175, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "148:7:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 4176, + "nodeType": "InheritanceSpecifier", + "src": "148:7:44" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4177, + "name": "ERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10637, + "src": "157:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777_$10637", + "typeString": "contract ERC777" + } + }, + "id": 4178, + "nodeType": "InheritanceSpecifier", + "src": "157:6:44" + } + ], + "contractDependencies": [ + 26, + 7969, + 10637, + 10796 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4241, + "linearizedBaseContracts": [ + 4241, + 10637, + 7969, + 10796, + 26 + ], + "name": "ERC777Mock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4204, + "nodeType": "Block", + "src": "398:61:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4198, + "name": "initialHolder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4180, + "src": "414:13:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4199, + "name": "initialBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4182, + "src": "429:14:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 4200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "445:2:44", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 4201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "449:2:44", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 4197, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10258, + "src": "408:5:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory,bytes memory)" + } + }, + "id": 4202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "408:44:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4203, + "nodeType": "ExpressionStatement", + "src": "408:44:44" + } + ] + }, + "documentation": null, + "id": 4205, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4192, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4184, + "src": "366:4:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 4193, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "372:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 4194, + "name": "defaultOperators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "380:16:44", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "id": 4195, + "modifierName": { + "argumentTypes": null, + "id": 4191, + "name": "ERC777", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10637, + "src": "359:6:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC777_$10637_$", + "typeString": "type(contract ERC777)" + } + }, + "nodeType": "ModifierInvocation", + "src": "359:38:44" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4180, + "mutability": "mutable", + "name": "initialHolder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4205, + "src": "191:21:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "191:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4182, + "mutability": "mutable", + "name": "initialBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4205, + "src": "222:22:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "222:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4184, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4205, + "src": "254:18:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4183, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "254:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4186, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4205, + "src": "282:20:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4185, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "282:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4189, + "mutability": "mutable", + "name": "defaultOperators", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4205, + "src": "312:33:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 4187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "312:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4188, + "length": null, + "nodeType": "ArrayTypeName", + "src": "312:9:44", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "181:170:44" + }, + "returnParameters": { + "id": 4196, + "nodeType": "ParameterList", + "parameters": [], + "src": "398:0:44" + }, + "scope": 4241, + "src": "170:289:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4223, + "nodeType": "Block", + "src": "611:58:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4217, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4207, + "src": "627:2:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4218, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4209, + "src": "631:6:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4219, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4211, + "src": "639:8:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 4220, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4213, + "src": "649:12:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4216, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10258, + "src": "621:5:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory,bytes memory)" + } + }, + "id": 4221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "621:41:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4222, + "nodeType": "ExpressionStatement", + "src": "621:41:44" + } + ] + }, + "documentation": null, + "functionSelector": "b1f0b5be", + "id": 4224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mintInternal", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4207, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4224, + "src": "497:10:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4209, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4224, + "src": "517:14:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "517:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4211, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4224, + "src": "541:21:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4210, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "541:5:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4213, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4224, + "src": "572:25:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4212, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "572:5:44", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "487:116:44" + }, + "returnParameters": { + "id": 4215, + "nodeType": "ParameterList", + "parameters": [], + "src": "611:0:44" + }, + "scope": 4241, + "src": "465:204:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4239, + "nodeType": "Block", + "src": "755:49:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4234, + "name": "holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4226, + "src": "774:6:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4235, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "782:7:44", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4236, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4230, + "src": "791:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4233, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10520, + "src": "765:8:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "765:32:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4238, + "nodeType": "ExpressionStatement", + "src": "765:32:44" + } + ] + }, + "documentation": null, + "functionSelector": "56189cb4", + "id": 4240, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveInternal", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4226, + "mutability": "mutable", + "name": "holder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4240, + "src": "700:14:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "700:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4228, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4240, + "src": "716:15:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "716:7:44", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4230, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4240, + "src": "733:13:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4229, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "733:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "699:48:44" + }, + "returnParameters": { + "id": 4232, + "nodeType": "ParameterList", + "parameters": [], + "src": "755:0:44" + }, + "scope": 4241, + "src": "675:129:44", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4242, + "src": "125:681:44" + } + ], + "src": "33:774:44" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200427238038062004272833981810160405260a08110156200003757600080fd5b810190808051906020019092919080519060200190929190805160405193929190846401000000008211156200006c57600080fd5b838201915060208201858111156200008357600080fd5b8251866001820283011164010000000082111715620000a157600080fd5b8083526020830192505050908051906020019080838360005b83811015620000d7578082015181840152602081019050620000ba565b50505050905090810190601f168015620001055780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012957600080fd5b838201915060208201858111156200014057600080fd5b82518660018202830111640100000000821117156200015e57600080fd5b8083526020830192505050908051906020019080838360005b838110156200019457808201518184015260208101905062000177565b50505050905090810190601f168015620001c25780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001e657600080fd5b83820191506020820185811115620001fd57600080fd5b82518660208202830111640100000000821117156200021b57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200025457808201518184015260208101905062000237565b5050505090500160405250505082828282600290805190602001906200027c92919062000dcd565b5081600390805190602001906200029592919062000dcd565b508060049080519060200190620002ae92919062000e54565b5060008090505b600480549050811015620003615760016005600060048481548110620002d757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620002b5565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e000000000000000000000000000000000000000000815250600b0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200046757600080fd5b505af11580156200047c573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f4552433230546f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200058557600080fd5b505af11580156200059a573d6000803e3d6000fd5b50505050505050620005d385856040518060200160405280600081525060405180602001604052806000815250620005de60201b60201c565b505050505062000f51565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141562000682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000620006946200093260201b60201c565b9050620006ab81600087876200093a60201b60201c565b620006c7846001546200094060201b62001b2f1790919060201c565b60018190555062000725846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200094060201b62001b2f1790919060201c565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000780816000878787876001620009c960201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156200081e57808201518184015260208101905062000801565b50505050905090810190601f1680156200084c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015620008875780820151818401526020810190506200086a565b50505050905090810190601f168015620008b55780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600033905090565b50505050565b600080828401905083811015620009bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801562000a8857600080fd5b505afa15801562000a9d573d6000803e3d6000fd5b505050506040513d602081101562000ab457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000cea578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101562000c0e57808201518184015260208101905062000bf1565b50505050905090810190601f16801562000c3c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101562000c7757808201518184015260208101905062000c5a565b50505050905090810190601f16801562000ca55780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801562000ccb57600080fd5b505af115801562000ce0573d6000803e3d6000fd5b5050505062000d77565b811562000d765762000d1d8673ffffffffffffffffffffffffffffffffffffffff1662000d8160201b62001bb71760201c565b1562000d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d81526020018062004225604d913960600191505060405180910390fd5b5b5b5050505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801562000dc457506000801b8214155b92505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000e1057805160ff191683800117855562000e41565b8280016001018555821562000e41579182015b8281111562000e4057825182559160200191906001019062000e23565b5b50905062000e50919062000ee3565b5090565b82805482825590600052602060002090810192821562000ed0579160200282015b8281111562000ecf5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000e75565b5b50905062000edf919062000f0b565b5090565b62000f0891905b8082111562000f0457600081600090555060010162000eea565b5090565b90565b62000f4e91905b8082111562000f4a57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000f12565b5090565b90565b6132c48062000f616000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063959b8c3f116100ad578063d95b637111610071578063d95b63711461094f578063dd62ed3e146109cb578063fad8b32a14610a43578063fc673c4f14610a87578063fe9d930314610c035761012c565b8063959b8c3f146105c157806395d89b41146106055780639bd9bbc614610688578063a9059cbb1461076d578063b1f0b5be146107d35761012c565b8063313ce567116100f4578063313ce5671461031d578063556f0dc71461034157806356189cb41461035f57806362ad1b83146103cd57806370a08231146105695761012c565b806306e485381461013157806306fdde0314610190578063095ea7b31461021357806318160ddd1461027957806323b872dd14610297575b600080fd5b610139610cc8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561017c578082015181840152602081019050610161565b505050509050019250505060405180910390f35b610198610d56565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d85780820151818401526020810190506101bd565b50505050905090810190601f1680156102055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61025f6004803603604081101561022957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df8565b604051808215151515815260200191505060405180910390f35b610281610e1b565b6040518082815260200191505060405180910390f35b610303600480360360608110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e25565b604051808215151515815260200191505060405180910390f35b610325611083565b604051808260ff1660ff16815260200191505060405180910390f35b61034961108c565b6040518082815260200191505060405180910390f35b6103cb6004803603606081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611095565b005b610567600480360360a08110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561044a57600080fd5b82018360208201111561045c57600080fd5b8035906020019184600183028401116401000000008311171561047e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104e157600080fd5b8201836020820111156104f357600080fd5b8035906020019184600183028401116401000000008311171561051557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110a5565b005b6105ab6004803603602081101561057f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611121565b6040518082815260200191505060405180910390f35b610603600480360360208110156105d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611169565b005b61060d6113e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064d578082015181840152602081019050610632565b50505050905090810190601f16801561067a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61076b6004803603606081101561069e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106e557600080fd5b8201836020820111156106f757600080fd5b8035906020019184600183028401116401000000008311171561071957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611482565b005b6107b96004803603604081101561078357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ac565b604051808215151515815260200191505060405180910390f35b61094d600480360360808110156107e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561083057600080fd5b82018360208201111561084257600080fd5b8035906020019184600183028401116401000000008311171561086457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108c757600080fd5b8201836020820111156108d957600080fd5b803590602001918460018302840111640100000000831117156108fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115d0565b005b6109b16004803603604081101561096557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b604051808215151515815260200191505060405180910390f35b610a2d600480360360408110156109e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b6040518082815260200191505060405180910390f35b610a8560048036036020811015610a5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061181a565b005b610c0160048036036080811015610a9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610ae457600080fd5b820183602082011115610af657600080fd5b80359060200191846001830284011164010000000083111715610b1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b7b57600080fd5b820183602082011115610b8d57600080fd5b80359060200191846001830284011164010000000083111715610baf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611a91565b005b610cc660048036036040811015610c1957600080fd5b810190808035906020019092919080359060200190640100000000811115610c4057600080fd5b820183602082011115610c5257600080fd5b80359060200191846001830284011164010000000083111715610c7457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b09565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610d4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d02575b5050505050905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dee5780601f10610dc357610100808354040283529160200191610dee565b820191906000526020600020905b815481529060010190602001808311610dd157829003601f168201915b5050505050905090565b600080610e03611c02565b9050610e10818585611c0a565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131aa6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806132236026913960400191505060405180910390fd5b6000610f3c611c02565b9050610f6a818686866040518060200160405280600081525060405180602001604052806000815250611e01565b610f9681868686604051806020016040528060008152506040518060200160405280600081525061211b565b6110498582611044866040518060600160405280602981526020016131fa60299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242a9092919063ffffffff16565b611c0a565b61107781868686604051806020016040528060008152506040518060200160405280600081525060006124ea565b60019150509392505050565b60006012905090565b60006001905090565b6110a0838383611c0a565b505050565b6110b66110b0611c02565b866115e2565b61110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806131ce602c913960400191505060405180910390fd5b61111a85858585856001612885565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8073ffffffffffffffffffffffffffffffffffffffff16611188611c02565b73ffffffffffffffffffffffffffffffffffffffff1614156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131186024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112df5760076000611253611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905561137c565b6001600660006112ed611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611384611c02565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114785780601f1061144d57610100808354040283529160200191611478565b820191906000526020600020905b81548152906001019060200180831161145b57829003601f168201915b5050505050905090565b6114a761148d611c02565b848484604051806020016040528060008152506001612885565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611533576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131aa6024913960400191505060405180910390fd5b600061153d611c02565b905061156b818286866040518060200160405280600081525060405180602001604052806000815250611e01565b61159781828686604051806020016040528060008152506040518060200160405280600081525061211b565b6115c581828686604051806020016040528060008152506040518060200160405280600081525060006124ea565b600191505092915050565b6115dc848484846129ee565b50505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806116fa5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116f95750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b8061178b5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611822611c02565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061313c6021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561199957600160076000611906611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a2d565b600660006119a5611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b611a35611c02565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b611aa2611a9c611c02565b856115e2565b611af7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806131ce602c913960400191505060405180910390fd5b611b0384848484612d15565b50505050565b611b2b611b14611c02565b838360405180602001604052806000815250612d15565b5050565b600080828401905083811015611bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611bf957506000801b8214155b92505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806130886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061326c6023913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611ebf57600080fd5b505afa158015611ed3573d6000803e3d6000fd5b505050506040513d6020811015611ee957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612112578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612041578082015181840152602081019050612026565b50505050905090810190601f16801561206e5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156120a757808201518184015260208101905061208c565b50505050905090810190601f1680156120d45780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156120f957600080fd5b505af115801561210d573d6000803e3d6000fd5b505050505b50505050505050565b61212786868686613037565b612192836040518060600160405280602781526020016130cf602791396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242a9092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612225836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561231a5780820151818401526020810190506122ff565b50505050905090810190601f1680156123475780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612380578082015181840152602081019050612365565b50505050905090810190601f1680156123ad5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561249c578082015181840152602081019050612481565b50505050905090810190601f1680156124c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156125a857600080fd5b505afa1580156125bc573d6000803e3d6000fd5b505050506040513d60208110156125d257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146127fe578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561272957808201518184015260208101905061270e565b50505050905090810190601f1680156127565780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561278f578082015181840152602081019050612774565b50505050905090810190601f1680156127bc5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156127e157600080fd5b505af11580156127f5573d6000803e3d6000fd5b5050505061287b565b811561287a576128238673ffffffffffffffffffffffffffffffffffffffff16611bb7565b15612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d81526020018061315d604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561290b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806130ad6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156129ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b60006129b8611c02565b90506129c8818888888888611e01565b6129d681888888888861211b565b6129e5818888888888886124ea565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000612a9b611c02565b9050612aaa8160008787613037565b612abf84600154611b2f90919063ffffffff16565b600181905550612b16846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b698160008787878760016124ea565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612c05578082015181840152602081019050612bea565b50505050905090810190601f168015612c325780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c6b578082015181840152602081019050612c50565b50505050905090810190601f168015612c985780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612d9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806130f66022913960400191505060405180910390fd5b6000612da5611c02565b9050612db48186600087613037565b612dc381866000878787611e01565b612e2e84604051806060016040528060238152602001613249602391396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242a9092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e858460015461303d90919063ffffffff16565b6001819055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612f27578082015181840152602081019050612f0c565b50505050905090810190601f168015612f545780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612f8d578082015181840152602081019050612f72565b50505050905090810190601f168015612fba5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b50505050565b600061307f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061242a565b90509291505056fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a26469706673582212201bdf73360d4e0e2f3ee427b1145d44af7e7a11a439fe47d9b48241f9a660162164736f6c634300060900334552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e74", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063959b8c3f116100ad578063d95b637111610071578063d95b63711461094f578063dd62ed3e146109cb578063fad8b32a14610a43578063fc673c4f14610a87578063fe9d930314610c035761012c565b8063959b8c3f146105c157806395d89b41146106055780639bd9bbc614610688578063a9059cbb1461076d578063b1f0b5be146107d35761012c565b8063313ce567116100f4578063313ce5671461031d578063556f0dc71461034157806356189cb41461035f57806362ad1b83146103cd57806370a08231146105695761012c565b806306e485381461013157806306fdde0314610190578063095ea7b31461021357806318160ddd1461027957806323b872dd14610297575b600080fd5b610139610cc8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561017c578082015181840152602081019050610161565b505050509050019250505060405180910390f35b610198610d56565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d85780820151818401526020810190506101bd565b50505050905090810190601f1680156102055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61025f6004803603604081101561022957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df8565b604051808215151515815260200191505060405180910390f35b610281610e1b565b6040518082815260200191505060405180910390f35b610303600480360360608110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e25565b604051808215151515815260200191505060405180910390f35b610325611083565b604051808260ff1660ff16815260200191505060405180910390f35b61034961108c565b6040518082815260200191505060405180910390f35b6103cb6004803603606081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611095565b005b610567600480360360a08110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561044a57600080fd5b82018360208201111561045c57600080fd5b8035906020019184600183028401116401000000008311171561047e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104e157600080fd5b8201836020820111156104f357600080fd5b8035906020019184600183028401116401000000008311171561051557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110a5565b005b6105ab6004803603602081101561057f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611121565b6040518082815260200191505060405180910390f35b610603600480360360208110156105d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611169565b005b61060d6113e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064d578082015181840152602081019050610632565b50505050905090810190601f16801561067a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61076b6004803603606081101561069e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106e557600080fd5b8201836020820111156106f757600080fd5b8035906020019184600183028401116401000000008311171561071957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611482565b005b6107b96004803603604081101561078357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ac565b604051808215151515815260200191505060405180910390f35b61094d600480360360808110156107e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561083057600080fd5b82018360208201111561084257600080fd5b8035906020019184600183028401116401000000008311171561086457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108c757600080fd5b8201836020820111156108d957600080fd5b803590602001918460018302840111640100000000831117156108fb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115d0565b005b6109b16004803603604081101561096557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e2565b604051808215151515815260200191505060405180910390f35b610a2d600480360360408110156109e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b6040518082815260200191505060405180910390f35b610a8560048036036020811015610a5957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061181a565b005b610c0160048036036080811015610a9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610ae457600080fd5b820183602082011115610af657600080fd5b80359060200191846001830284011164010000000083111715610b1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b7b57600080fd5b820183602082011115610b8d57600080fd5b80359060200191846001830284011164010000000083111715610baf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611a91565b005b610cc660048036036040811015610c1957600080fd5b810190808035906020019092919080359060200190640100000000811115610c4057600080fd5b820183602082011115610c5257600080fd5b80359060200191846001830284011164010000000083111715610c7457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b09565b005b60606004805480602002602001604051908101604052809291908181526020018280548015610d4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d02575b5050505050905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dee5780601f10610dc357610100808354040283529160200191610dee565b820191906000526020600020905b815481529060010190602001808311610dd157829003601f168201915b5050505050905090565b600080610e03611c02565b9050610e10818585611c0a565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131aa6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806132236026913960400191505060405180910390fd5b6000610f3c611c02565b9050610f6a818686866040518060200160405280600081525060405180602001604052806000815250611e01565b610f9681868686604051806020016040528060008152506040518060200160405280600081525061211b565b6110498582611044866040518060600160405280602981526020016131fa60299139600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242a9092919063ffffffff16565b611c0a565b61107781868686604051806020016040528060008152506040518060200160405280600081525060006124ea565b60019150509392505050565b60006012905090565b60006001905090565b6110a0838383611c0a565b505050565b6110b66110b0611c02565b866115e2565b61110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806131ce602c913960400191505060405180910390fd5b61111a85858585856001612885565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8073ffffffffffffffffffffffffffffffffffffffff16611188611c02565b73ffffffffffffffffffffffffffffffffffffffff1614156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131186024913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112df5760076000611253611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905561137c565b6001600660006112ed611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611384611c02565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114785780601f1061144d57610100808354040283529160200191611478565b820191906000526020600020905b81548152906001019060200180831161145b57829003601f168201915b5050505050905090565b6114a761148d611c02565b848484604051806020016040528060008152506001612885565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611533576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806131aa6024913960400191505060405180910390fd5b600061153d611c02565b905061156b818286866040518060200160405280600081525060405180602001604052806000815250611e01565b61159781828686604051806020016040528060008152506040518060200160405280600081525061211b565b6115c581828686604051806020016040528060008152506040518060200160405280600081525060006124ea565b600191505092915050565b6115dc848484846129ee565b50505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806116fa5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116f95750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b8061178b5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611822611c02565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061313c6021913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561199957600160076000611906611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a2d565b600660006119a5611c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b611a35611c02565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b611aa2611a9c611c02565b856115e2565b611af7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806131ce602c913960400191505060405180910390fd5b611b0384848484612d15565b50505050565b611b2b611b14611c02565b838360405180602001604052806000815250612d15565b5050565b600080828401905083811015611bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611bf957506000801b8214155b92505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806130886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061326c6023913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611ebf57600080fd5b505afa158015611ed3573d6000803e3d6000fd5b505050506040513d6020811015611ee957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612112578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612041578082015181840152602081019050612026565b50505050905090810190601f16801561206e5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156120a757808201518184015260208101905061208c565b50505050905090810190601f1680156120d45780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156120f957600080fd5b505af115801561210d573d6000803e3d6000fd5b505050505b50505050505050565b61212786868686613037565b612192836040518060600160405280602781526020016130cf602791396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242a9092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612225836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561231a5780820151818401526020810190506122ff565b50505050905090810190601f1680156123475780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612380578082015181840152602081019050612365565b50505050905090810190601f1680156123ad5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60008383111582906124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561249c578082015181840152602081019050612481565b50505050905090810190601f1680156124c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156125a857600080fd5b505afa1580156125bc573d6000803e3d6000fd5b505050506040513d60208110156125d257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146127fe578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561272957808201518184015260208101905061270e565b50505050905090810190601f1680156127565780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561278f578082015181840152602081019050612774565b50505050905090810190601f1680156127bc5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156127e157600080fd5b505af11580156127f5573d6000803e3d6000fd5b5050505061287b565b811561287a576128238673ffffffffffffffffffffffffffffffffffffffff16611bb7565b15612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604d81526020018061315d604d913960600191505060405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561290b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806130ad6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156129ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b60006129b8611c02565b90506129c8818888888888611e01565b6129d681888888888861211b565b6129e5818888888888886124ea565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6000612a9b611c02565b9050612aaa8160008787613037565b612abf84600154611b2f90919063ffffffff16565b600181905550612b16846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2f90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b698160008787878760016124ea565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612c05578082015181840152602081019050612bea565b50505050905090810190601f168015612c325780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c6b578082015181840152602081019050612c50565b50505050905090810190601f168015612c985780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612d9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806130f66022913960400191505060405180910390fd5b6000612da5611c02565b9050612db48186600087613037565b612dc381866000878787611e01565b612e2e84604051806060016040528060238152602001613249602391396000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242a9092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e858460015461303d90919063ffffffff16565b6001819055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612f27578082015181840152602081019050612f0c565b50505050905090810190601f168015612f545780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612f8d578082015181840152602081019050612f72565b50505050905090810190601f168015612fba5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b50505050565b600061307f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061242a565b90509291505056fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a26469706673582212201bdf73360d4e0e2f3ee427b1145d44af7e7a11a439fe47d9b48241f9a660162164736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ERC777SenderRecipientMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ERC777SenderRecipientMock.json new file mode 100644 index 0000000..dcc34cb --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ERC777SenderRecipientMock.json @@ -0,0 +1,4921 @@ +{ + "fileName": "ERC777SenderRecipientMock.sol", + "contractName": "ERC777SenderRecipientMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC777/IERC777.sol\";\nimport \"../token/ERC777/IERC777Sender.sol\";\nimport \"../token/ERC777/IERC777Recipient.sol\";\nimport \"../introspection/IERC1820Registry.sol\";\nimport \"../introspection/ERC1820Implementer.sol\";\n\ncontract ERC777SenderRecipientMock is Context, IERC777Sender, IERC777Recipient, ERC1820Implementer {\n event TokensToSendCalled(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes data,\n bytes operatorData,\n address token,\n uint256 fromBalance,\n uint256 toBalance\n );\n\n event TokensReceivedCalled(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes data,\n bytes operatorData,\n address token,\n uint256 fromBalance,\n uint256 toBalance\n );\n\n bool private _shouldRevertSend;\n bool private _shouldRevertReceive;\n\n IERC1820Registry private _erc1820 = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24);\n\n bytes32 constant private _TOKENS_SENDER_INTERFACE_HASH = keccak256(\"ERC777TokensSender\");\n bytes32 constant private _TOKENS_RECIPIENT_INTERFACE_HASH = keccak256(\"ERC777TokensRecipient\");\n\n function tokensToSend(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes calldata userData,\n bytes calldata operatorData\n ) external override {\n if (_shouldRevertSend) {\n revert();\n }\n\n IERC777 token = IERC777(_msgSender());\n\n uint256 fromBalance = token.balanceOf(from);\n // when called due to burn, to will be the zero address, which will have a balance of 0\n uint256 toBalance = token.balanceOf(to);\n\n emit TokensToSendCalled(\n operator,\n from,\n to,\n amount,\n userData,\n operatorData,\n address(token),\n fromBalance,\n toBalance\n );\n }\n\n function tokensReceived(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes calldata userData,\n bytes calldata operatorData\n ) external override {\n if (_shouldRevertReceive) {\n revert();\n }\n\n IERC777 token = IERC777(_msgSender());\n\n uint256 fromBalance = token.balanceOf(from);\n // when called due to burn, to will be the zero address, which will have a balance of 0\n uint256 toBalance = token.balanceOf(to);\n\n emit TokensReceivedCalled(\n operator,\n from,\n to,\n amount,\n userData,\n operatorData,\n address(token),\n fromBalance,\n toBalance\n );\n }\n\n function senderFor(address account) public {\n _registerInterfaceForAddress(_TOKENS_SENDER_INTERFACE_HASH, account);\n\n address self = address(this);\n if (account == self) {\n registerSender(self);\n }\n }\n\n function registerSender(address sender) public {\n _erc1820.setInterfaceImplementer(address(this), _TOKENS_SENDER_INTERFACE_HASH, sender);\n }\n\n function recipientFor(address account) public {\n _registerInterfaceForAddress(_TOKENS_RECIPIENT_INTERFACE_HASH, account);\n\n address self = address(this);\n if (account == self) {\n registerRecipient(self);\n }\n }\n\n function registerRecipient(address recipient) public {\n _erc1820.setInterfaceImplementer(address(this), _TOKENS_RECIPIENT_INTERFACE_HASH, recipient);\n }\n\n function setShouldRevertSend(bool shouldRevert) public {\n _shouldRevertSend = shouldRevert;\n }\n\n function setShouldRevertReceive(bool shouldRevert) public {\n _shouldRevertReceive = shouldRevert;\n }\n\n function send(IERC777 token, address to, uint256 amount, bytes memory data) public {\n // This is 777's send function, not the Solidity send function\n token.send(to, amount, data); // solhint-disable-line check-send-result\n }\n\n function burn(IERC777 token, uint256 amount, bytes memory data) public {\n token.burn(amount, data);\n }\n}\n\n", + "sourcePath": "contracts/mocks/ERC777SenderRecipientMock.sol", + "sourceMap": "315:3970:45:-:0;;;1063:42;1010:96;;;;;;;;;;;;;;;;;;;;315:3970;;;;;;;;;;;;;;;;", + "deployedSourceMap": "315:3970:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2085:778;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;730:228:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3924:241:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4171:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3698:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1308:771;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3530:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3808:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2869:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3273:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3117:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2085:778;2309:20;;;;;;;;;;;2305:59;;;2345:8;;;2305:59;2374:13;2398:12;:10;:12::i;:::-;2374:37;;2422:19;2444:5;:15;;;2460:4;2444:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2422:43;;2571:17;2591:5;:15;;;2607:2;2591:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2571:39;;2626:230;2660:8;2682:4;2700:2;2716:6;2736:8;;2758:12;;2792:5;2812:11;2837:9;2626:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2085:778;;;;;;;;;;;:::o;730:228:13:-;841:7;867:20;:35;888:13;867:35;;;;;;;;;;;:44;903:7;867:44;;;;;;;;;;;;;;;;;;;;;;;;;:84;;946:4;938:13;;867:84;;;520:40;;;;;;;;;;;;;;;;;;;;;;;;;;510:51;;;;;;867:84;860:91;;730:228;;;;:::o;3924:241:45:-;4088:5;:10;;;4099:2;4103:6;4111:4;4088:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3924:241;;;;:::o;4171:112::-;4252:5;:10;;;4263:6;4271:4;4252:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4171:112;;;:::o;3698:104::-;3783:12;3763:17;;:32;;;;;;;;;;;;;;;;;;3698:104;:::o;1308:771::-;1530:17;;;;;;;;;;;1526:56;;;1563:8;;;1526:56;1592:13;1616:12;:10;:12::i;:::-;1592:37;;1640:19;1662:5;:15;;;1678:4;1662:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:43;;1789:17;1809:5;:15;;;1825:2;1809:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1789:39;;1844:228;1876:8;1898:4;1916:2;1932:6;1952:8;;1974:12;;2008:5;2028:11;2053:9;1844:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1308:771;;;;;;;;;;;:::o;3530:162::-;3593:8;;;;;;;;;;;:32;;;3634:4;1267:34;;;;;;;;;;;;;;;;;;;3675:9;3593:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3530:162;:::o;3808:110::-;3899:12;3876:20;;:35;;;;;;;;;;;;;;;;;;3808:110;:::o;2869:242::-;2922:68;1170:31;;;;;;;;;;;;;;;;;;;2982:7;2922:28;:68::i;:::-;3001:12;3024:4;3001:28;;3054:4;3043:15;;:7;:15;;;3039:66;;;3074:20;3089:4;3074:14;:20::i;:::-;3039:66;2869:242;;:::o;3273:251::-;3329:71;1267:34;;;;;;;;;;;;;;;;;;;3392:7;3329:28;:71::i;:::-;3411:12;3434:4;3411:28;;3464:4;3453:15;;:7;:15;;;3449:69;;;3484:23;3502:4;3484:17;:23::i;:::-;3449:69;3273:251;;:::o;3117:150::-;3174:8;;;;;;;;;;;:32;;;3215:4;1170:31;;;;;;;;;;;;;;;;;;;3253:6;3174:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3117:150;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;1193:163:13:-;1345:4;1298:20;:35;1319:13;1298:35;;;;;;;;;;;:44;1334:7;1298:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;1193:163;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toBalance", + "type": "uint256" + } + ], + "name": "TokensReceivedCalled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toBalance", + "type": "uint256" + } + ], + "name": "TokensToSendCalled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IERC777", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "canImplementInterfaceForAddress", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "recipientFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "registerRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "registerSender", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC777", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "senderFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "shouldRevert", + "type": "bool" + } + ], + "name": "setShouldRevertReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "shouldRevert", + "type": "bool" + } + ], + "name": "setShouldRevertSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensToSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC777SenderRecipientMock.sol", + "exportedSymbols": { + "ERC777SenderRecipientMock": [ + 4580 + ] + }, + "id": 4581, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4243, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:45" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 4244, + "nodeType": "ImportDirective", + "scope": 4581, + "sourceUnit": 27, + "src": "58:28:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/IERC777.sol", + "file": "../token/ERC777/IERC777.sol", + "id": 4245, + "nodeType": "ImportDirective", + "scope": 4581, + "sourceUnit": 10797, + "src": "87:37:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/IERC777Sender.sol", + "file": "../token/ERC777/IERC777Sender.sol", + "id": 4246, + "nodeType": "ImportDirective", + "scope": 4581, + "sourceUnit": 10837, + "src": "125:43:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC777/IERC777Recipient.sol", + "file": "../token/ERC777/IERC777Recipient.sol", + "id": 4247, + "nodeType": "ImportDirective", + "scope": 4581, + "sourceUnit": 10817, + "src": "169:46:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/IERC1820Registry.sol", + "file": "../introspection/IERC1820Registry.sol", + "id": 4248, + "nodeType": "ImportDirective", + "scope": 4581, + "sourceUnit": 2541, + "src": "216:47:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/introspection/ERC1820Implementer.sol", + "file": "../introspection/ERC1820Implementer.sol", + "id": 4249, + "nodeType": "ImportDirective", + "scope": 4581, + "sourceUnit": 2425, + "src": "264:49:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4250, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "353:7:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 4251, + "nodeType": "InheritanceSpecifier", + "src": "353:7:45" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4252, + "name": "IERC777Sender", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10836, + "src": "362:13:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777Sender_$10836", + "typeString": "contract IERC777Sender" + } + }, + "id": 4253, + "nodeType": "InheritanceSpecifier", + "src": "362:13:45" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4254, + "name": "IERC777Recipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10816, + "src": "377:16:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777Recipient_$10816", + "typeString": "contract IERC777Recipient" + } + }, + "id": 4255, + "nodeType": "InheritanceSpecifier", + "src": "377:16:45" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4256, + "name": "ERC1820Implementer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2424, + "src": "395:18:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1820Implementer_$2424", + "typeString": "contract ERC1820Implementer" + } + }, + "id": 4257, + "nodeType": "InheritanceSpecifier", + "src": "395:18:45" + } + ], + "contractDependencies": [ + 26, + 2424, + 2450, + 10816, + 10836 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4580, + "linearizedBaseContracts": [ + 4580, + 2424, + 2450, + 10816, + 10836, + 26 + ], + "name": "ERC777SenderRecipientMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 4277, + "name": "TokensToSendCalled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4259, + "indexed": false, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "454:16:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "454:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4261, + "indexed": false, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "480:12:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "480:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4263, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "502:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "502:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4265, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "522:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4264, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "522:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4267, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "546:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4266, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "546:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4269, + "indexed": false, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "566:18:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4268, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "566:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4271, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "594:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "594:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4273, + "indexed": false, + "mutability": "mutable", + "name": "fromBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "617:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4272, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "617:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4275, + "indexed": false, + "mutability": "mutable", + "name": "toBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4277, + "src": "646:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "646:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "444:225:45" + }, + "src": "420:250:45" + }, + { + "anonymous": false, + "documentation": null, + "id": 4297, + "name": "TokensReceivedCalled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4279, + "indexed": false, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "712:16:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4278, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "712:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4281, + "indexed": false, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "738:12:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4283, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "760:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "760:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4285, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "780:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "780:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4287, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "804:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4286, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "804:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4289, + "indexed": false, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "824:18:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4288, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "824:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4291, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "852:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "852:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4293, + "indexed": false, + "mutability": "mutable", + "name": "fromBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "875:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4292, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "875:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4295, + "indexed": false, + "mutability": "mutable", + "name": "toBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4297, + "src": "904:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "904:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "702:225:45" + }, + "src": "676:252:45" + }, + { + "constant": false, + "id": 4299, + "mutability": "mutable", + "name": "_shouldRevertSend", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4580, + "src": "934:30:45", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4298, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "934:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4301, + "mutability": "mutable", + "name": "_shouldRevertReceive", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4580, + "src": "970:33:45", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4300, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "970:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4306, + "mutability": "mutable", + "name": "_erc1820", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4580, + "src": "1010:96:45", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2540", + "typeString": "contract IERC1820Registry" + }, + "typeName": { + "contractScope": null, + "id": 4302, + "name": "IERC1820Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2540, + "src": "1010:16:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2540", + "typeString": "contract IERC1820Registry" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234", + "id": 4304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1063:42:45", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4303, + "name": "IERC1820Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "1046:16:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1820Registry_$2540_$", + "typeString": "type(contract IERC1820Registry)" + } + }, + "id": 4305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1046:60:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2540", + "typeString": "contract IERC1820Registry" + } + }, + "visibility": "private" + }, + { + "constant": true, + "id": 4311, + "mutability": "constant", + "name": "_TOKENS_SENDER_INTERFACE_HASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4580, + "src": "1113:88:45", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1113:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243373737546f6b656e7353656e646572", + "id": 4309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1180:20:45", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895", + "typeString": "literal_string \"ERC777TokensSender\"" + }, + "value": "ERC777TokensSender" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895", + "typeString": "literal_string \"ERC777TokensSender\"" + } + ], + "id": 4308, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1170:9:45", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1170:31:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "constant": true, + "id": 4316, + "mutability": "constant", + "name": "_TOKENS_RECIPIENT_INTERFACE_HASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4580, + "src": "1207:94:45", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4312, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1207:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243373737546f6b656e73526563697069656e74", + "id": 4314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1277:23:45", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b", + "typeString": "literal_string \"ERC777TokensRecipient\"" + }, + "value": "ERC777TokensRecipient" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_b281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b", + "typeString": "literal_string \"ERC777TokensRecipient\"" + } + ], + "id": 4313, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1267:9:45", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1267:34:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "baseFunctions": [ + 10835 + ], + "body": { + "id": 4374, + "nodeType": "Block", + "src": "1516:563:45", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 4332, + "name": "_shouldRevertSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4299, + "src": "1530:17:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4337, + "nodeType": "IfStatement", + "src": "1526:56:45", + "trueBody": { + "id": 4336, + "nodeType": "Block", + "src": "1549:33:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4333, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "1563:6:45", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1563:8:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4335, + "nodeType": "ExpressionStatement", + "src": "1563:8:45" + } + ] + } + }, + { + "assignments": [ + 4339 + ], + "declarations": [ + { + "constant": false, + "id": 4339, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4374, + "src": "1592:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + }, + "typeName": { + "contractScope": null, + "id": 4338, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10796, + "src": "1592:7:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4344, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4341, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1616:10:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1616:12:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4340, + "name": "IERC777", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10796, + "src": "1608:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC777_$10796_$", + "typeString": "type(contract IERC777)" + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1592:37:45" + }, + { + "assignments": [ + 4346 + ], + "declarations": [ + { + "constant": false, + "id": 4346, + "mutability": "mutable", + "name": "fromBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4374, + "src": "1640:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4345, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1640:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4351, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4349, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4320, + "src": "1678:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4347, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4339, + "src": "1662:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 10672, + "src": "1662:15:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 4350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1662:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1640:43:45" + }, + { + "assignments": [ + 4353 + ], + "declarations": [ + { + "constant": false, + "id": 4353, + "mutability": "mutable", + "name": "toBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4374, + "src": "1789:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1789:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4358, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4356, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4322, + "src": "1825:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4354, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4339, + "src": "1809:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "id": 4355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 10672, + "src": "1809:15:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 4357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1809:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1789:39:45" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4360, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4318, + "src": "1876:8:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4361, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4320, + "src": "1898:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4362, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4322, + "src": "1916:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4363, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4324, + "src": "1932:6:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4364, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4326, + "src": "1952:8:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "id": 4365, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4328, + "src": "1974:12:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4368, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4339, + "src": "2008:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + ], + "id": 4367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2000:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2000:7:45", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2000:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4370, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4346, + "src": "2028:11:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4371, + "name": "toBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2053:9:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4359, + "name": "TokensToSendCalled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4277, + "src": "1844:18:45", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,address,uint256,uint256)" + } + }, + "id": 4372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1844:228:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4373, + "nodeType": "EmitStatement", + "src": "1839:233:45" + } + ] + }, + "documentation": null, + "functionSelector": "75ab9782", + "id": 4375, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokensToSend", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4330, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1507:8:45" + }, + "parameters": { + "id": 4329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4318, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4375, + "src": "1339:16:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1339:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4320, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4375, + "src": "1365:12:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1365:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4322, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4375, + "src": "1387:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1387:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4324, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4375, + "src": "1407:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1407:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4326, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4375, + "src": "1431:23:45", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4325, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1431:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4328, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4375, + "src": "1464:27:45", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1464:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:168:45" + }, + "returnParameters": { + "id": 4331, + "nodeType": "ParameterList", + "parameters": [], + "src": "1516:0:45" + }, + "scope": 4580, + "src": "1308:771:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 10815 + ], + "body": { + "id": 4433, + "nodeType": "Block", + "src": "2295:568:45", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 4391, + "name": "_shouldRevertReceive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4301, + "src": "2309:20:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4396, + "nodeType": "IfStatement", + "src": "2305:59:45", + "trueBody": { + "id": 4395, + "nodeType": "Block", + "src": "2331:33:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4392, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "2345:6:45", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2345:8:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4394, + "nodeType": "ExpressionStatement", + "src": "2345:8:45" + } + ] + } + }, + { + "assignments": [ + 4398 + ], + "declarations": [ + { + "constant": false, + "id": 4398, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4433, + "src": "2374:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + }, + "typeName": { + "contractScope": null, + "id": 4397, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10796, + "src": "2374:7:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4403, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4400, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2398:10:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2398:12:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4399, + "name": "IERC777", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10796, + "src": "2390:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC777_$10796_$", + "typeString": "type(contract IERC777)" + } + }, + "id": 4402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2390:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2374:37:45" + }, + { + "assignments": [ + 4405 + ], + "declarations": [ + { + "constant": false, + "id": 4405, + "mutability": "mutable", + "name": "fromBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4433, + "src": "2422:19:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2422:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4410, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4408, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4379, + "src": "2460:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4406, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4398, + "src": "2444:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "id": 4407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 10672, + "src": "2444:15:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2444:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2422:43:45" + }, + { + "assignments": [ + 4412 + ], + "declarations": [ + { + "constant": false, + "id": 4412, + "mutability": "mutable", + "name": "toBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4433, + "src": "2571:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2571:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4417, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4415, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4381, + "src": "2607:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4413, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4398, + "src": "2591:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "id": 4414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 10672, + "src": "2591:15:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 4416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2591:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2571:39:45" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4419, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4377, + "src": "2660:8:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4420, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4379, + "src": "2682:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4421, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4381, + "src": "2700:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4422, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4383, + "src": "2716:6:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4423, + "name": "userData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4385, + "src": "2736:8:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "id": 4424, + "name": "operatorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4387, + "src": "2758:12:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4427, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4398, + "src": "2792:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + ], + "id": 4426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2784:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2784:7:45", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2784:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4429, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4405, + "src": "2812:11:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4430, + "name": "toBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4412, + "src": "2837:9:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4418, + "name": "TokensReceivedCalled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2626:20:45", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,address,uint256,uint256)" + } + }, + "id": 4431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2626:230:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4432, + "nodeType": "EmitStatement", + "src": "2621:235:45" + } + ] + }, + "documentation": null, + "functionSelector": "0023de29", + "id": 4434, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokensReceived", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4389, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2286:8:45" + }, + "parameters": { + "id": 4388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4377, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4434, + "src": "2118:16:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2118:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4379, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4434, + "src": "2144:12:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4378, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2144:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4381, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4434, + "src": "2166:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4380, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2166:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4383, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4434, + "src": "2186:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2186:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4385, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4434, + "src": "2210:23:45", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4384, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2210:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4387, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4434, + "src": "2243:27:45", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4386, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2243:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2108:168:45" + }, + "returnParameters": { + "id": 4390, + "nodeType": "ParameterList", + "parameters": [], + "src": "2295:0:45" + }, + "scope": 4580, + "src": "2085:778:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4460, + "nodeType": "Block", + "src": "2912:199:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4440, + "name": "_TOKENS_SENDER_INTERFACE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4311, + "src": "2951:29:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4441, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "2982:7:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4439, + "name": "_registerInterfaceForAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2423, + "src": "2922:28:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 4442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2922:68:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4443, + "nodeType": "ExpressionStatement", + "src": "2922:68:45" + }, + { + "assignments": [ + 4445 + ], + "declarations": [ + { + "constant": false, + "id": 4445, + "mutability": "mutable", + "name": "self", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4460, + "src": "3001:12:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3001:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4450, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4448, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3024:4:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + ], + "id": 4447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3016:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3016:7:45", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3016:13:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3001:28:45" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4451, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3043:7:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 4452, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "3054:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3043:15:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4459, + "nodeType": "IfStatement", + "src": "3039:66:45", + "trueBody": { + "id": 4458, + "nodeType": "Block", + "src": "3060:45:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4455, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4445, + "src": "3089:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4454, + "name": "registerSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4478, + "src": "3074:14:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3074:20:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4457, + "nodeType": "ExpressionStatement", + "src": "3074:20:45" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "d2de6474", + "id": 4461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "senderFor", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4436, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4461, + "src": "2888:15:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4435, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2888:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2887:17:45" + }, + "returnParameters": { + "id": 4438, + "nodeType": "ParameterList", + "parameters": [], + "src": "2912:0:45" + }, + "scope": 4580, + "src": "2869:242:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4477, + "nodeType": "Block", + "src": "3164:103:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4471, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3215:4:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + ], + "id": 4470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3207:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3207:7:45", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3207:13:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4473, + "name": "_TOKENS_SENDER_INTERFACE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4311, + "src": "3222:29:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4474, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4463, + "src": "3253:6:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4466, + "name": "_erc1820", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4306, + "src": "3174:8:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2540", + "typeString": "contract IERC1820Registry" + } + }, + "id": 4468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setInterfaceImplementer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2479, + "src": "3174:32:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,bytes32,address) external" + } + }, + "id": 4475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3174:86:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4476, + "nodeType": "ExpressionStatement", + "src": "3174:86:45" + } + ] + }, + "documentation": null, + "functionSelector": "e1ecbd30", + "id": 4478, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4463, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4478, + "src": "3141:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3141:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3140:16:45" + }, + "returnParameters": { + "id": 4465, + "nodeType": "ParameterList", + "parameters": [], + "src": "3164:0:45" + }, + "scope": 4580, + "src": "3117:150:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4504, + "nodeType": "Block", + "src": "3319:205:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4484, + "name": "_TOKENS_RECIPIENT_INTERFACE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4316, + "src": "3358:32:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4485, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4480, + "src": "3392:7:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4483, + "name": "_registerInterfaceForAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2423, + "src": "3329:28:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 4486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3329:71:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4487, + "nodeType": "ExpressionStatement", + "src": "3329:71:45" + }, + { + "assignments": [ + 4489 + ], + "declarations": [ + { + "constant": false, + "id": 4489, + "mutability": "mutable", + "name": "self", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4504, + "src": "3411:12:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3411:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4494, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4492, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3434:4:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + ], + "id": 4491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3426:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3426:7:45", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3426:13:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3411:28:45" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4495, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4480, + "src": "3453:7:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 4496, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4489, + "src": "3464:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3453:15:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4503, + "nodeType": "IfStatement", + "src": "3449:69:45", + "trueBody": { + "id": 4502, + "nodeType": "Block", + "src": "3470:48:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4499, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4489, + "src": "3502:4:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4498, + "name": "registerRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4522, + "src": "3484:17:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3484:23:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4501, + "nodeType": "ExpressionStatement", + "src": "3484:23:45" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "e0eb2180", + "id": 4505, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recipientFor", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4480, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4505, + "src": "3295:15:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3295:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3294:17:45" + }, + "returnParameters": { + "id": 4482, + "nodeType": "ParameterList", + "parameters": [], + "src": "3319:0:45" + }, + "scope": 4580, + "src": "3273:251:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4521, + "nodeType": "Block", + "src": "3583:109:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4515, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3634:4:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC777SenderRecipientMock_$4580", + "typeString": "contract ERC777SenderRecipientMock" + } + ], + "id": 4514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3626:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3626:7:45", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3626:13:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4517, + "name": "_TOKENS_RECIPIENT_INTERFACE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4316, + "src": "3641:32:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4518, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4507, + "src": "3675:9:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4510, + "name": "_erc1820", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4306, + "src": "3593:8:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1820Registry_$2540", + "typeString": "contract IERC1820Registry" + } + }, + "id": 4512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setInterfaceImplementer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2479, + "src": "3593:32:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,bytes32,address) external" + } + }, + "id": 4519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3593:92:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4520, + "nodeType": "ExpressionStatement", + "src": "3593:92:45" + } + ] + }, + "documentation": null, + "functionSelector": "a8badaa5", + "id": 4522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerRecipient", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4507, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4522, + "src": "3557:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3557:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3556:19:45" + }, + "returnParameters": { + "id": 4509, + "nodeType": "ParameterList", + "parameters": [], + "src": "3583:0:45" + }, + "scope": 4580, + "src": "3530:162:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4531, + "nodeType": "Block", + "src": "3753:49:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4527, + "name": "_shouldRevertSend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4299, + "src": "3763:17:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4528, + "name": "shouldRevert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4524, + "src": "3783:12:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3763:32:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4530, + "nodeType": "ExpressionStatement", + "src": "3763:32:45" + } + ] + }, + "documentation": null, + "functionSelector": "4e4ae5a5", + "id": 4532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setShouldRevertSend", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4524, + "mutability": "mutable", + "name": "shouldRevert", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4532, + "src": "3727:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4523, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3727:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3726:19:45" + }, + "returnParameters": { + "id": 4526, + "nodeType": "ParameterList", + "parameters": [], + "src": "3753:0:45" + }, + "scope": 4580, + "src": "3698:104:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4541, + "nodeType": "Block", + "src": "3866:52:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4537, + "name": "_shouldRevertReceive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4301, + "src": "3876:20:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4538, + "name": "shouldRevert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4534, + "src": "3899:12:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3876:35:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4540, + "nodeType": "ExpressionStatement", + "src": "3876:35:45" + } + ] + }, + "documentation": null, + "functionSelector": "c97e18fc", + "id": 4542, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setShouldRevertReceive", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4534, + "mutability": "mutable", + "name": "shouldRevert", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4542, + "src": "3840:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4533, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3840:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3839:19:45" + }, + "returnParameters": { + "id": 4536, + "nodeType": "ParameterList", + "parameters": [], + "src": "3866:0:45" + }, + "scope": 4580, + "src": "3808:110:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4561, + "nodeType": "Block", + "src": "4007:158:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4556, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4546, + "src": "4099:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4557, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4548, + "src": "4103:6:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4558, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4550, + "src": "4111:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 4553, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4544, + "src": "4088:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "id": 4555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "send", + "nodeType": "MemberAccess", + "referencedDeclaration": 10682, + "src": "4088:10:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory) external" + } + }, + "id": 4559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4088:28:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4560, + "nodeType": "ExpressionStatement", + "src": "4088:28:45" + } + ] + }, + "documentation": null, + "functionSelector": "3836ef89", + "id": 4562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "send", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4544, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4562, + "src": "3938:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + }, + "typeName": { + "contractScope": null, + "id": 4543, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10796, + "src": "3938:7:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4546, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4562, + "src": "3953:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3953:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4548, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4562, + "src": "3965:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3965:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4550, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4562, + "src": "3981:17:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4549, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3981:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3937:62:45" + }, + "returnParameters": { + "id": 4552, + "nodeType": "ParameterList", + "parameters": [], + "src": "4007:0:45" + }, + "scope": 4580, + "src": "3924:241:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4578, + "nodeType": "Block", + "src": "4242:41:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4574, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "4263:6:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4575, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4568, + "src": "4271:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 4571, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4564, + "src": "4252:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "id": 4573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 10690, + "src": "4252:10:45", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,bytes memory) external" + } + }, + "id": 4576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4252:24:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4577, + "nodeType": "ExpressionStatement", + "src": "4252:24:45" + } + ] + }, + "documentation": null, + "functionSelector": "44d17187", + "id": 4579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4564, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4579, + "src": "4185:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + }, + "typeName": { + "contractScope": null, + "id": 4563, + "name": "IERC777", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10796, + "src": "4185:7:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC777_$10796", + "typeString": "contract IERC777" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4566, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4579, + "src": "4200:14:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4200:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4568, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4579, + "src": "4216:17:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4567, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4216:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4184:50:45" + }, + "returnParameters": { + "id": 4570, + "nodeType": "ParameterList", + "parameters": [], + "src": "4242:0:45" + }, + "scope": 4580, + "src": "4171:112:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4581, + "src": "315:3970:45" + } + ], + "src": "33:4254:45" + }, + "bytecode": "0x6080604052731820a4b7618bde71dce8cdc73aab6c95905fad24600160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b50611420806100756000396000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c806375ab97821161007157806375ab978214610461578063a8badaa514610599578063c97e18fc146105dd578063d2de64741461060d578063e0eb218014610651578063e1ecbd3014610695576100a8565b806223de29146100ad578063249cb3fa146101e55780633836ef891461024757806344d171871461034c5780634e4ae5a514610431575b600080fd5b6101e3600480360360c08110156100c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561014a57600080fd5b82018360208201111561015c57600080fd5b8035906020019184600183028401116401000000008311171561017e57600080fd5b90919293919293908035906020019064010000000081111561019f57600080fd5b8201836020820111156101b157600080fd5b803590602001918460018302840111640100000000831117156101d357600080fd5b90919293919293905050506106d9565b005b610231600480360360408110156101fb57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a02565b6040518082815260200191505060405180910390f35b61034a6004803603608081101561025d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111640100000000831117156102f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610abe565b005b61042f6004803603606081101561036257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103a957600080fd5b8201836020820111156103bb57600080fd5b803590602001918460018302840111640100000000831117156103dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610bd0565b005b61045f6004803603602081101561044757600080fd5b81019080803515159060200190929190505050610cad565b005b610597600480360360c081101561047757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104fe57600080fd5b82018360208201111561051057600080fd5b8035906020019184600183028401116401000000008311171561053257600080fd5b90919293919293908035906020019064010000000081111561055357600080fd5b82018360208201111561056557600080fd5b8035906020019184600183028401116401000000008311171561058757600080fd5b9091929391929390505050610cca565b005b6105db600480360360208110156105af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff4565b005b61060b600480360360208110156105f357600080fd5b81019080803515159060200190929190505050611121565b005b61064f6004803603602081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061113d565b005b6106936004803603602081101561066757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111c3565b005b6106d7600480360360208110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611249565b005b6001809054906101000a900460ff16156106f257600080fd5b60006106fc611376565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d602081101561086357600080fd5b810190808051906020019092919050505090507f47e915878c47f3ec4d7ff646a2becb229f64fd2abe4d2b5e2bb4275b0cf50d4e8b8b8b8b8b8b8b8b8b8b8b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189815260200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509d505050505050505050505050505060405180910390a15050505050505050505050565b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a6e576000801b610ab6565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b905092915050565b8373ffffffffffffffffffffffffffffffffffffffff16639bd9bbc68484846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b64578082015181840152602081019050610b49565b50505050905090810190601f168015610b915780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fe9d930383836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c43578082015181840152602081019050610c28565b50505050905090810190601f168015610c705780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b50505050505050565b80600160006101000a81548160ff02191690831515021790555050565b600160009054906101000a900460ff1615610ce457600080fd5b6000610cee611376565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d6f57600080fd5b505afa158015610d83573d6000803e3d6000fd5b505050506040513d6020811015610d9957600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2b57600080fd5b505afa158015610e3f573d6000803e3d6000fd5b505050506040513d6020811015610e5557600080fd5b810190808051906020019092919050505090507faa3e88aca472e90221daf7d3d601abafb62b120319089d7a2c2f63588da855298b8b8b8b8b8b8b8b8b8b8b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189815260200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509d505050505050505050505050505060405180910390a15050505050505050505050565b600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e73526563697069656e74000000000000000000000081525060150190506040518091039020846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b5050505050565b806001806101000a81548160ff02191690831515021790555050565b61117c60405180807f455243373737546f6b656e7353656e6465720000000000000000000000000000815250601201905060405180910390208261137e565b60003090508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111bf576111be81611249565b5b5050565b61120260405180807f455243373737546f6b656e73526563697069656e740000000000000000000000815250601501905060405180910390208261137e565b60003090508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112455761124481610ff4565b5b5050565b600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e7353656e646572000000000000000000000000000081525060120190506040518091039020846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b5050505050565b600033905090565b600160008084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea264697066735822122041e60cb23a5a72ef6f3c61a0ce915d8c91b3677d074bc1044f6dfcc277a692d264736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a85760003560e01c806375ab97821161007157806375ab978214610461578063a8badaa514610599578063c97e18fc146105dd578063d2de64741461060d578063e0eb218014610651578063e1ecbd3014610695576100a8565b806223de29146100ad578063249cb3fa146101e55780633836ef891461024757806344d171871461034c5780634e4ae5a514610431575b600080fd5b6101e3600480360360c08110156100c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561014a57600080fd5b82018360208201111561015c57600080fd5b8035906020019184600183028401116401000000008311171561017e57600080fd5b90919293919293908035906020019064010000000081111561019f57600080fd5b8201836020820111156101b157600080fd5b803590602001918460018302840111640100000000831117156101d357600080fd5b90919293919293905050506106d9565b005b610231600480360360408110156101fb57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a02565b6040518082815260200191505060405180910390f35b61034a6004803603608081101561025d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111640100000000831117156102f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610abe565b005b61042f6004803603606081101561036257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103a957600080fd5b8201836020820111156103bb57600080fd5b803590602001918460018302840111640100000000831117156103dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610bd0565b005b61045f6004803603602081101561044757600080fd5b81019080803515159060200190929190505050610cad565b005b610597600480360360c081101561047757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104fe57600080fd5b82018360208201111561051057600080fd5b8035906020019184600183028401116401000000008311171561053257600080fd5b90919293919293908035906020019064010000000081111561055357600080fd5b82018360208201111561056557600080fd5b8035906020019184600183028401116401000000008311171561058757600080fd5b9091929391929390505050610cca565b005b6105db600480360360208110156105af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff4565b005b61060b600480360360208110156105f357600080fd5b81019080803515159060200190929190505050611121565b005b61064f6004803603602081101561062357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061113d565b005b6106936004803603602081101561066757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111c3565b005b6106d7600480360360208110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611249565b005b6001809054906101000a900460ff16156106f257600080fd5b60006106fc611376565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d602081101561086357600080fd5b810190808051906020019092919050505090507f47e915878c47f3ec4d7ff646a2becb229f64fd2abe4d2b5e2bb4275b0cf50d4e8b8b8b8b8b8b8b8b8b8b8b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189815260200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509d505050505050505050505050505060405180910390a15050505050505050505050565b600080600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a6e576000801b610ab6565b60405160200180807f455243313832305f4143434550545f4d414749430000000000000000000000008152506014019050604051602081830303815290604052805190602001205b905092915050565b8373ffffffffffffffffffffffffffffffffffffffff16639bd9bbc68484846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b64578082015181840152602081019050610b49565b50505050905090810190601f168015610b915780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fe9d930383836040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c43578082015181840152602081019050610c28565b50505050905090810190601f168015610c705780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b50505050505050565b80600160006101000a81548160ff02191690831515021790555050565b600160009054906101000a900460ff1615610ce457600080fd5b6000610cee611376565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d6f57600080fd5b505afa158015610d83573d6000803e3d6000fd5b505050506040513d6020811015610d9957600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e2b57600080fd5b505afa158015610e3f573d6000803e3d6000fd5b505050506040513d6020811015610e5557600080fd5b810190808051906020019092919050505090507faa3e88aca472e90221daf7d3d601abafb62b120319089d7a2c2f63588da855298b8b8b8b8b8b8b8b8b8b8b604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189815260200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183810383528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508381038252888882818152602001925080828437600081840152601f19601f8201169050808301925050509d505050505050505050505050505060405180910390a15050505050505050505050565b600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e73526563697069656e74000000000000000000000081525060150190506040518091039020846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b5050505050565b806001806101000a81548160ff02191690831515021790555050565b61117c60405180807f455243373737546f6b656e7353656e6465720000000000000000000000000000815250601201905060405180910390208261137e565b60003090508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111bf576111be81611249565b5b5050565b61120260405180807f455243373737546f6b656e73526563697069656e740000000000000000000000815250601501905060405180910390208261137e565b60003090508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112455761124481610ff4565b5b5050565b600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e7353656e646572000000000000000000000000000081525060120190506040518091039020846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b5050505050565b600033905090565b600160008084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea264697066735822122041e60cb23a5a72ef6f3c61a0ce915d8c91b3677d074bc1044f6dfcc277a692d264736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/EnumerableMap.json b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableMap.json new file mode 100644 index 0000000..58c9d06 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableMap.json @@ -0,0 +1,5995 @@ +{ + "fileName": "EnumerableMap.sol", + "contractName": "EnumerableMap", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n * // Declare a set state variable\n * EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Map type with\n // bytes32 keys and values.\n // The Map implementation uses private functions, and user-facing\n // implementations (such as Uint256ToAddressMap) are just wrappers around\n // the underlying Map.\n // This means that we can only create new EnumerableMaps for types that fit\n // in bytes32.\n\n struct MapEntry {\n bytes32 _key;\n bytes32 _value;\n }\n\n struct Map {\n // Storage of map keys and values\n MapEntry[] _entries;\n\n // Position of the entry defined by a key in the `entries` array, plus 1\n // because index 0 means a key is not in the map.\n mapping (bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n // We read and store the key's index to prevent multiple reads from the same storage slot\n uint256 keyIndex = map._indexes[key];\n\n if (keyIndex == 0) { // Equivalent to !contains(map, key)\n map._entries.push(MapEntry({ _key: key, _value: value }));\n // The entry is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n map._indexes[key] = map._entries.length;\n return true;\n } else {\n map._entries[keyIndex - 1]._value = value;\n return false;\n }\n }\n\n /**\n * @dev Removes a key-value pair from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function _remove(Map storage map, bytes32 key) private returns (bool) {\n // We read and store the key's index to prevent multiple reads from the same storage slot\n uint256 keyIndex = map._indexes[key];\n\n if (keyIndex != 0) { // Equivalent to contains(map, key)\n // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = keyIndex - 1;\n uint256 lastIndex = map._entries.length - 1;\n\n // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n MapEntry storage lastEntry = map._entries[lastIndex];\n\n // Move the last entry to the index where the entry to delete is\n map._entries[toDeleteIndex] = lastEntry;\n // Update the index for the moved entry\n map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n // Delete the slot where the moved entry was stored\n map._entries.pop();\n\n // Delete the index for the deleted slot\n delete map._indexes[key];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function _contains(Map storage map, bytes32 key) private view returns (bool) {\n return map._indexes[key] != 0;\n }\n\n /**\n * @dev Returns the number of key-value pairs in the map. O(1).\n */\n function _length(Map storage map) private view returns (uint256) {\n return map._entries.length;\n }\n\n /**\n * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n *\n * Note that there are no guarantees on the ordering of entries inside the\n * array, and it may change when more entries are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n MapEntry storage entry = map._entries[index];\n return (entry._key, entry._value);\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n return _get(map, key, \"EnumerableMap: nonexistent key\");\n }\n\n /**\n * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n */\n function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n uint256 keyIndex = map._indexes[key];\n require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n }\n\n // UintToAddressMap\n\n struct UintToAddressMap {\n Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n return _set(map._inner, bytes32(key), bytes32(uint256(value)));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n return _remove(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n return _contains(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(UintToAddressMap storage map) internal view returns (uint256) {\n return _length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the set. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n (bytes32 key, bytes32 value) = _at(map._inner, index);\n return (uint256(key), address(uint256(value)));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n return address(uint256(_get(map._inner, bytes32(key))));\n }\n\n /**\n * @dev Same as {get}, with a custom error message when `key` is not in the map.\n */\n function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n return address(uint256(_get(map._inner, bytes32(key), errorMessage)));\n }\n}\n", + "sourcePath": "contracts/utils/EnumerableMap.sol", + "sourceMap": "764:7555:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "764:7555:108:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/EnumerableMap.sol", + "exportedSymbols": { + "EnumerableMap": [ + 13512 + ] + }, + "id": 13513, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13059, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:108" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 13060, + "nodeType": "StructuredDocumentation", + "src": "58:705:108", + "text": " @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n // Declare a set state variable\n EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported." + }, + "fullyImplemented": true, + "id": 13512, + "linearizedBaseContracts": [ + 13512 + ], + "name": "EnumerableMap", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableMap.MapEntry", + "id": 13065, + "members": [ + { + "constant": false, + "id": 13062, + "mutability": "mutable", + "name": "_key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13065, + "src": "1276:12:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13061, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1276:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13064, + "mutability": "mutable", + "name": "_value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13065, + "src": "1298:14:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13063, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1298:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "MapEntry", + "nodeType": "StructDefinition", + "scope": 13512, + "src": "1250:69:108", + "visibility": "public" + }, + { + "canonicalName": "EnumerableMap.Map", + "id": 13073, + "members": [ + { + "constant": false, + "id": 13068, + "mutability": "mutable", + "name": "_entries", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13073, + "src": "1388:19:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 13066, + "name": "MapEntry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13065, + "src": "1388:8:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "id": 13067, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1388:10:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13072, + "mutability": "mutable", + "name": "_indexes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13073, + "src": "1557:37:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 13071, + "keyType": { + "id": 13069, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1566:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1557:28:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 13070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1577:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Map", + "nodeType": "StructDefinition", + "scope": 13512, + "src": "1325:276:108", + "visibility": "public" + }, + { + "body": { + "id": 13134, + "nodeType": "Block", + "src": "1910:596:108", + "statements": [ + { + "assignments": [ + 13086 + ], + "declarations": [ + { + "constant": false, + "id": 13086, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13134, + "src": "2018:16:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13085, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2018:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13091, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13087, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13076, + "src": "2037:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13088, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "2037:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13090, + "indexExpression": { + "argumentTypes": null, + "id": 13089, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13078, + "src": "2050:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2037:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2018:36:108" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13092, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13086, + "src": "2069:8:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 13093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2081:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2069:13:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13132, + "nodeType": "Block", + "src": "2408:92:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 13128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13119, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13076, + "src": "2422:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13124, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "2422:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13125, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13121, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13086, + "src": "2435:8:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2446:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2435:12:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2422:26:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 13126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 13064, + "src": "2422:33:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 13127, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13080, + "src": "2458:5:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2422:41:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 13129, + "nodeType": "ExpressionStatement", + "src": "2422:41:108" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 13130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2484:5:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 13084, + "id": 13131, + "nodeType": "Return", + "src": "2477:12:108" + } + ] + }, + "id": 13133, + "nodeType": "IfStatement", + "src": "2065:435:108", + "trueBody": { + "id": 13118, + "nodeType": "Block", + "src": "2084:318:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13101, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13078, + "src": "2170:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 13102, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13080, + "src": "2183:5:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13100, + "name": "MapEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13065, + "src": "2153:8:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MapEntry_$13065_storage_ptr_$", + "typeString": "type(struct EnumerableMap.MapEntry storage pointer)" + } + }, + "id": 13103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "_key", + "_value" + ], + "nodeType": "FunctionCall", + "src": "2153:38:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_memory_ptr", + "typeString": "struct EnumerableMap.MapEntry memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_MapEntry_$13065_memory_ptr", + "typeString": "struct EnumerableMap.MapEntry memory" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13095, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13076, + "src": "2135:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "2135:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2135:17:108", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$13065_storage_$returns$__$", + "typeString": "function (struct EnumerableMap.MapEntry storage ref)" + } + }, + "id": 13104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2135:57:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13105, + "nodeType": "ExpressionStatement", + "src": "2135:57:108" + }, + { + "expression": { + "argumentTypes": null, + "id": 13114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13106, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13076, + "src": "2327:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13109, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "2327:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13110, + "indexExpression": { + "argumentTypes": null, + "id": 13108, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13078, + "src": "2340:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2327:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13111, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13076, + "src": "2347:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13112, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "2347:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2347:19:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2327:39:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 13115, + "nodeType": "ExpressionStatement", + "src": "2327:39:108" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 13116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2387:4:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 13084, + "id": 13117, + "nodeType": "Return", + "src": "2380:11:108" + } + ] + } + } + ] + }, + "documentation": { + "id": 13074, + "nodeType": "StructuredDocumentation", + "src": "1607:216:108", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 13135, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_set", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13076, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13135, + "src": "1842:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13075, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "1842:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13078, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13135, + "src": "1859:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13077, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1859:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13080, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13135, + "src": "1872:13:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13079, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1872:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1841:45:108" + }, + "returnParameters": { + "id": 13084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13083, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13135, + "src": "1904:4:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13082, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1904:4:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1903:6:108" + }, + "scope": 13512, + "src": "1828:678:108", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13215, + "nodeType": "Block", + "src": "2744:1447:108", + "statements": [ + { + "assignments": [ + 13146 + ], + "declarations": [ + { + "constant": false, + "id": 13146, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13215, + "src": "2852:16:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13145, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2852:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13151, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13147, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "2871:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13148, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "2871:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13150, + "indexExpression": { + "argumentTypes": null, + "id": 13149, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13140, + "src": "2884:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2871:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2852:36:108" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13152, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13146, + "src": "2903:8:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 13153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2915:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2903:13:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13213, + "nodeType": "Block", + "src": "4148:37:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 13211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4169:5:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 13144, + "id": 13212, + "nodeType": "Return", + "src": "4162:12:108" + } + ] + }, + "id": 13214, + "nodeType": "IfStatement", + "src": "2899:1286:108", + "trueBody": { + "id": 13210, + "nodeType": "Block", + "src": "2918:1224:108", + "statements": [ + { + "assignments": [ + 13156 + ], + "declarations": [ + { + "constant": false, + "id": 13156, + "mutability": "mutable", + "name": "toDeleteIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13210, + "src": "3259:21:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3259:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13160, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13157, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13146, + "src": "3283:8:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3294:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3283:12:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3259:36:108" + }, + { + "assignments": [ + 13162 + ], + "declarations": [ + { + "constant": false, + "id": 13162, + "mutability": "mutable", + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13210, + "src": "3309:17:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13161, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3309:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13168, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13163, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "3329:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "3329:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3329:19:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3351:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3329:23:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3309:43:108" + }, + { + "assignments": [ + 13170 + ], + "declarations": [ + { + "constant": false, + "id": 13170, + "mutability": "mutable", + "name": "lastEntry", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13210, + "src": "3592:26:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + }, + "typeName": { + "contractScope": null, + "id": 13169, + "name": "MapEntry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13065, + "src": "3592:8:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13175, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13171, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "3621:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "3621:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13174, + "indexExpression": { + "argumentTypes": null, + "id": 13173, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13162, + "src": "3634:9:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3621:23:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3592:52:108" + }, + { + "expression": { + "argumentTypes": null, + "id": 13182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13176, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "3736:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "3736:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13180, + "indexExpression": { + "argumentTypes": null, + "id": 13178, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13156, + "src": "3749:13:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3736:27:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 13181, + "name": "lastEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13170, + "src": "3766:9:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "src": "3736:39:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 13183, + "nodeType": "ExpressionStatement", + "src": "3736:39:108" + }, + { + "expression": { + "argumentTypes": null, + "id": 13193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13184, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "3841:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "3841:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13189, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13186, + "name": "lastEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13170, + "src": "3854:9:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 13187, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_key", + "nodeType": "MemberAccess", + "referencedDeclaration": 13062, + "src": "3854:14:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3841:28:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13190, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13156, + "src": "3872:13:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3888:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3872:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3841:48:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 13194, + "nodeType": "ExpressionStatement", + "src": "3841:48:108" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13195, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "3995:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "3995:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3995:16:108", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 13200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3995:18:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13201, + "nodeType": "ExpressionStatement", + "src": "3995:18:108" + }, + { + "expression": { + "argumentTypes": null, + "id": 13206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4081:24:108", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13202, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13138, + "src": "4088:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13203, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "4088:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13205, + "indexExpression": { + "argumentTypes": null, + "id": 13204, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13140, + "src": "4101:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4088:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13207, + "nodeType": "ExpressionStatement", + "src": "4081:24:108" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 13208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4127:4:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 13144, + "id": 13209, + "nodeType": "Return", + "src": "4120:11:108" + } + ] + } + } + ] + }, + "documentation": { + "id": 13136, + "nodeType": "StructuredDocumentation", + "src": "2512:157:108", + "text": " @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 13216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13138, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13216, + "src": "2691:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13137, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "2691:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13140, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13216, + "src": "2708:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13139, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2708:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2690:30:108" + }, + "returnParameters": { + "id": 13144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13143, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13216, + "src": "2738:4:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13142, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2738:4:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2737:6:108" + }, + "scope": 13512, + "src": "2674:1517:108", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13233, + "nodeType": "Block", + "src": "4347:46:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13226, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13219, + "src": "4364:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13227, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "4364:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13229, + "indexExpression": { + "argumentTypes": null, + "id": 13228, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13221, + "src": "4377:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4364:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 13230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4364:22:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13225, + "id": 13232, + "nodeType": "Return", + "src": "4357:29:108" + } + ] + }, + "documentation": { + "id": 13217, + "nodeType": "StructuredDocumentation", + "src": "4197:68:108", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 13234, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13219, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13234, + "src": "4289:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13218, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "4289:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13221, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13234, + "src": "4306:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13220, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4306:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4288:30:108" + }, + "returnParameters": { + "id": 13225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13224, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13234, + "src": "4341:4:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13223, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4341:4:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4340:6:108" + }, + "scope": 13512, + "src": "4270:123:108", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13246, + "nodeType": "Block", + "src": "4548:43:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13242, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13237, + "src": "4565:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13243, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "4565:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4565:19:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13241, + "id": 13245, + "nodeType": "Return", + "src": "4558:26:108" + } + ] + }, + "documentation": { + "id": 13235, + "nodeType": "StructuredDocumentation", + "src": "4399:79:108", + "text": " @dev Returns the number of key-value pairs in the map. O(1)." + }, + "id": 13247, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13237, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13247, + "src": "4500:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13236, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "4500:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4499:17:108" + }, + "returnParameters": { + "id": 13241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13240, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13247, + "src": "4539:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4539:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4538:9:108" + }, + "scope": 13512, + "src": "4483:108:108", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13281, + "nodeType": "Block", + "src": "5019:189:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13260, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13250, + "src": "5037:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13261, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "5037:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5037:19:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 13263, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13252, + "src": "5059:5:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5037:27:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473", + "id": 13265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5066:36:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155", + "typeString": "literal_string \"EnumerableMap: index out of bounds\"" + }, + "value": "EnumerableMap: index out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155", + "typeString": "literal_string \"EnumerableMap: index out of bounds\"" + } + ], + "id": 13259, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5029:7:108", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5029:74:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13267, + "nodeType": "ExpressionStatement", + "src": "5029:74:108" + }, + { + "assignments": [ + 13269 + ], + "declarations": [ + { + "constant": false, + "id": 13269, + "mutability": "mutable", + "name": "entry", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13281, + "src": "5114:22:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + }, + "typeName": { + "contractScope": null, + "id": 13268, + "name": "MapEntry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13065, + "src": "5114:8:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13274, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13270, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13250, + "src": "5139:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "5139:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13273, + "indexExpression": { + "argumentTypes": null, + "id": 13272, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13252, + "src": "5152:5:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5139:19:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5114:44:108" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13275, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13269, + "src": "5176:5:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 13276, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_key", + "nodeType": "MemberAccess", + "referencedDeclaration": 13062, + "src": "5176:10:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13277, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13269, + "src": "5188:5:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 13278, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 13064, + "src": "5188:12:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 13279, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5175:26:108", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "functionReturnParameters": 13258, + "id": 13280, + "nodeType": "Return", + "src": "5168:33:108" + } + ] + }, + "documentation": { + "id": 13248, + "nodeType": "StructuredDocumentation", + "src": "4596:333:108", + "text": " @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 13282, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13250, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13282, + "src": "4947:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13249, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "4947:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13252, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13282, + "src": "4964:13:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4964:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4946:32:108" + }, + "returnParameters": { + "id": 13258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13255, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13282, + "src": "5001:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13254, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5001:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13257, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13282, + "src": "5010:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5010:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5000:18:108" + }, + "scope": 13512, + "src": "4934:274:108", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13298, + "nodeType": "Block", + "src": "5435:72:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13293, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13285, + "src": "5457:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + { + "argumentTypes": null, + "id": 13294, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13287, + "src": "5462:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579", + "id": 13295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5467:32:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072", + "typeString": "literal_string \"EnumerableMap: nonexistent key\"" + }, + "value": "EnumerableMap: nonexistent key" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072", + "typeString": "literal_string \"EnumerableMap: nonexistent key\"" + } + ], + "id": 13292, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13299, + 13334 + ], + "referencedDeclaration": 13334, + "src": "5452:4:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13073_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)" + } + }, + "id": 13296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5452:48:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 13291, + "id": 13297, + "nodeType": "Return", + "src": "5445:55:108" + } + ] + }, + "documentation": { + "id": 13283, + "nodeType": "StructuredDocumentation", + "src": "5214:141:108", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 13299, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13285, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13299, + "src": "5374:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13284, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "5374:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13287, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13299, + "src": "5391:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13286, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5391:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5373:30:108" + }, + "returnParameters": { + "id": 13291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13290, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13299, + "src": "5426:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13289, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5426:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5425:9:108" + }, + "scope": 13512, + "src": "5360:147:108", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13333, + "nodeType": "Block", + "src": "5718:212:108", + "statements": [ + { + "assignments": [ + 13312 + ], + "declarations": [ + { + "constant": false, + "id": 13312, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13333, + "src": "5728:16:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5728:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13317, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13313, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13302, + "src": "5747:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13314, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13072, + "src": "5747:12:108", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13316, + "indexExpression": { + "argumentTypes": null, + "id": 13315, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13304, + "src": "5760:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5747:17:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5728:36:108" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13319, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13312, + "src": "5782:8:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 13320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5794:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5782:13:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 13322, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13306, + "src": "5797:12:108", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 13318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5774:7:108", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5774:36:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13324, + "nodeType": "ExpressionStatement", + "src": "5774:36:108" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13325, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13302, + "src": "5863:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 13326, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "5863:12:108", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$13065_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 13330, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13327, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13312, + "src": "5876:8:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5887:1:108", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5876:12:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5863:26:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$13065_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 13331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 13064, + "src": "5863:33:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 13310, + "id": 13332, + "nodeType": "Return", + "src": "5856:40:108" + } + ] + }, + "documentation": { + "id": 13300, + "nodeType": "StructuredDocumentation", + "src": "5513:97:108", + "text": " @dev Same as {_get}, with a custom error message when `key` is not in the map." + }, + "id": 13334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13302, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13334, + "src": "5629:15:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13301, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "5629:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13304, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13334, + "src": "5646:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13303, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5646:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13306, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13334, + "src": "5659:26:108", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5659:6:108", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5628:58:108" + }, + "returnParameters": { + "id": 13310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13309, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13334, + "src": "5709:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13308, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5709:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5708:9:108" + }, + "scope": 13512, + "src": "5615:315:108", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableMap.UintToAddressMap", + "id": 13337, + "members": [ + { + "constant": false, + "id": 13336, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13337, + "src": "5995:10:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 13335, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13073, + "src": "5995:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "UintToAddressMap", + "nodeType": "StructDefinition", + "scope": 13512, + "src": "5961:51:108", + "visibility": "public" + }, + { + "body": { + "id": 13365, + "nodeType": "Block", + "src": "6334:79:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13350, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13340, + "src": "6356:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13351, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "6356:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13354, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13342, + "src": "6376:3:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6368:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13352, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6368:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6368:12:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13360, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13344, + "src": "6398:5:108", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6390:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6390:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6390:14:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6382:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13356, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6382:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6382:23:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13349, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13135, + "src": "6351:4:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$13073_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 13363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6351:55:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13348, + "id": 13364, + "nodeType": "Return", + "src": "6344:62:108" + } + ] + }, + "documentation": { + "id": 13338, + "nodeType": "StructuredDocumentation", + "src": "6018:216:108", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 13366, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13340, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13366, + "src": "6252:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13339, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "6252:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13342, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13366, + "src": "6282:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6282:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13344, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13366, + "src": "6295:13:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13343, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6295:7:108", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6251:58:108" + }, + "returnParameters": { + "id": 13348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13347, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13366, + "src": "6328:4:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13346, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6328:4:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6327:6:108" + }, + "scope": 13512, + "src": "6239:174:108", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13385, + "nodeType": "Block", + "src": "6655:57:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13377, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13369, + "src": "6680:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13378, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "6680:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13381, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13371, + "src": "6700:3:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6692:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13379, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6692:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6692:12:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13376, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13216, + "src": "6672:7:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$13073_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 13383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6672:33:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13375, + "id": 13384, + "nodeType": "Return", + "src": "6665:40:108" + } + ] + }, + "documentation": { + "id": 13367, + "nodeType": "StructuredDocumentation", + "src": "6419:148:108", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 13386, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13369, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13386, + "src": "6588:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13368, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "6588:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13371, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13386, + "src": "6618:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6618:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6587:43:108" + }, + "returnParameters": { + "id": 13375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13374, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13386, + "src": "6649:4:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13373, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6649:4:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6648:6:108" + }, + "scope": 13512, + "src": "6572:140:108", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13405, + "nodeType": "Block", + "src": "6881:59:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13397, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13389, + "src": "6908:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13398, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "6908:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13401, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13391, + "src": "6928:3:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6920:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13399, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6920:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6920:12:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13396, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13234, + "src": "6898:9:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13073_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 13403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6898:35:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13395, + "id": 13404, + "nodeType": "Return", + "src": "6891:42:108" + } + ] + }, + "documentation": { + "id": 13387, + "nodeType": "StructuredDocumentation", + "src": "6718:68:108", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 13406, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13389, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13406, + "src": "6809:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13388, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "6809:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13391, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13406, + "src": "6839:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6839:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6808:43:108" + }, + "returnParameters": { + "id": 13395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13394, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13406, + "src": "6875:4:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13393, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6875:4:108", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6874:6:108" + }, + "scope": 13512, + "src": "6791:149:108", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13419, + "nodeType": "Block", + "src": "7101:43:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13415, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13409, + "src": "7126:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13416, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "7126:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + ], + "id": 13414, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13247, + "src": "7118:7:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13073_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)" + } + }, + "id": 13417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7118:19:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13413, + "id": 13418, + "nodeType": "Return", + "src": "7111:26:108" + } + ] + }, + "documentation": { + "id": 13407, + "nodeType": "StructuredDocumentation", + "src": "6946:72:108", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 13420, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13409, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13420, + "src": "7039:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13408, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "7039:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7038:30:108" + }, + "returnParameters": { + "id": 13413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13412, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13420, + "src": "7092:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7092:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7091:9:108" + }, + "scope": 13512, + "src": "7023:121:108", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13455, + "nodeType": "Block", + "src": "7570:126:108", + "statements": [ + { + "assignments": [ + 13433, + 13435 + ], + "declarations": [ + { + "constant": false, + "id": 13433, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13455, + "src": "7581:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13432, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7581:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13435, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13455, + "src": "7594:13:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7594:7:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13441, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13437, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13423, + "src": "7615:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13438, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "7615:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "id": 13439, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13425, + "src": "7627:5:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13436, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13282, + "src": "7611:3:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13073_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 13440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7611:22:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7580:53:108" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13444, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13433, + "src": "7659:3:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7651:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7651:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7651:12:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13450, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13435, + "src": "7681:5:108", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7673:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7673:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7673:14:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7665:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7665:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7665:23:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 13453, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7650:39:108", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$", + "typeString": "tuple(uint256,address payable)" + } + }, + "functionReturnParameters": 13431, + "id": 13454, + "nodeType": "Return", + "src": "7643:46:108" + } + ] + }, + "documentation": { + "id": 13421, + "nodeType": "StructuredDocumentation", + "src": "7149:318:108", + "text": " @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 13456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13423, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13456, + "src": "7484:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13422, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "7484:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13425, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13456, + "src": "7514:13:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7514:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7483:45:108" + }, + "returnParameters": { + "id": 13431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13428, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13456, + "src": "7552:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7552:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13456, + "src": "7561:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13429, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7561:7:108", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7551:18:108" + }, + "scope": 13512, + "src": "7472:224:108", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13481, + "nodeType": "Block", + "src": "7936:72:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13471, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13459, + "src": "7974:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13472, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "7974:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13475, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "7994:3:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7986:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7986:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7986:12:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13470, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13299, + 13334 + ], + "referencedDeclaration": 13299, + "src": "7969:4:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13073_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 13477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7969:30:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7961:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7961:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7961:39:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7953:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7953:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7953:48:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 13465, + "id": 13480, + "nodeType": "Return", + "src": "7946:55:108" + } + ] + }, + "documentation": { + "id": 13457, + "nodeType": "StructuredDocumentation", + "src": "7702:141:108", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 13482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13459, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13482, + "src": "7861:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13458, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "7861:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13461, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13482, + "src": "7891:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7891:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7860:43:108" + }, + "returnParameters": { + "id": 13465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13464, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13482, + "src": "7927:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7927:7:108", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7926:9:108" + }, + "scope": 13512, + "src": "7848:160:108", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13510, + "nodeType": "Block", + "src": "8231:86:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13499, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13485, + "src": "8269:3:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 13500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13336, + "src": "8269:10:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13503, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13487, + "src": "8289:3:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8281:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13501, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8281:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8281:12:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 13505, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13489, + "src": "8295:12:108", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$13073_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 13498, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13299, + 13334 + ], + "referencedDeclaration": 13334, + "src": "8264:4:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13073_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)" + } + }, + "id": 13506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8264:44:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8256:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8256:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8256:53:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8248:7:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8248:7:108", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8248:62:108", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 13493, + "id": 13509, + "nodeType": "Return", + "src": "8241:69:108" + } + ] + }, + "documentation": { + "id": 13483, + "nodeType": "StructuredDocumentation", + "src": "8014:96:108", + "text": " @dev Same as {get}, with a custom error message when `key` is not in the map." + }, + "id": 13511, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13485, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13511, + "src": "8128:28:108", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 13484, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13337, + "src": "8128:16:108", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$13337_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13487, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13511, + "src": "8158:11:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8158:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13489, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13511, + "src": "8171:26:108", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13488, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8171:6:108", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8127:71:108" + }, + "returnParameters": { + "id": 13493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13492, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13511, + "src": "8222:7:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8222:7:108", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8221:9:108" + }, + "scope": 13512, + "src": "8115:202:108", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 13513, + "src": "764:7555:108" + } + ], + "src": "33:8287:108" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1830b2313699733ce33489627f3a4ca15f7564a62d118ee578f6342ab6a28e164736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1830b2313699733ce33489627f3a4ca15f7564a62d118ee578f6342ab6a28e164736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/EnumerableMapMock.json b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableMapMock.json new file mode 100644 index 0000000..ff4718f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableMapMock.json @@ -0,0 +1,1431 @@ +{ + "fileName": "EnumerableMapMock.sol", + "contractName": "EnumerableMapMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/EnumerableMap.sol\";\n\ncontract EnumerableMapMock {\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n\n event OperationResult(bool result);\n\n EnumerableMap.UintToAddressMap private _map;\n\n function contains(uint256 key) public view returns (bool) {\n return _map.contains(key);\n }\n\n function set(uint256 key, address value) public {\n bool result = _map.set(key, value);\n emit OperationResult(result);\n }\n\n function remove(uint256 key) public {\n bool result = _map.remove(key);\n emit OperationResult(result);\n }\n\n function length() public view returns (uint256) {\n return _map.length();\n }\n\n function at(uint256 index) public view returns (uint256 key, address value) {\n return _map.at(index);\n }\n\n\n function get(uint256 key) public view returns (address) {\n return _map.get(key);\n }\n}\n", + "sourcePath": "contracts/mocks/EnumerableMapMock.sol", + "sourceMap": "96:868:46:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "96:868:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;657:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;387:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;530:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;869:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;281:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;748:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;657:85;696:7;722:13;:4;:11;:13::i;:::-;715:20;;657:85;:::o;387:137::-;445:11;459:20;468:3;473:5;459:4;:8;;:20;;;;;:::i;:::-;445:34;;494:23;510:6;494:23;;;;;;;;;;;;;;;;;;;;;;387:137;;;:::o;530:121::-;576:11;590:16;602:3;590:4;:11;;:16;;;;:::i;:::-;576:30;;621:23;637:6;621:23;;;;;;;;;;;;;;;;;;;;;;530:121;;:::o;869:93::-;916:7;942:13;951:3;942:4;:8;;:13;;;;:::i;:::-;935:20;;869:93;;;:::o;281:100::-;333:4;356:18;370:3;356:4;:13;;:18;;;;:::i;:::-;349:25;;281:100;;;:::o;748:114::-;796:11;809:13;841:14;849:5;841:4;:7;;:14;;;;:::i;:::-;834:21;;;;748:114;;;:::o;7023:121:95:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;6239:174::-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;6572:140::-;6649:4;6672:33;6680:3;:10;;6700:3;6692:12;;6672:7;:33::i;:::-;6665:40;;6572:140;;;;:::o;7848:160::-;7927:7;7969:30;7974:3;:10;;7994:3;7986:12;;7969:4;:30::i;:::-;7961:39;;7946:55;;7848:160;;;;:::o;6791:149::-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;7472:224::-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;1828:678::-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;2674:1517::-;2738:4;2852:16;2871:3;:12;;:17;2884:3;2871:17;;;;;;;;;;;;2852:36;;2915:1;2903:8;:13;2899:1286;;3259:21;3294:1;3283:8;:12;3259:36;;3309:17;3351:1;3329:3;:12;;:19;;;;:23;3309:43;;3592:26;3621:3;:12;;3634:9;3621:23;;;;;;;;;;;;;;;;;;3592:52;;3766:9;3736:3;:12;;3749:13;3736:27;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;3888:1;3872:13;:17;3841:3;:12;;:28;3854:9;:14;;;3841:28;;;;;;;;;;;:48;;;;3995:3;:12;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:3;:12;;:17;4101:3;4088:17;;;;;;;;;;;4081:24;;;4127:4;4120:11;;;;;;;;2899:1286;4169:5;4162:12;;;2674:1517;;;;;:::o;5360:147::-;5426:7;5452:48;5457:3;5462;5452:48;;;;;;;;;;;;;;;;;:4;:48::i;:::-;5445:55;;5360:147;;;;:::o;4270:123::-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;4934:274::-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "result", + "type": "bool" + } + ], + "name": "OperationResult", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "at", + "outputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + }, + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "name": "contains", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "name": "get", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "length", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "name": "remove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + }, + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/EnumerableMapMock.sol", + "exportedSymbols": { + "EnumerableMapMock": [ + 4681 + ] + }, + "id": 4682, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4582, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:46" + }, + { + "absolutePath": "contracts/utils/EnumerableMap.sol", + "file": "../utils/EnumerableMap.sol", + "id": 4583, + "nodeType": "ImportDirective", + "scope": 4682, + "sourceUnit": 11601, + "src": "58:36:46", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4681, + "linearizedBaseContracts": [ + 4681 + ], + "name": "EnumerableMapMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4586, + "libraryName": { + "contractScope": null, + "id": 4584, + "name": "EnumerableMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11600, + "src": "135:13:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableMap_$11600", + "typeString": "library EnumerableMap" + } + }, + "nodeType": "UsingForDirective", + "src": "129:55:46", + "typeName": { + "contractScope": null, + "id": 4585, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11425, + "src": "153:30:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 4590, + "name": "OperationResult", + "nodeType": "EventDefinition", + "parameters": { + "id": 4589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4588, + "indexed": false, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4590, + "src": "212:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4587, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "212:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "211:13:46" + }, + "src": "190:35:46" + }, + { + "constant": false, + "id": 4592, + "mutability": "mutable", + "name": "_map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4681, + "src": "231:43:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 4591, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11425, + "src": "231:30:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4604, + "nodeType": "Block", + "src": "339:42:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4601, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4594, + "src": "370:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4599, + "name": "_map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "356:4:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 4600, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 11494, + "src": "356:13:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$11425_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$11425_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 4602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "356:18:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4598, + "id": 4603, + "nodeType": "Return", + "src": "349:25:46" + } + ] + }, + "documentation": null, + "functionSelector": "c34052e0", + "id": 4605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4594, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4605, + "src": "299:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "299:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "298:13:46" + }, + "returnParameters": { + "id": 4598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4597, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4605, + "src": "333:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4596, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "333:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "332:6:46" + }, + "scope": 4681, + "src": "281:100:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4624, + "nodeType": "Block", + "src": "435:89:46", + "statements": [ + { + "assignments": [ + 4613 + ], + "declarations": [ + { + "constant": false, + "id": 4613, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4624, + "src": "445:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4612, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "445:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4619, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4616, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4607, + "src": "468:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4609, + "src": "473:5:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4614, + "name": "_map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "459:4:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 4615, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 11454, + "src": "459:8:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$11425_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$11425_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 4618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "459:20:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "445:34:46" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4621, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4613, + "src": "510:6:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4620, + "name": "OperationResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "494:15:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 4622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "494:23:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4623, + "nodeType": "EmitStatement", + "src": "489:28:46" + } + ] + }, + "documentation": null, + "functionSelector": "2f30c6f6", + "id": 4625, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4607, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4625, + "src": "400:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "400:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4609, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4625, + "src": "413:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "399:28:46" + }, + "returnParameters": { + "id": 4611, + "nodeType": "ParameterList", + "parameters": [], + "src": "435:0:46" + }, + "scope": 4681, + "src": "387:137:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4641, + "nodeType": "Block", + "src": "566:85:46", + "statements": [ + { + "assignments": [ + 4631 + ], + "declarations": [ + { + "constant": false, + "id": 4631, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4641, + "src": "576:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4630, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "576:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4636, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4634, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4627, + "src": "602:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4632, + "name": "_map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "590:4:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 4633, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 11474, + "src": "590:11:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$11425_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$11425_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)" + } + }, + "id": 4635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "590:16:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "576:30:46" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4638, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4631, + "src": "637:6:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4637, + "name": "OperationResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "621:15:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 4639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "621:23:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4640, + "nodeType": "EmitStatement", + "src": "616:28:46" + } + ] + }, + "documentation": null, + "functionSelector": "4cc82215", + "id": 4642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4627, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4642, + "src": "546:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "546:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "545:13:46" + }, + "returnParameters": { + "id": 4629, + "nodeType": "ParameterList", + "parameters": [], + "src": "566:0:46" + }, + "scope": 4681, + "src": "530:121:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4651, + "nodeType": "Block", + "src": "705:37:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 4647, + "name": "_map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "722:4:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 4648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 11508, + "src": "722:11:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$11425_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$11425_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)" + } + }, + "id": 4649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "722:13:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4646, + "id": 4650, + "nodeType": "Return", + "src": "715:20:46" + } + ] + }, + "documentation": null, + "functionSelector": "1f7b6d32", + "id": 4652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4643, + "nodeType": "ParameterList", + "parameters": [], + "src": "672:2:46" + }, + "returnParameters": { + "id": 4646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4645, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4652, + "src": "696:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "696:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "695:9:46" + }, + "scope": 4681, + "src": "657:85:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4666, + "nodeType": "Block", + "src": "824:38:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4663, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4654, + "src": "849:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4661, + "name": "_map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "841:4:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 4662, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 11544, + "src": "841:7:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$11425_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$11425_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)" + } + }, + "id": 4664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "841:14:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$", + "typeString": "tuple(uint256,address)" + } + }, + "functionReturnParameters": 4660, + "id": 4665, + "nodeType": "Return", + "src": "834:21:46" + } + ] + }, + "documentation": null, + "functionSelector": "e0886f90", + "id": 4667, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4654, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4667, + "src": "760:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "760:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "759:15:46" + }, + "returnParameters": { + "id": 4660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4657, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4667, + "src": "796:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4656, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "796:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4659, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4667, + "src": "809:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "809:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "795:28:46" + }, + "scope": 4681, + "src": "748:114:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4679, + "nodeType": "Block", + "src": "925:37:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4676, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4669, + "src": "951:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4674, + "name": "_map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "942:4:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$11425_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 4675, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 11570, + "src": "942:8:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$11425_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$11425_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (address)" + } + }, + "id": 4677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "942:13:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4673, + "id": 4678, + "nodeType": "Return", + "src": "935:20:46" + } + ] + }, + "documentation": null, + "functionSelector": "9507d39a", + "id": 4680, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4669, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4680, + "src": "882:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "881:13:46" + }, + "returnParameters": { + "id": 4673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4672, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4680, + "src": "916:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "916:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "915:9:46" + }, + "scope": 4681, + "src": "869:93:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4682, + "src": "96:868:46" + } + ], + "src": "33:932:46" + }, + "bytecode": "0x608060405234801561001057600080fd5b5061086a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631f7b6d32146100675780632f30c6f6146100855780634cc82215146100d35780639507d39a14610101578063c34052e01461016f578063e0886f90146101b5575b600080fd5b61006f61022a565b6040518082815260200191505060405180910390f35b6100d16004803603604081101561009b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061023b565b005b6100ff600480360360208110156100e957600080fd5b8101908080359060200190929190505050610295565b005b61012d6004803603602081101561011757600080fd5b81019080803590602001909291905050506102ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019b6004803603602081101561018557600080fd5b8101908080359060200190929190505050610309565b604051808215151515815260200191505060405180910390f35b6101e1600480360360208110156101cb57600080fd5b8101908080359060200190929190505050610326565b604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b60006102366000610346565b905090565b60006102538383600061035b9092919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a1505050565b60006102ab82600061039090919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a15050565b60006103028260006103aa90919063ffffffff16565b9050919050565b600061031f8260006103c790919063ffffffff16565b9050919050565b60008061033d8360006103e190919063ffffffff16565b91509150915091565b600061035482600001610410565b9050919050565b6000610387846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b610421565b90509392505050565b60006103a2836000018360001b6104fd565b905092915050565b60006103bc836000018360001b610616565b60001c905092915050565b60006103d9836000018360001b610660565b905092915050565b6000806000806103f48660000186610683565b915091508160001c8160001c8090509350935050509250929050565b600081600001805490509050919050565b60008084600101600085815260200190815260200160002054905060008114156104c8578460000160405180604001604052808681526020018581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084600001805490508560010160008681526020019081526020016000208190555060019150506104f6565b828560000160018303815481106104db57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b6000808360010160008481526020019081526020016000205490506000811461060a576000600182039050600060018660000180549050039050600086600001828154811061054857fe5b906000526020600020906002020190508087600001848154811061056857fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600183018760010160008360000154815260200190815260200160002081905550866000018054806105bb57fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050610610565b60009150505b92915050565b600061065883836040518060400160405280601e81526020017f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000081525061071c565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080828460000180549050116106e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108136022913960400191505060405180910390fd5b60008460000184815481106106f657fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107a857808201518184015260208101905061078d565b50505050905090810190601f1680156107d55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106107f657fe5b906000526020600020906002020160010154915050939250505056fe456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473a2646970667358221220917bb992710eb7b68a0281d51c779f4c9fccb6db3535335238b05734f0284c7f64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80631f7b6d32146100675780632f30c6f6146100855780634cc82215146100d35780639507d39a14610101578063c34052e01461016f578063e0886f90146101b5575b600080fd5b61006f61022a565b6040518082815260200191505060405180910390f35b6100d16004803603604081101561009b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061023b565b005b6100ff600480360360208110156100e957600080fd5b8101908080359060200190929190505050610295565b005b61012d6004803603602081101561011757600080fd5b81019080803590602001909291905050506102ec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019b6004803603602081101561018557600080fd5b8101908080359060200190929190505050610309565b604051808215151515815260200191505060405180910390f35b6101e1600480360360208110156101cb57600080fd5b8101908080359060200190929190505050610326565b604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b60006102366000610346565b905090565b60006102538383600061035b9092919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a1505050565b60006102ab82600061039090919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a15050565b60006103028260006103aa90919063ffffffff16565b9050919050565b600061031f8260006103c790919063ffffffff16565b9050919050565b60008061033d8360006103e190919063ffffffff16565b91509150915091565b600061035482600001610410565b9050919050565b6000610387846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b610421565b90509392505050565b60006103a2836000018360001b6104fd565b905092915050565b60006103bc836000018360001b610616565b60001c905092915050565b60006103d9836000018360001b610660565b905092915050565b6000806000806103f48660000186610683565b915091508160001c8160001c8090509350935050509250929050565b600081600001805490509050919050565b60008084600101600085815260200190815260200160002054905060008114156104c8578460000160405180604001604052808681526020018581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084600001805490508560010160008681526020019081526020016000208190555060019150506104f6565b828560000160018303815481106104db57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b6000808360010160008481526020019081526020016000205490506000811461060a576000600182039050600060018660000180549050039050600086600001828154811061054857fe5b906000526020600020906002020190508087600001848154811061056857fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600183018760010160008360000154815260200190815260200160002081905550866000018054806105bb57fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050610610565b60009150505b92915050565b600061065883836040518060400160405280601e81526020017f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000081525061071c565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080828460000180549050116106e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108136022913960400191505060405180910390fd5b60008460000184815481106106f657fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107a857808201518184015260208101905061078d565b50505050905090810190601f1680156107d55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106107f657fe5b906000526020600020906002020160010154915050939250505056fe456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473a2646970667358221220917bb992710eb7b68a0281d51c779f4c9fccb6db3535335238b05734f0284c7f64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/EnumerableSet.json b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableSet.json new file mode 100644 index 0000000..ac67ec6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableSet.json @@ -0,0 +1,5090 @@ +{ + "fileName": "EnumerableSet.sol", + "contractName": "EnumerableSet", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256`\n * (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping (bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) { // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs\n // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n bytes32 lastvalue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastvalue;\n // Update the index for the moved value\n set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n require(set._values.length > index, \"EnumerableSet: index out of bounds\");\n return set._values[index];\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(value)));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(value)));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(value)));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint256(_at(set._inner, index)));\n }\n\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n}\n", + "sourcePath": "contracts/utils/EnumerableSet.sol", + "sourceMap": "724:7062:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "724:7062:109:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 13907 + ] + }, + "id": 13908, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13514, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:109" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 13515, + "nodeType": "StructuredDocumentation", + "src": "58:665:109", + "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256`\n (`UintSet`) are supported." + }, + "fullyImplemented": true, + "id": 13907, + "linearizedBaseContracts": [ + 13907 + ], + "name": "EnumerableSet", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 13523, + "members": [ + { + "constant": false, + "id": 13518, + "mutability": "mutable", + "name": "_values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13523, + "src": "1246:17:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 13516, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1246:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 13517, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1246:9:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13522, + "mutability": "mutable", + "name": "_indexes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13523, + "src": "1397:37:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 13521, + "keyType": { + "id": 13519, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1406:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1397:28:109", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 13520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1417:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Set", + "nodeType": "StructDefinition", + "scope": 13907, + "src": "1192:249:109", + "visibility": "public" + }, + { + "body": { + "id": 13563, + "nodeType": "Block", + "src": "1680:335:109", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 13537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1694:22:109", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13534, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13526, + "src": "1705:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "argumentTypes": null, + "id": 13535, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13528, + "src": "1710:5:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13533, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13662, + "src": "1695:9:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 13536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1695:21:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13561, + "nodeType": "Block", + "src": "1972:37:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 13559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1993:5:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 13532, + "id": 13560, + "nodeType": "Return", + "src": "1986:12:109" + } + ] + }, + "id": 13562, + "nodeType": "IfStatement", + "src": "1690:319:109", + "trueBody": { + "id": 13558, + "nodeType": "Block", + "src": "1718:248:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13543, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13528, + "src": "1749:5:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13538, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13526, + "src": "1732:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "1732:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1732:16:109", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 13544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1732:23:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13545, + "nodeType": "ExpressionStatement", + "src": "1732:23:109" + }, + { + "expression": { + "argumentTypes": null, + "id": 13554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13546, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13526, + "src": "1890:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13522, + "src": "1890:12:109", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13550, + "indexExpression": { + "argumentTypes": null, + "id": 13548, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13528, + "src": "1903:5:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1890:19:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13551, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13526, + "src": "1912:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13552, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "1912:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1912:18:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1890:40:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 13555, + "nodeType": "ExpressionStatement", + "src": "1890:40:109" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 13556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1951:4:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 13532, + "id": 13557, + "nodeType": "Return", + "src": "1944:11:109" + } + ] + } + } + ] + }, + "documentation": { + "id": 13524, + "nodeType": "StructuredDocumentation", + "src": "1447:159:109", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 13564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13526, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13564, + "src": "1625:15:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13525, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "1625:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13528, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13564, + "src": "1642:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13527, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1642:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1624:32:109" + }, + "returnParameters": { + "id": 13532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13531, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13564, + "src": "1674:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13530, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1674:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1673:6:109" + }, + "scope": 13907, + "src": "1611:404:109", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13643, + "nodeType": "Block", + "src": "2255:1440:109", + "statements": [ + { + "assignments": [ + 13575 + ], + "declarations": [ + { + "constant": false, + "id": 13575, + "mutability": "mutable", + "name": "valueIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13643, + "src": "2365:18:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2365:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13580, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13576, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "2386:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13522, + "src": "2386:12:109", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13579, + "indexExpression": { + "argumentTypes": null, + "id": 13578, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13569, + "src": "2399:5:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2386:19:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2365:40:109" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13581, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13575, + "src": "2420:10:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 13582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2434:1:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2420:15:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13641, + "nodeType": "Block", + "src": "3652:37:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 13639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3673:5:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 13573, + "id": 13640, + "nodeType": "Return", + "src": "3666:12:109" + } + ] + }, + "id": 13642, + "nodeType": "IfStatement", + "src": "2416:1273:109", + "trueBody": { + "id": 13638, + "nodeType": "Block", + "src": "2437:1209:109", + "statements": [ + { + "assignments": [ + 13585 + ], + "declarations": [ + { + "constant": false, + "id": 13585, + "mutability": "mutable", + "name": "toDeleteIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13638, + "src": "2777:21:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2777:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13589, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13586, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13575, + "src": "2801:10:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2814:1:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2801:14:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2777:38:109" + }, + { + "assignments": [ + 13591 + ], + "declarations": [ + { + "constant": false, + "id": 13591, + "mutability": "mutable", + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13638, + "src": "2829:17:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2829:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13597, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13592, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "2849:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13593, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "2849:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2849:18:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2870:1:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2849:22:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2829:42:109" + }, + { + "assignments": [ + 13599 + ], + "declarations": [ + { + "constant": false, + "id": 13599, + "mutability": "mutable", + "name": "lastvalue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13638, + "src": "3111:17:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13598, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3111:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 13604, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13600, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "3131:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "3131:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13603, + "indexExpression": { + "argumentTypes": null, + "id": 13602, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13591, + "src": "3143:9:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3131:22:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3111:42:109" + }, + { + "expression": { + "argumentTypes": null, + "id": 13611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13605, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "3245:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13608, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "3245:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13609, + "indexExpression": { + "argumentTypes": null, + "id": 13607, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13585, + "src": "3257:13:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3245:26:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 13610, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13599, + "src": "3274:9:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3245:38:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 13612, + "nodeType": "ExpressionStatement", + "src": "3245:38:109" + }, + { + "expression": { + "argumentTypes": null, + "id": 13621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13613, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "3349:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13616, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13522, + "src": "3349:12:109", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13617, + "indexExpression": { + "argumentTypes": null, + "id": 13615, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13599, + "src": "3362:9:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3349:23:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 13618, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13585, + "src": "3375:13:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 13619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3391:1:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3375:17:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3349:43:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 13622, + "nodeType": "ExpressionStatement", + "src": "3349:43:109" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13623, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "3498:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13626, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "3498:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3498:15:109", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 13628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3498:17:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13629, + "nodeType": "ExpressionStatement", + "src": "3498:17:109" + }, + { + "expression": { + "argumentTypes": null, + "id": 13634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3583:26:109", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13630, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "3590:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13631, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13522, + "src": "3590:12:109", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13633, + "indexExpression": { + "argumentTypes": null, + "id": 13632, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13569, + "src": "3603:5:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3590:19:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13635, + "nodeType": "ExpressionStatement", + "src": "3583:26:109" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 13636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3631:4:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 13573, + "id": 13637, + "nodeType": "Return", + "src": "3624:11:109" + } + ] + } + } + ] + }, + "documentation": { + "id": 13565, + "nodeType": "StructuredDocumentation", + "src": "2021:157:109", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 13644, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13567, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13644, + "src": "2200:15:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13566, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "2200:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13569, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13644, + "src": "2217:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2217:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2199:32:109" + }, + "returnParameters": { + "id": 13573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13572, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13644, + "src": "2249:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13571, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2249:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2248:6:109" + }, + "scope": 13907, + "src": "2183:1512:109", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13661, + "nodeType": "Block", + "src": "3855:48:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13654, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13647, + "src": "3872:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 13522, + "src": "3872:12:109", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 13657, + "indexExpression": { + "argumentTypes": null, + "id": 13656, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13649, + "src": "3885:5:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3872:19:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 13658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3895:1:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3872:24:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13653, + "id": 13660, + "nodeType": "Return", + "src": "3865:31:109" + } + ] + }, + "documentation": { + "id": 13645, + "nodeType": "StructuredDocumentation", + "src": "3701:70:109", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 13662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13650, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13647, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13662, + "src": "3795:15:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13646, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "3795:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13649, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13662, + "src": "3812:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13648, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3812:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3794:32:109" + }, + "returnParameters": { + "id": 13653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13652, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13662, + "src": "3849:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13651, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3849:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3848:6:109" + }, + "scope": 13907, + "src": "3776:127:109", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13674, + "nodeType": "Block", + "src": "4049:42:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13670, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13665, + "src": "4066:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "4066:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4066:18:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13669, + "id": 13673, + "nodeType": "Return", + "src": "4059:25:109" + } + ] + }, + "documentation": { + "id": 13663, + "nodeType": "StructuredDocumentation", + "src": "3909:70:109", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 13675, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13665, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13675, + "src": "4001:15:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13664, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "4001:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4000:17:109" + }, + "returnParameters": { + "id": 13669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13668, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13675, + "src": "4040:7:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4040:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4039:9:109" + }, + "scope": 13907, + "src": "3984:107:109", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 13699, + "nodeType": "Block", + "src": "4499:125:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13686, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13678, + "src": "4517:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13687, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "4517:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4517:18:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 13689, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13680, + "src": "4538:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4517:26:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473", + "id": 13691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4545:36:109", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb", + "typeString": "literal_string \"EnumerableSet: index out of bounds\"" + }, + "value": "EnumerableSet: index out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb", + "typeString": "literal_string \"EnumerableSet: index out of bounds\"" + } + ], + "id": 13685, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4509:7:109", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4509:73:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13693, + "nodeType": "ExpressionStatement", + "src": "4509:73:109" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13694, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13678, + "src": "4599:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 13695, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 13518, + "src": "4599:11:109", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 13697, + "indexExpression": { + "argumentTypes": null, + "id": 13696, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13680, + "src": "4611:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4599:18:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 13684, + "id": 13698, + "nodeType": "Return", + "src": "4592:25:109" + } + ] + }, + "documentation": { + "id": 13676, + "nodeType": "StructuredDocumentation", + "src": "4096:322:109", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 13700, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13678, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13700, + "src": "4436:15:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13677, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "4436:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13680, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13700, + "src": "4453:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13679, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4453:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4435:32:109" + }, + "returnParameters": { + "id": 13684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13683, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13700, + "src": "4490:7:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13682, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4490:7:109", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4489:9:109" + }, + "scope": 13907, + "src": "4423:201:109", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 13703, + "members": [ + { + "constant": false, + "id": 13702, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13703, + "src": "4677:10:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13701, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "4677:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nodeType": "StructDefinition", + "scope": 13907, + "src": "4649:45:109", + "visibility": "public" + }, + { + "body": { + "id": 13725, + "nodeType": "Block", + "src": "4940:65:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13714, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13706, + "src": "4962:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 13715, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13702, + "src": "4962:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13720, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13708, + "src": "4990:5:109", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4982:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4982:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4982:14:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4974:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13716, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4974:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4974:23:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13713, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13564, + "src": "4957:4:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 13723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4957:41:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13712, + "id": 13724, + "nodeType": "Return", + "src": "4950:48:109" + } + ] + }, + "documentation": { + "id": 13704, + "nodeType": "StructuredDocumentation", + "src": "4700:159:109", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 13726, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13706, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13726, + "src": "4877:22:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 13705, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "4877:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13708, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13726, + "src": "4901:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4901:7:109", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4876:39:109" + }, + "returnParameters": { + "id": 13712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13711, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13726, + "src": "4934:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13710, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4934:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4933:6:109" + }, + "scope": 13907, + "src": "4864:141:109", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13748, + "nodeType": "Block", + "src": "5252:68:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13737, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13729, + "src": "5277:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 13738, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13702, + "src": "5277:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13743, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13731, + "src": "5305:5:109", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5297:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5297:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5297:14:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5289:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13739, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5289:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5289:23:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13736, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13644, + "src": "5269:7:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 13746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5269:44:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13735, + "id": 13747, + "nodeType": "Return", + "src": "5262:51:109" + } + ] + }, + "documentation": { + "id": 13727, + "nodeType": "StructuredDocumentation", + "src": "5011:157:109", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 13749, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13729, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13749, + "src": "5189:22:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 13728, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "5189:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13731, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13749, + "src": "5213:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13730, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5213:7:109", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5188:39:109" + }, + "returnParameters": { + "id": 13735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13734, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13749, + "src": "5246:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13733, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5246:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5245:6:109" + }, + "scope": 13907, + "src": "5173:147:109", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13771, + "nodeType": "Block", + "src": "5487:70:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13760, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13752, + "src": "5514:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 13761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13702, + "src": "5514:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13766, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13754, + "src": "5542:5:109", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5534:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5534:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5534:14:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5526:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13762, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5526:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5526:23:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13759, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13662, + "src": "5504:9:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 13769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5504:46:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13758, + "id": 13770, + "nodeType": "Return", + "src": "5497:53:109" + } + ] + }, + "documentation": { + "id": 13750, + "nodeType": "StructuredDocumentation", + "src": "5326:70:109", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 13772, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13752, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13772, + "src": "5419:22:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 13751, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "5419:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13754, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13772, + "src": "5443:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13753, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5443:7:109", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5418:39:109" + }, + "returnParameters": { + "id": 13758, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13757, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13772, + "src": "5481:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13756, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5481:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5480:6:109" + }, + "scope": 13907, + "src": "5401:156:109", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13785, + "nodeType": "Block", + "src": "5710:43:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13781, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13775, + "src": "5735:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 13782, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13702, + "src": "5735:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 13780, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13675, + "src": "5727:7:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 13783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5727:19:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13779, + "id": 13784, + "nodeType": "Return", + "src": "5720:26:109" + } + ] + }, + "documentation": { + "id": 13773, + "nodeType": "StructuredDocumentation", + "src": "5563:70:109", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 13786, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13775, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13786, + "src": "5654:22:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 13774, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "5654:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5653:24:109" + }, + "returnParameters": { + "id": 13779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13778, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13786, + "src": "5701:7:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5701:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5700:9:109" + }, + "scope": 13907, + "src": "5638:115:109", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13808, + "nodeType": "Block", + "src": "6168:64:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13801, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13789, + "src": "6205:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 13802, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13702, + "src": "6205:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 13803, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13791, + "src": "6217:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13800, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13700, + "src": "6201:3:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 13804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6201:22:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6193:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6193:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6193:31:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6185:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6185:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6185:40:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 13795, + "id": 13807, + "nodeType": "Return", + "src": "6178:47:109" + } + ] + }, + "documentation": { + "id": 13787, + "nodeType": "StructuredDocumentation", + "src": "5758:322:109", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 13809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13789, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13809, + "src": "6097:22:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 13788, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13703, + "src": "6097:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$13703_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13791, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13809, + "src": "6121:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13790, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6121:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6096:39:109" + }, + "returnParameters": { + "id": 13795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13794, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13809, + "src": "6159:7:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6159:7:109", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6158:9:109" + }, + "scope": 13907, + "src": "6085:147:109", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 13812, + "members": [ + { + "constant": false, + "id": 13811, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13812, + "src": "6280:10:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 13810, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13523, + "src": "6280:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "UintSet", + "nodeType": "StructDefinition", + "scope": 13907, + "src": "6255:42:109", + "visibility": "public" + }, + { + "body": { + "id": 13831, + "nodeType": "Block", + "src": "6540:56:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13823, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13815, + "src": "6562:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 13824, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13811, + "src": "6562:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13827, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13817, + "src": "6582:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6574:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13825, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6574:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6574:14:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13822, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13564, + "src": "6557:4:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 13829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6557:32:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13821, + "id": 13830, + "nodeType": "Return", + "src": "6550:39:109" + } + ] + }, + "documentation": { + "id": 13813, + "nodeType": "StructuredDocumentation", + "src": "6303:159:109", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 13832, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13815, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13832, + "src": "6480:19:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 13814, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "6480:7:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13817, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13832, + "src": "6501:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13816, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6501:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6479:36:109" + }, + "returnParameters": { + "id": 13821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13820, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13832, + "src": "6534:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13819, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6534:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6533:6:109" + }, + "scope": 13907, + "src": "6467:129:109", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13851, + "nodeType": "Block", + "src": "6840:59:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13843, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13835, + "src": "6865:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 13844, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13811, + "src": "6865:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13847, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13837, + "src": "6885:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6877:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13845, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6877:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6877:14:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13842, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13644, + "src": "6857:7:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 13849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6857:35:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13841, + "id": 13850, + "nodeType": "Return", + "src": "6850:42:109" + } + ] + }, + "documentation": { + "id": 13833, + "nodeType": "StructuredDocumentation", + "src": "6602:157:109", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 13852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13835, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13852, + "src": "6780:19:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 13834, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "6780:7:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13837, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13852, + "src": "6801:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6801:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6779:36:109" + }, + "returnParameters": { + "id": 13841, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13840, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13852, + "src": "6834:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13839, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6834:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6833:6:109" + }, + "scope": 13907, + "src": "6764:135:109", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13871, + "nodeType": "Block", + "src": "7063:61:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13863, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13855, + "src": "7090:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 13864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13811, + "src": "7090:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13867, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13857, + "src": "7110:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7102:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 13865, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7102:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7102:14:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13862, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13662, + "src": "7080:9:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 13869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7080:37:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13861, + "id": 13870, + "nodeType": "Return", + "src": "7073:44:109" + } + ] + }, + "documentation": { + "id": 13853, + "nodeType": "StructuredDocumentation", + "src": "6905:70:109", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 13872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13855, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13872, + "src": "6998:19:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 13854, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "6998:7:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13857, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13872, + "src": "7019:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13856, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7019:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6997:36:109" + }, + "returnParameters": { + "id": 13861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13860, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13872, + "src": "7057:4:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13859, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7057:4:109", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7056:6:109" + }, + "scope": 13907, + "src": "6980:144:109", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13885, + "nodeType": "Block", + "src": "7274:43:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13881, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13875, + "src": "7299:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 13882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13811, + "src": "7299:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 13880, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13675, + "src": "7291:7:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 13883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7291:19:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13879, + "id": 13884, + "nodeType": "Return", + "src": "7284:26:109" + } + ] + }, + "documentation": { + "id": 13873, + "nodeType": "StructuredDocumentation", + "src": "7130:70:109", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 13886, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13875, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13886, + "src": "7221:19:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 13874, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "7221:7:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7220:21:109" + }, + "returnParameters": { + "id": 13879, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13878, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13886, + "src": "7265:7:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13877, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7265:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7264:9:109" + }, + "scope": 13907, + "src": "7205:112:109", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13905, + "nodeType": "Block", + "src": "7729:55:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 13899, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13889, + "src": "7758:3:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 13900, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 13811, + "src": "7758:10:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 13901, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13891, + "src": "7770:5:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$13523_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13898, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13700, + "src": "7754:3:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$13523_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 13902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7754:22:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 13897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7746:7:109", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 13896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7746:7:109", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 13903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7746:31:109", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13895, + "id": 13904, + "nodeType": "Return", + "src": "7739:38:109" + } + ] + }, + "documentation": { + "id": 13887, + "nodeType": "StructuredDocumentation", + "src": "7322:322:109", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 13906, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13889, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13906, + "src": "7661:19:109", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 13888, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 13812, + "src": "7661:7:109", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$13812_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13891, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13906, + "src": "7682:13:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13890, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7682:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7660:36:109" + }, + "returnParameters": { + "id": 13895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13894, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13906, + "src": "7720:7:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7720:7:109", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7719:9:109" + }, + "scope": 13907, + "src": "7649:135:109", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 13908, + "src": "724:7062:109" + } + ], + "src": "33:7754:109" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203c2b8e6de40905513ba217d5db2ad7e1916c9c662436871ae420c1bd4205927d64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203c2b8e6de40905513ba217d5db2ad7e1916c9c662436871ae420c1bd4205927d64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/EnumerableSetMock.json b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableSetMock.json new file mode 100644 index 0000000..bbef02c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/EnumerableSetMock.json @@ -0,0 +1,1165 @@ +{ + "fileName": "EnumerableSetMock.sol", + "contractName": "EnumerableSetMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/EnumerableSet.sol\";\n\ncontract EnumerableSetMock {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n event OperationResult(bool result);\n\n EnumerableSet.AddressSet private _set;\n\n function contains(address value) public view returns (bool) {\n return _set.contains(value);\n }\n\n function add(address value) public {\n bool result = _set.add(value);\n emit OperationResult(result);\n }\n\n function remove(address value) public {\n bool result = _set.remove(value);\n emit OperationResult(result);\n }\n\n function length() public view returns (uint256) {\n return _set.length();\n }\n\n function at(uint256 index) public view returns (address) {\n return _set.at(index);\n }\n}\n", + "sourcePath": "contracts/mocks/EnumerableSetMock.sol", + "sourceMap": "96:727:47:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "96:727:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;379:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;635:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;504:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;269:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;726:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;379:119;424:11;438:15;447:5;438:4;:8;;:15;;;;:::i;:::-;424:29;;468:23;484:6;468:23;;;;;;;;;;;;;;;;;;;;;;379:119;;:::o;635:85::-;674:7;700:13;:4;:11;:13::i;:::-;693:20;;635:85;:::o;504:125::-;552:11;566:18;578:5;566:4;:11;;:18;;;;:::i;:::-;552:32;;599:23;615:6;599:23;;;;;;;;;;;;;;;;;;;;;;504:125;;:::o;269:104::-;323:4;346:20;360:5;346:4;:13;;:20;;;;:::i;:::-;339:27;;269:104;;;:::o;726:95::-;774:7;800:14;808:5;800:4;:7;;:14;;;;:::i;:::-;793:21;;726:95;;;:::o;4864:141:96:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;:41::i;:::-;4950:48;;4864:141;;;;:::o;5638:115::-;5701:7;5727:19;5735:3;:10;;5727:7;:19::i;:::-;5720:26;;5638:115;;;:::o;5173:147::-;5246:4;5269:44;5277:3;:10;;5305:5;5297:14;;5289:23;;5269:7;:44::i;:::-;5262:51;;5173:147;;;;:::o;5401:156::-;5481:4;5504:46;5514:3;:10;;5542:5;5534:14;;5526:23;;5504:9;:46::i;:::-;5497:53;;5401:156;;;;:::o;6085:147::-;6159:7;6201:22;6205:3;:10;;6217:5;6201:3;:22::i;:::-;6193:31;;6178:47;;6085:147;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;3984:107::-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;2183:1512::-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;4423:201::-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "result", + "type": "bool" + } + ], + "name": "OperationResult", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "name": "add", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "at", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "name": "contains", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "length", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "name": "remove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/EnumerableSetMock.sol", + "exportedSymbols": { + "EnumerableSetMock": [ + 4764 + ] + }, + "id": 4765, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4683, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:47" + }, + { + "absolutePath": "contracts/utils/EnumerableSet.sol", + "file": "../utils/EnumerableSet.sol", + "id": 4684, + "nodeType": "ImportDirective", + "scope": 4765, + "sourceUnit": 11996, + "src": "58:36:47", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4764, + "linearizedBaseContracts": [ + 4764 + ], + "name": "EnumerableSetMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4687, + "libraryName": { + "contractScope": null, + "id": 4685, + "name": "EnumerableSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11995, + "src": "135:13:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableSet_$11995", + "typeString": "library EnumerableSet" + } + }, + "nodeType": "UsingForDirective", + "src": "129:49:47", + "typeName": { + "contractScope": null, + "id": 4686, + "name": "EnumerableSet.AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11791, + "src": "153:24:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 4691, + "name": "OperationResult", + "nodeType": "EventDefinition", + "parameters": { + "id": 4690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4689, + "indexed": false, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4691, + "src": "206:11:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4688, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "206:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "205:13:47" + }, + "src": "184:35:47" + }, + { + "constant": false, + "id": 4693, + "mutability": "mutable", + "name": "_set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4764, + "src": "225:37:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 4692, + "name": "EnumerableSet.AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11791, + "src": "225:24:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4705, + "nodeType": "Block", + "src": "329:44:47", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4702, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4695, + "src": "360:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4700, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "346:4:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 4701, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 11860, + "src": "346:13:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$11791_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$11791_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 4703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "346:20:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4699, + "id": 4704, + "nodeType": "Return", + "src": "339:27:47" + } + ] + }, + "documentation": null, + "functionSelector": "5dbe47e8", + "id": 4706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4695, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4706, + "src": "287:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "287:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:15:47" + }, + "returnParameters": { + "id": 4699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4698, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4706, + "src": "323:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4697, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "323:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "322:6:47" + }, + "scope": 4764, + "src": "269:104:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4722, + "nodeType": "Block", + "src": "414:84:47", + "statements": [ + { + "assignments": [ + 4712 + ], + "declarations": [ + { + "constant": false, + "id": 4712, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4722, + "src": "424:11:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4711, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "424:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4717, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4715, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4708, + "src": "447:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4713, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "438:4:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 4714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 11814, + "src": "438:8:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$11791_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$11791_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 4716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "438:15:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "424:29:47" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4719, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4712, + "src": "484:6:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4718, + "name": "OperationResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "468:15:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 4720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "468:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4721, + "nodeType": "EmitStatement", + "src": "463:28:47" + } + ] + }, + "documentation": null, + "functionSelector": "0a3b0a4f", + "id": 4723, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4708, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4723, + "src": "392:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "392:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "391:15:47" + }, + "returnParameters": { + "id": 4710, + "nodeType": "ParameterList", + "parameters": [], + "src": "414:0:47" + }, + "scope": 4764, + "src": "379:119:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4739, + "nodeType": "Block", + "src": "542:87:47", + "statements": [ + { + "assignments": [ + 4729 + ], + "declarations": [ + { + "constant": false, + "id": 4729, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4739, + "src": "552:11:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4728, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "552:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4734, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4732, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4725, + "src": "578:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4730, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "566:4:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 4731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 11837, + "src": "566:11:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$11791_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$11791_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 4733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "566:18:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "552:32:47" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4736, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4729, + "src": "615:6:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4735, + "name": "OperationResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "599:15:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 4737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "599:23:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4738, + "nodeType": "EmitStatement", + "src": "594:28:47" + } + ] + }, + "documentation": null, + "functionSelector": "29092d0e", + "id": 4740, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4725, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4740, + "src": "520:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "520:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "519:15:47" + }, + "returnParameters": { + "id": 4727, + "nodeType": "ParameterList", + "parameters": [], + "src": "542:0:47" + }, + "scope": 4764, + "src": "504:125:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4749, + "nodeType": "Block", + "src": "683:37:47", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 4745, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "700:4:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 4746, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 11874, + "src": "700:11:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$11791_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$11791_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 4747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "700:13:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4744, + "id": 4748, + "nodeType": "Return", + "src": "693:20:47" + } + ] + }, + "documentation": null, + "functionSelector": "1f7b6d32", + "id": 4750, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4741, + "nodeType": "ParameterList", + "parameters": [], + "src": "650:2:47" + }, + "returnParameters": { + "id": 4744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4743, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4750, + "src": "674:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4742, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "674:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "673:9:47" + }, + "scope": 4764, + "src": "635:85:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4762, + "nodeType": "Block", + "src": "783:38:47", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4759, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4752, + "src": "808:5:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4757, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "800:4:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$11791_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 4758, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 11897, + "src": "800:7:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$11791_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$11791_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 4760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "800:14:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4756, + "id": 4761, + "nodeType": "Return", + "src": "793:21:47" + } + ] + }, + "documentation": null, + "functionSelector": "e0886f90", + "id": 4763, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4752, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4763, + "src": "738:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4751, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "738:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "737:15:47" + }, + "returnParameters": { + "id": 4756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4755, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4763, + "src": "774:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "774:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "773:9:47" + }, + "scope": 4764, + "src": "726:95:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4765, + "src": "96:727:47" + } + ], + "src": "33:791:47" + }, + "bytecode": "0x608060405234801561001057600080fd5b506105eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630a3b0a4f1461005c5780631f7b6d32146100a057806329092d0e146100be5780635dbe47e814610102578063e0886f901461015e575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101cc565b005b6100a8610223565b6040518082815260200191505060405180910390f35b610100600480360360208110156100d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610234565b005b6101446004803603602081101561011857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061028b565b604051808215151515815260200191505060405180910390f35b61018a6004803603602081101561017457600080fd5b81019080803590602001909291905050506102a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006101e28260006102c590919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a15050565b600061022f60006102f5565b905090565b600061024a82600061030a90919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a15050565b60006102a182600061033a90919063ffffffff16565b9050919050565b60006102be82600061036a90919063ffffffff16565b9050919050565b60006102ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610384565b905092915050565b6000610303826000016103f4565b9050919050565b6000610332836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610405565b905092915050565b6000610362836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6104ed565b905092915050565b60006103798360000183610510565b60001c905092915050565b600061039083836104ed565b6103e95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506103ee565b600090505b92915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020549050600081146104e1576000600182039050600060018660000180549050039050600086600001828154811061045057fe5b906000526020600020015490508087600001848154811061046d57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806104a557fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104e7565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081836000018054905011610571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105946022913960400191505060405180910390fd5b82600001828154811061058057fe5b906000526020600020015490509291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473a26469706673582212200282df75136876592e76e0b4780198a1f66ffe98021ad3aea09f8dc57849a5b264736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630a3b0a4f1461005c5780631f7b6d32146100a057806329092d0e146100be5780635dbe47e814610102578063e0886f901461015e575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101cc565b005b6100a8610223565b6040518082815260200191505060405180910390f35b610100600480360360208110156100d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610234565b005b6101446004803603602081101561011857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061028b565b604051808215151515815260200191505060405180910390f35b61018a6004803603602081101561017457600080fd5b81019080803590602001909291905050506102a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006101e28260006102c590919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a15050565b600061022f60006102f5565b905090565b600061024a82600061030a90919063ffffffff16565b90507fed9840e0775590557ad736875d96c95cf1458b766335f74339951a32c82a9e3381604051808215151515815260200191505060405180910390a15050565b60006102a182600061033a90919063ffffffff16565b9050919050565b60006102be82600061036a90919063ffffffff16565b9050919050565b60006102ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610384565b905092915050565b6000610303826000016103f4565b9050919050565b6000610332836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610405565b905092915050565b6000610362836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6104ed565b905092915050565b60006103798360000183610510565b60001c905092915050565b600061039083836104ed565b6103e95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506103ee565b600090505b92915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020549050600081146104e1576000600182039050600060018660000180549050039050600086600001828154811061045057fe5b906000526020600020015490508087600001848154811061046d57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806104a557fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104e7565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081836000018054905011610571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105946022913960400191505060405180910390fd5b82600001828154811061058057fe5b906000526020600020015490509291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473a26469706673582212200282df75136876592e76e0b4780198a1f66ffe98021ad3aea09f8dc57849a5b264736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Escrow.json b/node_modules/@openzeppelin/contracts/build/contracts/Escrow.json new file mode 100644 index 0000000..ea59819 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Escrow.json @@ -0,0 +1,1422 @@ +{ + "fileName": "Escrow.sol", + "contractName": "Escrow", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../../access/Ownable.sol\";\nimport \"../../utils/Address.sol\";\n\n /**\n * @title Escrow\n * @dev Base escrow contract, holds funds designated for a payee until they\n * withdraw them.\n *\n * Intended usage: This contract (and derived escrow contracts) should be a\n * standalone contract, that only interacts with the contract that instantiated\n * it. That way, it is guaranteed that all Ether will be handled according to\n * the `Escrow` rules, and there is no need to check for payable functions or\n * transfers in the inheritance tree. The contract that uses the escrow as its\n * payment method should be its owner, and provide public methods redirecting\n * to the escrow's deposit and withdraw.\n */\ncontract Escrow is Ownable {\n using SafeMath for uint256;\n using Address for address payable;\n\n event Deposited(address indexed payee, uint256 weiAmount);\n event Withdrawn(address indexed payee, uint256 weiAmount);\n\n mapping(address => uint256) private _deposits;\n\n function depositsOf(address payee) public view returns (uint256) {\n return _deposits[payee];\n }\n\n /**\n * @dev Stores the sent amount as credit to be withdrawn.\n * @param payee The destination address of the funds.\n */\n function deposit(address payee) public virtual payable onlyOwner {\n uint256 amount = msg.value;\n _deposits[payee] = _deposits[payee].add(amount);\n\n emit Deposited(payee, amount);\n }\n\n /**\n * @dev Withdraw accumulated balance for a payee, forwarding all gas to the\n * recipient.\n *\n * WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities.\n * Make sure you trust the recipient, or are either following the\n * checks-effects-interactions pattern or using {ReentrancyGuard}.\n *\n * @param payee The address whose funds will be withdrawn and transferred to.\n */\n function withdraw(address payable payee) public virtual onlyOwner {\n uint256 payment = _deposits[payee];\n\n _deposits[payee] = 0;\n\n payee.sendValue(payment);\n\n emit Withdrawn(payee, payment);\n }\n}\n", + "sourcePath": "contracts/payment/escrow/Escrow.sol", + "sourceMap": "807:1400:71:-:0;;;;;;;;;;;;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;807:1400:71;;590:104:0;643:15;677:10;670:17;;590:104;:::o;807:1400:71:-;;;;;;;", + "deployedSourceMap": "807:1400:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1981:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1689:145:7;;;;;;;;;;;;;:::i;:::-;;1066:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1091:105:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1338:205:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1981:224;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2057:15:71::1;2075:9;:16;2085:5;2075:16;;;;;;;;;;;;;;;;2057:34;;2121:1;2102:9;:16;2112:5;2102:16;;;;;;;;;;;;;;;:20;;;;2133:24;2149:7;2133:5;:15;;;;:24;;;;:::i;:::-;2183:5;2173:25;;;2190:7;2173:25;;;;;;;;;;;;;;;;;;1339:1:7;1981:224:71::0;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;1066:77::-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;1091:105:71:-;1147:7;1173:9;:16;1183:5;1173:16;;;;;;;;;;;;;;;;1166:23;;1091:105;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;1338:205:71:-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1413:14:71::1;1430:9;1413:26;;1468:28;1489:6;1468:9;:16;1478:5;1468:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;1449:9;:16;1459:5;1449:16;;;;;;;;;;;;;;;:47;;;;1522:5;1512:24;;;1529:6;1512:24;;;;;;;;;;;;;;;;;;1339:1:7;1338:205:71::0;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;2245:391:104:-;2359:6;2342:4;2334:21;;;:31;;2326:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:12;2506:9;:14;;2529:6;2506:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:54;;;2559:7;2551:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:391;;;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/payment/escrow/Escrow.sol", + "exportedSymbols": { + "Escrow": [ + 6653 + ] + }, + "id": 6654, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6550, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:71" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 6551, + "nodeType": "ImportDirective", + "scope": 6654, + "sourceUnit": 2422, + "src": "58:33:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Ownable.sol", + "file": "../../access/Ownable.sol", + "id": 6552, + "nodeType": "ImportDirective", + "scope": 6654, + "sourceUnit": 1577, + "src": "92:34:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 6553, + "nodeType": "ImportDirective", + "scope": 6654, + "sourceUnit": 12815, + "src": "127:33:71", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6555, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1576, + "src": "826:7:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$1576", + "typeString": "contract Ownable" + } + }, + "id": 6556, + "nodeType": "InheritanceSpecifier", + "src": "826:7:71" + } + ], + "contractDependencies": [ + 22, + 1576 + ], + "contractKind": "contract", + "documentation": { + "id": 6554, + "nodeType": "StructuredDocumentation", + "src": "163:643:71", + "text": " @title Escrow\n @dev Base escrow contract, holds funds designated for a payee until they\n withdraw them.\n Intended usage: This contract (and derived escrow contracts) should be a\n standalone contract, that only interacts with the contract that instantiated\n it. That way, it is guaranteed that all Ether will be handled according to\n the `Escrow` rules, and there is no need to check for payable functions or\n transfers in the inheritance tree. The contract that uses the escrow as its\n payment method should be its owner, and provide public methods redirecting\n to the escrow's deposit and withdraw." + }, + "fullyImplemented": true, + "id": 6653, + "linearizedBaseContracts": [ + 6653, + 1576, + 22 + ], + "name": "Escrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6559, + "libraryName": { + "contractScope": null, + "id": 6557, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "846:8:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "840:27:71", + "typeName": { + "id": 6558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "859:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 6562, + "libraryName": { + "contractScope": null, + "id": 6560, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "878:7:71", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "872:34:71", + "typeName": { + "id": 6561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "890:15:71", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 6568, + "name": "Deposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 6567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6564, + "indexed": true, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6568, + "src": "928:21:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6563, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "928:7:71", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6566, + "indexed": false, + "mutability": "mutable", + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6568, + "src": "951:17:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "951:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "927:42:71" + }, + "src": "912:58:71" + }, + { + "anonymous": false, + "documentation": null, + "id": 6574, + "name": "Withdrawn", + "nodeType": "EventDefinition", + "parameters": { + "id": 6573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6570, + "indexed": true, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6574, + "src": "991:21:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6569, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "991:7:71", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6572, + "indexed": false, + "mutability": "mutable", + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6574, + "src": "1014:17:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1014:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "990:42:71" + }, + "src": "975:58:71" + }, + { + "constant": false, + "id": 6578, + "mutability": "mutable", + "name": "_deposits", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6653, + "src": "1039:45:71", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 6577, + "keyType": { + "id": 6575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1047:7:71", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1039:27:71", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 6576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1058:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 6589, + "nodeType": "Block", + "src": "1156:40:71", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6585, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6578, + "src": "1173:9:71", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6587, + "indexExpression": { + "argumentTypes": null, + "id": 6586, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6580, + "src": "1183:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1173:16:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6584, + "id": 6588, + "nodeType": "Return", + "src": "1166:23:71" + } + ] + }, + "documentation": null, + "functionSelector": "e3a9db1a", + "id": 6590, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositsOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6580, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6590, + "src": "1111:13:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1111:7:71", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1110:15:71" + }, + "returnParameters": { + "id": 6584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6583, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6590, + "src": "1147:7:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1147:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1146:9:71" + }, + "scope": 6653, + "src": "1091:105:71", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6619, + "nodeType": "Block", + "src": "1403:140:71", + "statements": [ + { + "assignments": [ + 6599 + ], + "declarations": [ + { + "constant": false, + "id": 6599, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6619, + "src": "1413:14:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6598, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1413:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6602, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6600, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1430:3:71", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1430:9:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1413:26:71" + }, + { + "expression": { + "argumentTypes": null, + "id": 6612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6603, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6578, + "src": "1449:9:71", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6605, + "indexExpression": { + "argumentTypes": null, + "id": 6604, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6593, + "src": "1459:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1449:16:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6610, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6599, + "src": "1489:6:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6606, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6578, + "src": "1468:9:71", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6608, + "indexExpression": { + "argumentTypes": null, + "id": 6607, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6593, + "src": "1478:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1468:16:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "1468:20:71", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1468:28:71", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1449:47:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6613, + "nodeType": "ExpressionStatement", + "src": "1449:47:71" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6615, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6593, + "src": "1522:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6616, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6599, + "src": "1529:6:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6614, + "name": "Deposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6568, + "src": "1512:9:71", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1512:24:71", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6618, + "nodeType": "EmitStatement", + "src": "1507:29:71" + } + ] + }, + "documentation": { + "id": 6591, + "nodeType": "StructuredDocumentation", + "src": "1202:131:71", + "text": " @dev Stores the sent amount as credit to be withdrawn.\n @param payee The destination address of the funds." + }, + "functionSelector": "f340fa01", + "id": 6620, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6596, + "modifierName": { + "argumentTypes": null, + "id": 6595, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "1393:9:71", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1393:9:71" + } + ], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6593, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6620, + "src": "1355:13:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1355:7:71", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1354:15:71" + }, + "returnParameters": { + "id": 6597, + "nodeType": "ParameterList", + "parameters": [], + "src": "1403:0:71" + }, + "scope": 6653, + "src": "1338:205:71", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6651, + "nodeType": "Block", + "src": "2047:158:71", + "statements": [ + { + "assignments": [ + 6629 + ], + "declarations": [ + { + "constant": false, + "id": 6629, + "mutability": "mutable", + "name": "payment", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6651, + "src": "2057:15:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2057:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6633, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6630, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6578, + "src": "2075:9:71", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6632, + "indexExpression": { + "argumentTypes": null, + "id": 6631, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6623, + "src": "2085:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2075:16:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2057:34:71" + }, + { + "expression": { + "argumentTypes": null, + "id": 6638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6634, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6578, + "src": "2102:9:71", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6636, + "indexExpression": { + "argumentTypes": null, + "id": 6635, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6623, + "src": "2112:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2102:16:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 6637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2121:1:71", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2102:20:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6639, + "nodeType": "ExpressionStatement", + "src": "2102:20:71" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6643, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6629, + "src": "2149:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6640, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6623, + "src": "2133:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 6642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 12673, + "src": "2133:15:71", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 6644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2133:24:71", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6645, + "nodeType": "ExpressionStatement", + "src": "2133:24:71" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6647, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6623, + "src": "2183:5:71", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 6648, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6629, + "src": "2190:7:71", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6646, + "name": "Withdrawn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6574, + "src": "2173:9:71", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2173:25:71", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6650, + "nodeType": "EmitStatement", + "src": "2168:30:71" + } + ] + }, + "documentation": { + "id": 6621, + "nodeType": "StructuredDocumentation", + "src": "1549:427:71", + "text": " @dev Withdraw accumulated balance for a payee, forwarding all gas to the\n recipient.\n WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities.\n Make sure you trust the recipient, or are either following the\n checks-effects-interactions pattern or using {ReentrancyGuard}.\n @param payee The address whose funds will be withdrawn and transferred to." + }, + "functionSelector": "51cff8d9", + "id": 6652, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6626, + "modifierName": { + "argumentTypes": null, + "id": 6625, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "2037:9:71", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2037:9:71" + } + ], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6623, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6652, + "src": "1999:21:71", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6622, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1999:15:71", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1998:23:71" + }, + "returnParameters": { + "id": 6627, + "nodeType": "ParameterList", + "parameters": [], + "src": "2047:0:71" + }, + "scope": 6653, + "src": "1981:224:71", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 6654, + "src": "807:1400:71" + } + ], + "src": "33:2175:71" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b610c13806100db6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a6146100ab5780638da5cb5b146100c2578063e3a9db1a14610119578063f2fde38b1461017e578063f340fa01146101cf575b600080fd5b34801561006657600080fd5b506100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610213565b005b3480156100b757600080fd5b506100c06103e0565b005b3480156100ce57600080fd5b506100d7610568565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012557600080fd5b506101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610591565b6040518082815260200191505060405180910390f35b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105da565b005b610211600480360360208110156101e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e7565b005b61021b61099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061038e818373ffffffffffffffffffffffffffffffffffffffff166109a490919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b6103e861099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e261099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610b7e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6107ef61099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061090781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b600033905090565b803073ffffffffffffffffffffffffffffffffffffffff16311015610a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610a91576040519150601f19603f3d011682016040523d82523d6000602084013e610a96565b606091505b5050905080610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ba4603a913960400191505060405180910390fd5b505050565b600080828401905083811015610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564a2646970667358221220a1540b49cb0ea4ab7366b5cbbec4e7cbf373d8dd8629bf11db08c1ca5515a62c64736f6c634300060a0033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a6146100ab5780638da5cb5b146100c2578063e3a9db1a14610119578063f2fde38b1461017e578063f340fa01146101cf575b600080fd5b34801561006657600080fd5b506100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610213565b005b3480156100b757600080fd5b506100c06103e0565b005b3480156100ce57600080fd5b506100d7610568565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012557600080fd5b506101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610591565b6040518082815260200191505060405180910390f35b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105da565b005b610211600480360360208110156101e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e7565b005b61021b61099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061038e818373ffffffffffffffffffffffffffffffffffffffff166109a490919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b6103e861099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e261099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610b7e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6107ef61099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061090781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b600033905090565b803073ffffffffffffffffffffffffffffffffffffffff16311015610a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610a91576040519150601f19603f3d011682016040523d82523d6000602084013e610a96565b606091505b5050905080610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ba4603a913960400191505060405180910390fd5b505050565b600080828401905083811015610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564a2646970667358221220a1540b49cb0ea4ab7366b5cbbec4e7cbf373d8dd8629bf11db08c1ca5515a62c64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/EtherReceiverMock.json b/node_modules/@openzeppelin/contracts/build/contracts/EtherReceiverMock.json new file mode 100644 index 0000000..60cf2c9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/EtherReceiverMock.json @@ -0,0 +1,334 @@ +{ + "fileName": "EtherReceiverMock.sol", + "contractName": "EtherReceiverMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\ncontract EtherReceiverMock {\n bool private _acceptEther;\n\n function setAcceptEther(bool acceptEther) public {\n _acceptEther = acceptEther;\n }\n\n receive () external payable {\n if (!_acceptEther) {\n revert();\n }\n }\n}\n", + "sourcePath": "contracts/mocks/EtherReceiverMock.sol", + "sourceMap": "58:261:48:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "58:261:48:-:0;;;;;;;;;;;;;;;;;;;;;;;264:12;;;;;;;;;;;259:52;;292:8;;;259:52;58:261;;;;;123:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;197:11;182:12;;:26;;;;;;;;;;;;;;;;;;123:92;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bool", + "name": "acceptEther", + "type": "bool" + } + ], + "name": "setAcceptEther", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "ast": { + "absolutePath": "contracts/mocks/EtherReceiverMock.sol", + "exportedSymbols": { + "EtherReceiverMock": [ + 4790 + ] + }, + "id": 4791, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4766, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:48" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4790, + "linearizedBaseContracts": [ + 4790 + ], + "name": "EtherReceiverMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4768, + "mutability": "mutable", + "name": "_acceptEther", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4790, + "src": "91:25:48", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4767, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "91:4:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4777, + "nodeType": "Block", + "src": "172:43:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4773, + "name": "_acceptEther", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4768, + "src": "182:12:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4774, + "name": "acceptEther", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4770, + "src": "197:11:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "182:26:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4776, + "nodeType": "ExpressionStatement", + "src": "182:26:48" + } + ] + }, + "documentation": null, + "functionSelector": "4fea120c", + "id": 4778, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAcceptEther", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4770, + "mutability": "mutable", + "name": "acceptEther", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4778, + "src": "147:16:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4769, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "147:4:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "146:18:48" + }, + "returnParameters": { + "id": 4772, + "nodeType": "ParameterList", + "parameters": [], + "src": "172:0:48" + }, + "scope": 4790, + "src": "123:92:48", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4788, + "nodeType": "Block", + "src": "249:68:48", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 4782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "263:13:48", + "subExpression": { + "argumentTypes": null, + "id": 4781, + "name": "_acceptEther", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4768, + "src": "264:12:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4787, + "nodeType": "IfStatement", + "src": "259:52:48", + "trueBody": { + "id": 4786, + "nodeType": "Block", + "src": "278:33:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4783, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "292:6:48", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "292:8:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4785, + "nodeType": "ExpressionStatement", + "src": "292:8:48" + } + ] + } + } + ] + }, + "documentation": null, + "id": 4789, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4779, + "nodeType": "ParameterList", + "parameters": [], + "src": "229:2:48" + }, + "returnParameters": { + "id": 4780, + "nodeType": "ParameterList", + "parameters": [], + "src": "249:0:48" + }, + "scope": 4790, + "src": "221:96:48", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4791, + "src": "58:261:48" + } + ], + "src": "33:287:48" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060cc8061001f6000396000f3fe608060405260043610601f5760003560e01c80634fea120c14604157603c565b36603c576000809054906101000a900460ff16603a57600080fd5b005b600080fd5b348015604c57600080fd5b50607860048036036020811015606157600080fd5b81019080803515159060200190929190505050607a565b005b806000806101000a81548160ff0219169083151502179055505056fea2646970667358221220becdd1ab98714974874946319536af94483080b535b5ab1af36ea4d62faa66d664736f6c63430006090033", + "deployedBytecode": "0x608060405260043610601f5760003560e01c80634fea120c14604157603c565b36603c576000809054906101000a900460ff16603a57600080fd5b005b600080fd5b348015604c57600080fd5b50607860048036036020811015606157600080fd5b81019080803515159060200190929190505050607a565b005b806000806101000a81548160ff0219169083151502179055505056fea2646970667358221220becdd1ab98714974874946319536af94483080b535b5ab1af36ea4d62faa66d664736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsale.json new file mode 100644 index 0000000..9e4629b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsale.json @@ -0,0 +1,945 @@ +{ + "fileName": "FinalizableCrowdsale.sol", + "contractName": "FinalizableCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../validation/TimedCrowdsale.sol\";\n\n/**\n * @title FinalizableCrowdsale\n * @dev Extension of TimedCrowdsale with a one-off finalization action, where one\n * can do extra work after finishing.\n */\ncontract FinalizableCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n bool private _finalized;\n\n event CrowdsaleFinalized();\n\n constructor () internal {\n _finalized = false;\n }\n\n /**\n * @return true if the crowdsale is finalized, false otherwise.\n */\n function finalized() public view returns (bool) {\n return _finalized;\n }\n\n /**\n * @dev Must be called after crowdsale ends, to do some extra finalization\n * work. Calls the contract's finalization function.\n */\n function finalize() public {\n require(!_finalized, \"FinalizableCrowdsale: already finalized\");\n require(hasClosed(), \"FinalizableCrowdsale: not closed\");\n\n _finalized = true;\n\n _finalization();\n emit CrowdsaleFinalized();\n }\n\n /**\n * @dev Can be overridden to add finalization logic. The overriding function\n * should call super._finalization() to ensure the chain of finalization is\n * executed entirely.\n */\n function _finalization() internal {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "exportedSymbols": { + "FinalizableCrowdsale": [ + 2179 + ] + }, + "id": 2180, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2121, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:14" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2122, + "nodeType": "ImportDirective", + "scope": 2180, + "sourceUnit": 5300, + "src": "25:33:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 2123, + "nodeType": "ImportDirective", + "scope": 2180, + "sourceUnit": 3088, + "src": "59:42:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2124, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3087, + "src": "295:14:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$3087", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 2125, + "nodeType": "InheritanceSpecifier", + "src": "295:14:14" + } + ], + "contractDependencies": [ + 26, + 2119, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title FinalizableCrowdsale\n@dev Extension of TimedCrowdsale with a one-off finalization action, where one\ncan do extra work after finishing.", + "fullyImplemented": false, + "id": 2179, + "linearizedBaseContracts": [ + 2179, + 3087, + 2119, + 13820, + 26 + ], + "name": "FinalizableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2128, + "libraryName": { + "contractScope": null, + "id": 2126, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "322:8:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "316:27:14", + "typeName": { + "id": 2127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2130, + "name": "_finalized", + "nodeType": "VariableDeclaration", + "scope": 2179, + "src": "349:23:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "349:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 2132, + "name": "CrowdsaleFinalized", + "nodeType": "EventDefinition", + "parameters": { + "id": 2131, + "nodeType": "ParameterList", + "parameters": [], + "src": "403:2:14" + }, + "src": "379:27:14" + }, + { + "body": { + "id": 2139, + "nodeType": "Block", + "src": "436:35:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2135, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "446:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "459:5:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "446:18:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2138, + "nodeType": "ExpressionStatement", + "src": "446:18:14" + } + ] + }, + "documentation": null, + "id": 2140, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2133, + "nodeType": "ParameterList", + "parameters": [], + "src": "424:2:14" + }, + "returnParameters": { + "id": 2134, + "nodeType": "ParameterList", + "parameters": [], + "src": "436:0:14" + }, + "scope": 2179, + "src": "412:59:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2147, + "nodeType": "Block", + "src": "609:34:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2145, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "626:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2144, + "id": 2146, + "nodeType": "Return", + "src": "619:17:14" + } + ] + }, + "documentation": "@return true if the crowdsale is finalized, false otherwise.", + "id": 2148, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalized", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2141, + "nodeType": "ParameterList", + "parameters": [], + "src": "579:2:14" + }, + "returnParameters": { + "id": 2144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2143, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "603:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2142, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "603:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "602:6:14" + }, + "scope": 2179, + "src": "561:82:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2173, + "nodeType": "Block", + "src": "828:235:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "846:11:14", + "subExpression": { + "argumentTypes": null, + "id": 2152, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "847:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "46696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564", + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "859:41:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_add3851407fb271b99f0a6c77295a889f6e9c9fd75a445c71c8bcc137e138dde", + "typeString": "literal_string \"FinalizableCrowdsale: already finalized\"" + }, + "value": "FinalizableCrowdsale: already finalized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_add3851407fb271b99f0a6c77295a889f6e9c9fd75a445c71c8bcc137e138dde", + "typeString": "literal_string \"FinalizableCrowdsale: already finalized\"" + } + ], + "id": 2151, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "838:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "838:63:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2156, + "nodeType": "ExpressionStatement", + "src": "838:63:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2158, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3040, + "src": "919:9:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "919:11:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f736564", + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "932:34:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3248fca506ca48c5582f347404c127a5579310ae1e6ed4b284d29eb0ff216ace", + "typeString": "literal_string \"FinalizableCrowdsale: not closed\"" + }, + "value": "FinalizableCrowdsale: not closed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3248fca506ca48c5582f347404c127a5579310ae1e6ed4b284d29eb0ff216ace", + "typeString": "literal_string \"FinalizableCrowdsale: not closed\"" + } + ], + "id": 2157, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "911:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "911:56:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2162, + "nodeType": "ExpressionStatement", + "src": "911:56:14" + }, + { + "expression": { + "argumentTypes": null, + "id": 2165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2163, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "978:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "991:4:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "978:17:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2166, + "nodeType": "ExpressionStatement", + "src": "978:17:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2167, + "name": "_finalization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "1006:13:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1006:15:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2169, + "nodeType": "ExpressionStatement", + "src": "1006:15:14" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2170, + "name": "CrowdsaleFinalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "1036:18:14", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1036:20:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2172, + "nodeType": "EmitStatement", + "src": "1031:25:14" + } + ] + }, + "documentation": "@dev Must be called after crowdsale ends, to do some extra finalization\nwork. Calls the contract's finalization function.", + "id": 2174, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2149, + "nodeType": "ParameterList", + "parameters": [], + "src": "818:2:14" + }, + "returnParameters": { + "id": 2150, + "nodeType": "ParameterList", + "parameters": [], + "src": "828:0:14" + }, + "scope": 2179, + "src": "801:262:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2177, + "nodeType": "Block", + "src": "1306:64:14", + "statements": [] + }, + "documentation": "@dev Can be overridden to add finalization logic. The overriding function\nshould call super._finalization() to ensure the chain of finalization is\nexecuted entirely.", + "id": 2178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2175, + "nodeType": "ParameterList", + "parameters": [], + "src": "1294:2:14" + }, + "returnParameters": { + "id": 2176, + "nodeType": "ParameterList", + "parameters": [], + "src": "1306:0:14" + }, + "scope": 2179, + "src": "1272:98:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2180, + "src": "262:1110:14" + } + ], + "src": "0:1373:14" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsaleImpl.json new file mode 100644 index 0000000..6b35d88 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/FinalizableCrowdsaleImpl.json @@ -0,0 +1,638 @@ +{ + "fileName": "FinalizableCrowdsaleImpl.sol", + "contractName": "FinalizableCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/distribution/FinalizableCrowdsale.sol\";\n\ncontract FinalizableCrowdsaleImpl is FinalizableCrowdsale {\n constructor (uint256 openingTime, uint256 closingTime, uint256 rate, address payable wallet, IERC20 token)\n public\n Crowdsale(rate, wallet, token)\n TimedCrowdsale(openingTime, closingTime)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/FinalizableCrowdsaleImpl.sol", + "sourceMap": "123:344:79:-;;;187:278;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:278:79;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;187:278:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;371:11;384;327:4;333:6;341:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;459:5:14;446:10;;:18;;;;;;;;;;;;;;;;;;187:278:79;;;;;123:344;;;;;;", + "deployedSourceMap": "123:344:79:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;123:344:79;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1590:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;801:262:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:262:14;;;:::i;:::-;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;561:82:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;561:82:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1436:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;1590:89::-;1634:7;1660:12;;1653:19;;1590:89;:::o;801:262:14:-;847:10;;;;;;;;;;;846:11;838:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;919:11;:9;:11::i;:::-;911:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:4;978:10;;:17;;;;;;;;;;;;;;;;;;1006:15;:13;:15::i;:::-;1036:20;;;;;;;;;;801:262::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;561:82:14:-;603:4;626:10;;;;;;;;;;;619:17;;561:82;:::o;1436:89:24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;1272:98:14:-;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/FinalizableCrowdsaleImpl.sol", + "exportedSymbols": { + "FinalizableCrowdsaleImpl": [ + 7028 + ] + }, + "id": 7029, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7000, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:79" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 7001, + "nodeType": "ImportDirective", + "scope": 7029, + "sourceUnit": 10217, + "src": "25:35:79", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "file": "../crowdsale/distribution/FinalizableCrowdsale.sol", + "id": 7002, + "nodeType": "ImportDirective", + "scope": 7029, + "sourceUnit": 2180, + "src": "61:60:79", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7003, + "name": "FinalizableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2179, + "src": "160:20:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FinalizableCrowdsale_$2179", + "typeString": "contract FinalizableCrowdsale" + } + }, + "id": 7004, + "nodeType": "InheritanceSpecifier", + "src": "160:20:79" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7028, + "linearizedBaseContracts": [ + 7028, + 2179, + 3087, + 2119, + 13820, + 26 + ], + "name": "FinalizableCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7026, + "nodeType": "Block", + "src": "401:64:79", + "statements": [] + }, + "documentation": null, + "id": 7027, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7017, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7010, + "src": "327:4:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7018, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7012, + "src": "333:6:79", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7019, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7014, + "src": "341:5:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 7020, + "modifierName": { + "argumentTypes": null, + "id": 7016, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "317:9:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "317:30:79" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7022, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7006, + "src": "371:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7023, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7008, + "src": "384:11:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7024, + "modifierName": { + "argumentTypes": null, + "id": 7021, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "356:14:79", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "356:40:79" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7015, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7006, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "200:19:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7005, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "200:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7008, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "221:19:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "221:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7010, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "242:12:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7009, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "242:7:79", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7012, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "256:22:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "256:15:79", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7014, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "280:12:79", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 7013, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "280:6:79", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "199:94:79" + }, + "returnParameters": { + "id": 7025, + "nodeType": "ParameterList", + "parameters": [], + "src": "401:0:79" + }, + "scope": 7028, + "src": "187:278:79", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7029, + "src": "123:344:79" + } + ], + "src": "0:468:79" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060405161126a38038061126a833981810160405260a081101561003357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050848484848460016000806101000a81548160ff02191690831515021790555060008311610101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610187576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112456025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112216024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050428210156102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806111b76033913960400191505060405180910390fd5b81811161034a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806111ea6037913960400191505060405180910390fd5b816004819055508060058190555050506000600660006101000a81548160ff0219169083151502179055505050505050610e2e806103896000396000f3fe60806040526004361061009c5760003560e01c80634bb278f3116100645780634bb278f31461018d578063521eb273146101a4578063b3f05b97146101fb578063b7a8807c1461022a578063ec8ac4d814610255578063fc0c546a146102995761009c565b80631515bc2b146100ae5780632c4e722e146100dd5780634042b66f1461010857806347535d7b146101335780634b6753bc14610162575b6100ac6100a76102f0565b6102f8565b005b3480156100ba57600080fd5b506100c3610483565b604051808215151515815260200191505060405180910390f35b3480156100e957600080fd5b506100f261048f565b6040518082815260200191505060405180910390f35b34801561011457600080fd5b5061011d610499565b6040518082815260200191505060405180910390f35b34801561013f57600080fd5b506101486104a3565b604051808215151515815260200191505060405180910390f35b34801561016e57600080fd5b506101776104be565b6040518082815260200191505060405180910390f35b34801561019957600080fd5b506101a26104c8565b005b3480156101b057600080fd5b506101b96105f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b50610210610623565b604051808215151515815260200191505060405180910390f35b34801561023657600080fd5b5061023f61063a565b6040518082815260200191505060405180910390f35b6102976004803603602081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102f8565b005b3480156102a557600080fd5b506102ae610644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506103a2828261066d565b60006103ad826106f5565b90506103c48260035461071390919063ffffffff16565b6003819055506103d4838261079b565b8273ffffffffffffffffffffffffffffffffffffffff166103f36102f0565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361045283836107a9565b61045a6107ad565b6104648383610818565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600354905090565b600060045442101580156104b957506005544211155b905090565b6000600554905090565b600660009054906101000a900460ff161561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610d7f6027913960400191505060405180910390fd5b610536610483565b6105a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055506105cb61081c565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660009054906101000a900460ff16905090565b6000600454905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106756104a3565b6106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6106f1828261081e565b5050565b600061070c6002548361091f90919063ffffffff16565b9050919050565b600080828401905083811015610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6107a582826109a5565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610815573d6000803e3d6000fd5b50565b5050565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610da6602a913960400191505060405180910390fd5b600081141561091b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610932576000905061099f565b600082840290508284828161094357fe5b041461099a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610d5e6021913960400191505060405180910390fd5b809150505b92915050565b6109f28282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109f69092919063ffffffff16565b5050565b610ac2838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610ac7565b505050565b610ae68273ffffffffffffffffffffffffffffffffffffffff16610d12565b610b58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610ba75780518252602082019150602081019050602083039250610b84565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c09576040519150601f19603f3d011682016040523d82523d6000602084013e610c0e565b606091505b509150915081610c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d0c57808060200190516020811015610ca557600080fd5b8101908080519060200190929190505050610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610dd0602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610d5457506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a656443726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582010de2ae143e963b520c310f4e7637d438b2a6a722ec6e3c4d8a98faa9278ed6064736f6c6343000511003254696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d6554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d6543726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x60806040526004361061009c5760003560e01c80634bb278f3116100645780634bb278f31461018d578063521eb273146101a4578063b3f05b97146101fb578063b7a8807c1461022a578063ec8ac4d814610255578063fc0c546a146102995761009c565b80631515bc2b146100ae5780632c4e722e146100dd5780634042b66f1461010857806347535d7b146101335780634b6753bc14610162575b6100ac6100a76102f0565b6102f8565b005b3480156100ba57600080fd5b506100c3610483565b604051808215151515815260200191505060405180910390f35b3480156100e957600080fd5b506100f261048f565b6040518082815260200191505060405180910390f35b34801561011457600080fd5b5061011d610499565b6040518082815260200191505060405180910390f35b34801561013f57600080fd5b506101486104a3565b604051808215151515815260200191505060405180910390f35b34801561016e57600080fd5b506101776104be565b6040518082815260200191505060405180910390f35b34801561019957600080fd5b506101a26104c8565b005b3480156101b057600080fd5b506101b96105f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b50610210610623565b604051808215151515815260200191505060405180910390f35b34801561023657600080fd5b5061023f61063a565b6040518082815260200191505060405180910390f35b6102976004803603602081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102f8565b005b3480156102a557600080fd5b506102ae610644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506103a2828261066d565b60006103ad826106f5565b90506103c48260035461071390919063ffffffff16565b6003819055506103d4838261079b565b8273ffffffffffffffffffffffffffffffffffffffff166103f36102f0565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361045283836107a9565b61045a6107ad565b6104648383610818565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600354905090565b600060045442101580156104b957506005544211155b905090565b6000600554905090565b600660009054906101000a900460ff161561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610d7f6027913960400191505060405180910390fd5b610536610483565b6105a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055506105cb61081c565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660009054906101000a900460ff16905090565b6000600454905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106756104a3565b6106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6106f1828261081e565b5050565b600061070c6002548361091f90919063ffffffff16565b9050919050565b600080828401905083811015610791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6107a582826109a5565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610815573d6000803e3d6000fd5b50565b5050565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610da6602a913960400191505060405180910390fd5b600081141561091b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610932576000905061099f565b600082840290508284828161094357fe5b041461099a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610d5e6021913960400191505060405180910390fd5b809150505b92915050565b6109f28282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109f69092919063ffffffff16565b5050565b610ac2838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610ac7565b505050565b610ae68273ffffffffffffffffffffffffffffffffffffffff16610d12565b610b58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610ba75780518252602082019150602081019050602083039250610b84565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c09576040519150601f19603f3d011682016040523d82523d6000602084013e610c0e565b606091505b509150915081610c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d0c57808060200190516020811015610ca557600080fd5b8101908080519060200190929190505050610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610dd0602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610d5457506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a656443726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582010de2ae143e963b520c310f4e7637d438b2a6a722ec6e3c4d8a98faa9278ed6064736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipient.json b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipient.json new file mode 100644 index 0000000..3ce975e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipient.json @@ -0,0 +1,4699 @@ +{ + "fileName": "GSNRecipient.sol", + "contractName": "GSNRecipient", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IRelayRecipient.sol\";\nimport \"./IRelayHub.sol\";\nimport \"./Context.sol\";\n\n/**\n * @dev Base GSN recipient contract: includes the {IRelayRecipient} interface\n * and enables GSN support on all contracts in the inheritance tree.\n *\n * TIP: This contract is abstract. The functions {IRelayRecipient-acceptRelayedCall},\n * {_preRelayedCall}, and {_postRelayedCall} are not implemented and must be\n * provided by derived contracts. See the\n * xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategies] for more\n * information on how to use the pre-built {GSNRecipientSignature} and\n * {GSNRecipientERC20Fee}, or how to write your own.\n */\nabstract contract GSNRecipient is IRelayRecipient, Context {\n // Default RelayHub address, deployed on mainnet and all testnets at the same address\n address private _relayHub = 0xD216153c06E857cD7f72665E0aF1d7D82172F494;\n\n uint256 constant private _RELAYED_CALL_ACCEPTED = 0;\n uint256 constant private _RELAYED_CALL_REJECTED = 11;\n\n // How much gas is forwarded to postRelayedCall\n uint256 constant internal _POST_RELAYED_CALL_MAX_GAS = 100000;\n\n /**\n * @dev Emitted when a contract changes its {IRelayHub} contract to a new one.\n */\n event RelayHubChanged(address indexed oldRelayHub, address indexed newRelayHub);\n\n /**\n * @dev Returns the address of the {IRelayHub} contract for this recipient.\n */\n function getHubAddr() public view override returns (address) {\n return _relayHub;\n }\n\n /**\n * @dev Switches to a new {IRelayHub} instance. This method is added for future-proofing: there's no reason to not\n * use the default instance.\n *\n * IMPORTANT: After upgrading, the {GSNRecipient} will no longer be able to receive relayed calls from the old\n * {IRelayHub} instance. Additionally, all funds should be previously withdrawn via {_withdrawDeposits}.\n */\n function _upgradeRelayHub(address newRelayHub) internal virtual {\n address currentRelayHub = _relayHub;\n require(newRelayHub != address(0), \"GSNRecipient: new RelayHub is the zero address\");\n require(newRelayHub != currentRelayHub, \"GSNRecipient: new RelayHub is the current one\");\n\n emit RelayHubChanged(currentRelayHub, newRelayHub);\n\n _relayHub = newRelayHub;\n }\n\n /**\n * @dev Returns the version string of the {IRelayHub} for which this recipient implementation was built. If\n * {_upgradeRelayHub} is used, the new {IRelayHub} instance should be compatible with this version.\n */\n // This function is view for future-proofing, it may require reading from\n // storage in the future.\n function relayHubVersion() public view returns (string memory) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return \"1.0.0\";\n }\n\n /**\n * @dev Withdraws the recipient's deposits in `RelayHub`.\n *\n * Derived contracts should expose this in an external interface with proper access control.\n */\n function _withdrawDeposits(uint256 amount, address payable payee) internal virtual {\n IRelayHub(_relayHub).withdraw(amount, payee);\n }\n\n // Overrides for Context's functions: when called from RelayHub, sender and\n // data require some pre-processing: the actual sender is stored at the end\n // of the call data, which in turns means it needs to be removed from it\n // when handling said data.\n\n /**\n * @dev Replacement for msg.sender. Returns the actual sender of a transaction: msg.sender for regular transactions,\n * and the end-user for GSN relayed calls (where msg.sender is actually `RelayHub`).\n *\n * IMPORTANT: Contracts derived from {GSNRecipient} should never use `msg.sender`, and use {_msgSender} instead.\n */\n function _msgSender() internal view virtual override returns (address payable) {\n if (msg.sender != _relayHub) {\n return msg.sender;\n } else {\n return _getRelayedCallSender();\n }\n }\n\n /**\n * @dev Replacement for msg.data. Returns the actual calldata of a transaction: msg.data for regular transactions,\n * and a reduced version for GSN relayed calls (where msg.data contains additional information).\n *\n * IMPORTANT: Contracts derived from {GSNRecipient} should never use `msg.data`, and use {_msgData} instead.\n */\n function _msgData() internal view virtual override returns (bytes memory) {\n if (msg.sender != _relayHub) {\n return msg.data;\n } else {\n return _getRelayedCallData();\n }\n }\n\n // Base implementations for pre and post relayedCall: only RelayHub can invoke them, and data is forwarded to the\n // internal hook.\n\n /**\n * @dev See `IRelayRecipient.preRelayedCall`.\n *\n * This function should not be overriden directly, use `_preRelayedCall` instead.\n *\n * * Requirements:\n *\n * - the caller must be the `RelayHub` contract.\n */\n function preRelayedCall(bytes memory context) public virtual override returns (bytes32) {\n require(msg.sender == getHubAddr(), \"GSNRecipient: caller is not RelayHub\");\n return _preRelayedCall(context);\n }\n\n /**\n * @dev See `IRelayRecipient.preRelayedCall`.\n *\n * Called by `GSNRecipient.preRelayedCall`, which asserts the caller is the `RelayHub` contract. Derived contracts\n * must implement this function with any relayed-call preprocessing they may wish to do.\n *\n */\n function _preRelayedCall(bytes memory context) internal virtual returns (bytes32);\n\n /**\n * @dev See `IRelayRecipient.postRelayedCall`.\n *\n * This function should not be overriden directly, use `_postRelayedCall` instead.\n *\n * * Requirements:\n *\n * - the caller must be the `RelayHub` contract.\n */\n function postRelayedCall(bytes memory context, bool success, uint256 actualCharge, bytes32 preRetVal) public virtual override {\n require(msg.sender == getHubAddr(), \"GSNRecipient: caller is not RelayHub\");\n _postRelayedCall(context, success, actualCharge, preRetVal);\n }\n\n /**\n * @dev See `IRelayRecipient.postRelayedCall`.\n *\n * Called by `GSNRecipient.postRelayedCall`, which asserts the caller is the `RelayHub` contract. Derived contracts\n * must implement this function with any relayed-call postprocessing they may wish to do.\n *\n */\n function _postRelayedCall(bytes memory context, bool success, uint256 actualCharge, bytes32 preRetVal) internal virtual;\n\n /**\n * @dev Return this in acceptRelayedCall to proceed with the execution of a relayed call. Note that this contract\n * will be charged a fee by RelayHub\n */\n function _approveRelayedCall() internal pure returns (uint256, bytes memory) {\n return _approveRelayedCall(\"\");\n }\n\n /**\n * @dev See `GSNRecipient._approveRelayedCall`.\n *\n * This overload forwards `context` to _preRelayedCall and _postRelayedCall.\n */\n function _approveRelayedCall(bytes memory context) internal pure returns (uint256, bytes memory) {\n return (_RELAYED_CALL_ACCEPTED, context);\n }\n\n /**\n * @dev Return this in acceptRelayedCall to impede execution of a relayed call. No fees will be charged.\n */\n function _rejectRelayedCall(uint256 errorCode) internal pure returns (uint256, bytes memory) {\n return (_RELAYED_CALL_REJECTED + errorCode, \"\");\n }\n\n /*\n * @dev Calculates how much RelayHub will charge a recipient for using `gas` at a `gasPrice`, given a relayer's\n * `serviceFee`.\n */\n function _computeCharge(uint256 gas, uint256 gasPrice, uint256 serviceFee) internal pure returns (uint256) {\n // The fee is expressed as a percentage. E.g. a value of 40 stands for a 40% fee, so the recipient will be\n // charged for 1.4 times the spent amount.\n return (gas * gasPrice * (100 + serviceFee)) / 100;\n }\n\n function _getRelayedCallSender() private pure returns (address payable result) {\n // We need to read 20 bytes (an address) located at array index msg.data.length - 20. In memory, the array\n // is prefixed with a 32-byte length value, so we first add 32 to get the memory read index. However, doing\n // so would leave the address in the upper 20 bytes of the 32-byte word, which is inconvenient and would\n // require bit shifting. We therefore subtract 12 from the read index so the address lands on the lower 20\n // bytes. This can always be done due to the 32-byte prefix.\n\n // The final memory read index is msg.data.length - 20 + 32 - 12 = msg.data.length. Using inline assembly is the\n // easiest/most-efficient way to perform this operation.\n\n // These fields are not accessible from assembly\n bytes memory array = msg.data;\n uint256 index = msg.data.length;\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those.\n result := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n return result;\n }\n\n function _getRelayedCallData() private pure returns (bytes memory) {\n // RelayHub appends the sender address at the end of the calldata, so in order to retrieve the actual msg.data,\n // we must strip the last 20 bytes (length of an address type) from it.\n\n uint256 actualDataLength = msg.data.length - 20;\n bytes memory actualData = new bytes(actualDataLength);\n\n for (uint256 i = 0; i < actualDataLength; ++i) {\n actualData[i] = msg.data[i];\n }\n\n return actualData;\n }\n}\n", + "sourcePath": "contracts/GSN/GSNRecipient.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "maxPossibleCharge", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "exportedSymbols": { + "GSNRecipient": [ + 375 + ] + }, + "id": 376, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 24, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:1" + }, + { + "absolutePath": "contracts/GSN/IRelayRecipient.sol", + "file": "./IRelayRecipient.sol", + "id": 25, + "nodeType": "ImportDirective", + "scope": 376, + "sourceUnit": 1185, + "src": "58:31:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/IRelayHub.sol", + "file": "./IRelayHub.sol", + "id": 26, + "nodeType": "ImportDirective", + "scope": 376, + "sourceUnit": 1129, + "src": "90:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "./Context.sol", + "id": 27, + "nodeType": "ImportDirective", + "scope": 376, + "sourceUnit": 23, + "src": "116:23:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 29, + "name": "IRelayRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1184, + "src": "736:15:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRelayRecipient_$1184", + "typeString": "contract IRelayRecipient" + } + }, + "id": 30, + "nodeType": "InheritanceSpecifier", + "src": "736:15:1" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 31, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "753:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 32, + "nodeType": "InheritanceSpecifier", + "src": "753:7:1" + } + ], + "contractDependencies": [ + 22, + 1184 + ], + "contractKind": "contract", + "documentation": { + "id": 28, + "nodeType": "StructuredDocumentation", + "src": "141:560:1", + "text": " @dev Base GSN recipient contract: includes the {IRelayRecipient} interface\n and enables GSN support on all contracts in the inheritance tree.\n TIP: This contract is abstract. The functions {IRelayRecipient-acceptRelayedCall},\n {_preRelayedCall}, and {_postRelayedCall} are not implemented and must be\n provided by derived contracts. See the\n xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategies] for more\n information on how to use the pre-built {GSNRecipientSignature} and\n {GSNRecipientERC20Fee}, or how to write your own." + }, + "fullyImplemented": false, + "id": 375, + "linearizedBaseContracts": [ + 375, + 22, + 1184 + ], + "name": "GSNRecipient", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "_relayHub", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 375, + "src": "857:70:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "857:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307844323136313533633036453835376344376637323636354530614631643744383231373246343934", + "id": 34, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "885:42:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xD216153c06E857cD7f72665E0aF1d7D82172F494" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 38, + "mutability": "constant", + "name": "_RELAYED_CALL_ACCEPTED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 375, + "src": "934:51:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "934:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "984:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 41, + "mutability": "constant", + "name": "_RELAYED_CALL_REJECTED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 375, + "src": "991:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 39, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "991:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3131", + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1041:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_11_by_1", + "typeString": "int_const 11" + }, + "value": "11" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 44, + "mutability": "constant", + "name": "_POST_RELAYED_CALL_MAX_GAS", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 375, + "src": "1102:61:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 42, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1102:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "313030303030", + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1157:6:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100000_by_1", + "typeString": "int_const 100000" + }, + "value": "100000" + }, + "visibility": "internal" + }, + { + "anonymous": false, + "documentation": { + "id": 45, + "nodeType": "StructuredDocumentation", + "src": "1170:94:1", + "text": " @dev Emitted when a contract changes its {IRelayHub} contract to a new one." + }, + "id": 51, + "name": "RelayHubChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "indexed": true, + "mutability": "mutable", + "name": "oldRelayHub", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 51, + "src": "1291:27:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 46, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1291:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 49, + "indexed": true, + "mutability": "mutable", + "name": "newRelayHub", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 51, + "src": "1320:27:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1320:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1290:58:1" + }, + "src": "1269:80:1" + }, + { + "baseFunctions": [ + 1137 + ], + "body": { + "id": 60, + "nodeType": "Block", + "src": "1512:33:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 58, + "name": "_relayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1529:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 57, + "id": 59, + "nodeType": "Return", + "src": "1522:16:1" + } + ] + }, + "documentation": { + "id": 52, + "nodeType": "StructuredDocumentation", + "src": "1355:91:1", + "text": " @dev Returns the address of the {IRelayHub} contract for this recipient." + }, + "functionSelector": "74e861d6", + "id": 61, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getHubAddr", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 54, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1485:8:1" + }, + "parameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [], + "src": "1470:2:1" + }, + "returnParameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 56, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 61, + "src": "1503:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 55, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1503:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1502:9:1" + }, + "scope": 375, + "src": "1451:94:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 97, + "nodeType": "Block", + "src": "2014:339:1", + "statements": [ + { + "assignments": [ + 68 + ], + "declarations": [ + { + "constant": false, + "id": 68, + "mutability": "mutable", + "name": "currentRelayHub", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 97, + "src": "2024:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 67, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2024:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 70, + "initialValue": { + "argumentTypes": null, + "id": 69, + "name": "_relayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2050:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2024:35:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 72, + "name": "newRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "2077:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2100:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2092:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2092:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2092:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2077:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2104:48:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6f491055395682510b2d42bd98bb3e1d6b09e7412a20297798e6a1eaf3a959fc", + "typeString": "literal_string \"GSNRecipient: new RelayHub is the zero address\"" + }, + "value": "GSNRecipient: new RelayHub is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6f491055395682510b2d42bd98bb3e1d6b09e7412a20297798e6a1eaf3a959fc", + "typeString": "literal_string \"GSNRecipient: new RelayHub is the zero address\"" + } + ], + "id": 71, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2069:84:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 80, + "nodeType": "ExpressionStatement", + "src": "2069:84:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 82, + "name": "newRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "2171:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 83, + "name": "currentRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "2186:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2171:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "47534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e65", + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2203:47:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a813abdd30d501e1e20e9af7c88309a559a778de193d0ada7263f2d66933ec3e", + "typeString": "literal_string \"GSNRecipient: new RelayHub is the current one\"" + }, + "value": "GSNRecipient: new RelayHub is the current one" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a813abdd30d501e1e20e9af7c88309a559a778de193d0ada7263f2d66933ec3e", + "typeString": "literal_string \"GSNRecipient: new RelayHub is the current one\"" + } + ], + "id": 81, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2163:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2163:88:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 87, + "nodeType": "ExpressionStatement", + "src": "2163:88:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 89, + "name": "currentRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "2283:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 90, + "name": "newRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "2300:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 88, + "name": "RelayHubChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "2267:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2267:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 92, + "nodeType": "EmitStatement", + "src": "2262:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 93, + "name": "_relayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2323:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 94, + "name": "newRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "2335:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2323:23:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "2323:23:1" + } + ] + }, + "documentation": { + "id": 62, + "nodeType": "StructuredDocumentation", + "src": "1551:394:1", + "text": " @dev Switches to a new {IRelayHub} instance. This method is added for future-proofing: there's no reason to not\n use the default instance.\n IMPORTANT: After upgrading, the {GSNRecipient} will no longer be able to receive relayed calls from the old\n {IRelayHub} instance. Additionally, all funds should be previously withdrawn via {_withdrawDeposits}." + }, + "id": 98, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_upgradeRelayHub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64, + "mutability": "mutable", + "name": "newRelayHub", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 98, + "src": "1976:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 63, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1976:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1975:21:1" + }, + "returnParameters": { + "id": 66, + "nodeType": "ParameterList", + "parameters": [], + "src": "2014:0:1" + }, + "scope": 375, + "src": "1950:403:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 108, + "nodeType": "Block", + "src": "2762:164:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 104, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2772:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$375", + "typeString": "contract GSNRecipient" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "2772:4:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "312e302e30", + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2912:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c", + "typeString": "literal_string \"1.0.0\"" + }, + "value": "1.0.0" + }, + "functionReturnParameters": 103, + "id": 107, + "nodeType": "Return", + "src": "2905:14:1" + } + ] + }, + "documentation": { + "id": 99, + "nodeType": "StructuredDocumentation", + "src": "2359:227:1", + "text": " @dev Returns the version string of the {IRelayHub} for which this recipient implementation was built. If\n {_upgradeRelayHub} is used, the new {IRelayHub} instance should be compatible with this version." + }, + "functionSelector": "ad61ccd5", + "id": 109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "relayHubVersion", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [], + "src": "2723:2:1" + }, + "returnParameters": { + "id": 103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 109, + "src": "2747:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 101, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2747:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2746:15:1" + }, + "scope": 375, + "src": "2699:227:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 125, + "nodeType": "Block", + "src": "3197:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 121, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 112, + "src": "3237:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 122, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "3245:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 118, + "name": "_relayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "3217:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 117, + "name": "IRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1128, + "src": "3207:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IRelayHub_$1128_$", + "typeString": "type(contract IRelayHub)" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3207:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IRelayHub_$1128", + "typeString": "contract IRelayHub" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 971, + "src": "3207:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_payable_$returns$__$", + "typeString": "function (uint256,address payable) external" + } + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3207:44:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 124, + "nodeType": "ExpressionStatement", + "src": "3207:44:1" + } + ] + }, + "documentation": { + "id": 110, + "nodeType": "StructuredDocumentation", + "src": "2932:177:1", + "text": " @dev Withdraws the recipient's deposits in `RelayHub`.\n Derived contracts should expose this in an external interface with proper access control." + }, + "id": 126, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_withdrawDeposits", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 112, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 126, + "src": "3141:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 111, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3141:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 114, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 126, + "src": "3157:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3157:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3140:39:1" + }, + "returnParameters": { + "id": 116, + "nodeType": "ParameterList", + "parameters": [], + "src": "3197:0:1" + }, + "scope": 375, + "src": "3114:144:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 10 + ], + "body": { + "id": 146, + "nodeType": "Block", + "src": "3963:148:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 133, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3977:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3977:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 135, + "name": "_relayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "3991:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3977:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 144, + "nodeType": "Block", + "src": "4050:55:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 141, + "name": "_getRelayedCallSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "4071:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$", + "typeString": "function () pure returns (address payable)" + } + }, + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4071:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 132, + "id": 143, + "nodeType": "Return", + "src": "4064:30:1" + } + ] + }, + "id": 145, + "nodeType": "IfStatement", + "src": "3973:132:1", + "trueBody": { + "id": 140, + "nodeType": "Block", + "src": "4002:42:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 137, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4023:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4023:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 132, + "id": 139, + "nodeType": "Return", + "src": "4016:17:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 127, + "nodeType": "StructuredDocumentation", + "src": "3534:345:1", + "text": " @dev Replacement for msg.sender. Returns the actual sender of a transaction: msg.sender for regular transactions,\n and the end-user for GSN relayed calls (where msg.sender is actually `RelayHub`).\n IMPORTANT: Contracts derived from {GSNRecipient} should never use `msg.sender`, and use {_msgSender} instead." + }, + "id": 147, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 129, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3928:8:1" + }, + "parameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [], + "src": "3903:2:1" + }, + "returnParameters": { + "id": 132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 131, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 147, + "src": "3946:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3946:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3945:17:1" + }, + "scope": 375, + "src": "3884:227:1", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 21 + ], + "body": { + "id": 167, + "nodeType": "Block", + "src": "4547:144:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 154, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4561:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4561:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 156, + "name": "_relayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "4575:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4561:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 165, + "nodeType": "Block", + "src": "4632:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 162, + "name": "_getRelayedCallData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "4653:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4653:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 153, + "id": 164, + "nodeType": "Return", + "src": "4646:28:1" + } + ] + }, + "id": 166, + "nodeType": "IfStatement", + "src": "4557:128:1", + "trueBody": { + "id": 161, + "nodeType": "Block", + "src": "4586:40:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 158, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4607:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4607:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 153, + "id": 160, + "nodeType": "Return", + "src": "4600:15:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 148, + "nodeType": "StructuredDocumentation", + "src": "4117:351:1", + "text": " @dev Replacement for msg.data. Returns the actual calldata of a transaction: msg.data for regular transactions,\n and a reduced version for GSN relayed calls (where msg.data contains additional information).\n IMPORTANT: Contracts derived from {GSNRecipient} should never use `msg.data`, and use {_msgData} instead." + }, + "id": 168, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 150, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4515:8:1" + }, + "parameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [], + "src": "4490:2:1" + }, + "returnParameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 152, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 168, + "src": "4533:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 151, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4533:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4532:14:1" + }, + "scope": 375, + "src": "4473:218:1", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1171 + ], + "body": { + "id": 190, + "nodeType": "Block", + "src": "5175:133:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 178, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5193:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5193:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 180, + "name": "getHubAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "5207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5207:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5193:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "47534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562", + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5221:38:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5a8631418fdde7d8bd9088d1be86b076bc07c8b187afcea36c0a6e10c88ab53", + "typeString": "literal_string \"GSNRecipient: caller is not RelayHub\"" + }, + "value": "GSNRecipient: caller is not RelayHub" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5a8631418fdde7d8bd9088d1be86b076bc07c8b187afcea36c0a6e10c88ab53", + "typeString": "literal_string \"GSNRecipient: caller is not RelayHub\"" + } + ], + "id": 177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5185:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5185:75:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 185, + "nodeType": "ExpressionStatement", + "src": "5185:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 187, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5293:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 186, + "name": "_preRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "5277:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) returns (bytes32)" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5277:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 176, + "id": 189, + "nodeType": "Return", + "src": "5270:31:1" + } + ] + }, + "documentation": { + "id": 169, + "nodeType": "StructuredDocumentation", + "src": "4838:244:1", + "text": " @dev See `IRelayRecipient.preRelayedCall`.\n This function should not be overriden directly, use `_preRelayedCall` instead.\n * Requirements:\n - the caller must be the `RelayHub` contract." + }, + "functionSelector": "80274db7", + "id": 191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 173, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5148:8:1" + }, + "parameters": { + "id": 172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 171, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "5111:20:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 170, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5111:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5110:22:1" + }, + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 191, + "src": "5166:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 174, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5166:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5165:9:1" + }, + "scope": 375, + "src": "5087:221:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": null, + "documentation": { + "id": 192, + "nodeType": "StructuredDocumentation", + "src": "5314:287:1", + "text": " @dev See `IRelayRecipient.preRelayedCall`.\n Called by `GSNRecipient.preRelayedCall`, which asserts the caller is the `RelayHub` contract. Derived contracts\n must implement this function with any relayed-call preprocessing they may wish to do." + }, + "id": 199, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "5631:20:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 193, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5631:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5630:22:1" + }, + "returnParameters": { + "id": 198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 197, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 199, + "src": "5679:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 196, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5679:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5678:9:1" + }, + "scope": 375, + "src": "5606:82:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1183 + ], + "body": { + "id": 228, + "nodeType": "Block", + "src": "6071:161:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6089:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6089:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 215, + "name": "getHubAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "6103:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6103:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6089:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "47534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6117:38:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5a8631418fdde7d8bd9088d1be86b076bc07c8b187afcea36c0a6e10c88ab53", + "typeString": "literal_string \"GSNRecipient: caller is not RelayHub\"" + }, + "value": "GSNRecipient: caller is not RelayHub" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5a8631418fdde7d8bd9088d1be86b076bc07c8b187afcea36c0a6e10c88ab53", + "typeString": "literal_string \"GSNRecipient: caller is not RelayHub\"" + } + ], + "id": 212, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6081:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6081:75:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 220, + "nodeType": "ExpressionStatement", + "src": "6081:75:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 222, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "6183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 223, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "6192:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 224, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "6201:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 225, + "name": "preRetVal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 208, + "src": "6215:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 221, + "name": "_postRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 241, + "src": "6166:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bool_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (bytes memory,bool,uint256,bytes32)" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6166:59:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 227, + "nodeType": "ExpressionStatement", + "src": "6166:59:1" + } + ] + }, + "documentation": { + "id": 200, + "nodeType": "StructuredDocumentation", + "src": "5694:246:1", + "text": " @dev See `IRelayRecipient.postRelayedCall`.\n This function should not be overriden directly, use `_postRelayedCall` instead.\n * Requirements:\n - the caller must be the `RelayHub` contract." + }, + "functionSelector": "e06e0e22", + "id": 229, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 210, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6062:8:1" + }, + "parameters": { + "id": 209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 202, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 229, + "src": "5970:20:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 201, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5970:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 229, + "src": "5992:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 203, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5992:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "mutability": "mutable", + "name": "actualCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 229, + "src": "6006:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6006:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 208, + "mutability": "mutable", + "name": "preRetVal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 229, + "src": "6028:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 207, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5969:77:1" + }, + "returnParameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [], + "src": "6071:0:1" + }, + "scope": 375, + "src": "5945:287:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": null, + "documentation": { + "id": 230, + "nodeType": "StructuredDocumentation", + "src": "6238:290:1", + "text": " @dev See `IRelayRecipient.postRelayedCall`.\n Called by `GSNRecipient.postRelayedCall`, which asserts the caller is the `RelayHub` contract. Derived contracts\n must implement this function with any relayed-call postprocessing they may wish to do." + }, + "id": 241, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 232, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 241, + "src": "6559:20:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 231, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6559:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 234, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 241, + "src": "6581:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 233, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6581:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 236, + "mutability": "mutable", + "name": "actualCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 241, + "src": "6595:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 238, + "mutability": "mutable", + "name": "preRetVal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 241, + "src": "6617:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 237, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6617:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6558:77:1" + }, + "returnParameters": { + "id": 240, + "nodeType": "ParameterList", + "parameters": [], + "src": "6652:0:1" + }, + "scope": 375, + "src": "6533:120:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 253, + "nodeType": "Block", + "src": "6911:47:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "", + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6948:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 249, + "name": "_approveRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 254, + 269 + ], + "referencedDeclaration": 269, + "src": "6928:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (uint256,bytes memory)" + } + }, + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6928:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 248, + "id": 252, + "nodeType": "Return", + "src": "6921:30:1" + } + ] + }, + "documentation": { + "id": 242, + "nodeType": "StructuredDocumentation", + "src": "6659:170:1", + "text": " @dev Return this in acceptRelayedCall to proceed with the execution of a relayed call. Note that this contract\n will be charged a fee by RelayHub" + }, + "id": 254, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approveRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 243, + "nodeType": "ParameterList", + "parameters": [], + "src": "6862:2:1" + }, + "returnParameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 245, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 254, + "src": "6888:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6888:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 254, + "src": "6897:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 246, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6897:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6887:23:1" + }, + "scope": 375, + "src": "6834:124:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 268, + "nodeType": "Block", + "src": "7217:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 264, + "name": "_RELAYED_CALL_ACCEPTED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "7235:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 265, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 257, + "src": "7259:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 266, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7234:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 263, + "id": 267, + "nodeType": "Return", + "src": "7227:40:1" + } + ] + }, + "documentation": { + "id": 255, + "nodeType": "StructuredDocumentation", + "src": "6964:151:1", + "text": " @dev See `GSNRecipient._approveRelayedCall`.\n This overload forwards `context` to _preRelayedCall and _postRelayedCall." + }, + "id": 269, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approveRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 269, + "src": "7149:20:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 256, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7149:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7148:22:1" + }, + "returnParameters": { + "id": 263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 260, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 269, + "src": "7194:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7194:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 262, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 269, + "src": "7203:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 261, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7203:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7193:23:1" + }, + "scope": 375, + "src": "7120:154:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 285, + "nodeType": "Block", + "src": "7498:64:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 279, + "name": "_RELAYED_CALL_REJECTED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "7516:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 280, + "name": "errorCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "7541:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7516:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7552:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "id": 283, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7515:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$", + "typeString": "tuple(uint256,literal_string \"\")" + } + }, + "functionReturnParameters": 278, + "id": 284, + "nodeType": "Return", + "src": "7508:47:1" + } + ] + }, + "documentation": { + "id": 270, + "nodeType": "StructuredDocumentation", + "src": "7280:120:1", + "text": " @dev Return this in acceptRelayedCall to impede execution of a relayed call. No fees will be charged." + }, + "id": 286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_rejectRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 272, + "mutability": "mutable", + "name": "errorCode", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "7433:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7433:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7432:19:1" + }, + "returnParameters": { + "id": 278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 275, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "7475:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7475:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 277, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "7484:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 276, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7484:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7474:23:1" + }, + "scope": 375, + "src": "7405:157:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 309, + "nodeType": "Block", + "src": "7827:233:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 297, + "name": "gas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 288, + "src": "8011:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 298, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 290, + "src": "8017:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8011:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8029:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 301, + "name": "serviceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 292, + "src": "8035:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8029:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 303, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8028:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8011:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 305, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8010:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8050:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "8010:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 296, + "id": 308, + "nodeType": "Return", + "src": "8003:50:1" + } + ] + }, + "documentation": null, + "id": 310, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_computeCharge", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 288, + "mutability": "mutable", + "name": "gas", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 310, + "src": "7744:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7744:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 290, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 310, + "src": "7757:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7757:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 292, + "mutability": "mutable", + "name": "serviceFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 310, + "src": "7775:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7775:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7743:51:1" + }, + "returnParameters": { + "id": 296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 295, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 310, + "src": "7818:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7818:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7817:9:1" + }, + "scope": 375, + "src": "7720:340:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 329, + "nodeType": "Block", + "src": "8145:1171:1", + "statements": [ + { + "assignments": [ + 316 + ], + "declarations": [ + { + "constant": false, + "id": 316, + "mutability": "mutable", + "name": "array", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 329, + "src": "8928:18:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 315, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8928:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 319, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 317, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8949:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8949:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8928:29:1" + }, + { + "assignments": [ + 321 + ], + "declarations": [ + { + "constant": false, + "id": 321, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 329, + "src": "8967:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8967:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 325, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 322, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "8983:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8983:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8983:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8967:31:1" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "9074:213:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9194:83:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "9218:5:1" + }, + { + "name": "index", + "nodeType": "YulIdentifier", + "src": "9225:5:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9214:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9214:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9208:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9208:24:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9234:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "9204:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9204:73:1" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "9194:6:1" + } + ] + } + ] + }, + "evmVersion": "petersburg", + "externalReferences": [ + { + "declaration": 316, + "isOffset": false, + "isSlot": false, + "src": "9218:5:1", + "valueSize": 1 + }, + { + "declaration": 321, + "isOffset": false, + "isSlot": false, + "src": "9225:5:1", + "valueSize": 1 + }, + { + "declaration": 313, + "isOffset": false, + "isSlot": false, + "src": "9194:6:1", + "valueSize": 1 + } + ], + "id": 326, + "nodeType": "InlineAssembly", + "src": "9065:222:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 327, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "9303:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 314, + "id": 328, + "nodeType": "Return", + "src": "9296:13:1" + } + ] + }, + "documentation": null, + "id": 330, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getRelayedCallSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 311, + "nodeType": "ParameterList", + "parameters": [], + "src": "8096:2:1" + }, + "returnParameters": { + "id": 314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 313, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 330, + "src": "8121:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8121:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8120:24:1" + }, + "scope": 375, + "src": "8066:1250:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 373, + "nodeType": "Block", + "src": "9389:465:1", + "statements": [ + { + "assignments": [ + 336 + ], + "declarations": [ + { + "constant": false, + "id": 336, + "mutability": "mutable", + "name": "actualDataLength", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 373, + "src": "9600:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9600:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 342, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 337, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9627:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9627:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9627:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9645:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "9627:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9600:47:1" + }, + { + "assignments": [ + 344 + ], + "declarations": [ + { + "constant": false, + "id": 344, + "mutability": "mutable", + "name": "actualData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 373, + "src": "9657:23:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 343, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9657:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 349, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 347, + "name": "actualDataLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 336, + "src": "9693:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "9683:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 345, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9687:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9683:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9657:53:1" + }, + { + "body": { + "id": 369, + "nodeType": "Block", + "src": "9768:52:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 360, + "name": "actualData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "9782:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 362, + "indexExpression": { + "argumentTypes": null, + "id": 361, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "9793:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9782:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 363, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "9798:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9798:8:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 366, + "indexExpression": { + "argumentTypes": null, + "id": 365, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "9807:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9798:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "9782:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 368, + "nodeType": "ExpressionStatement", + "src": "9782:27:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 354, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "9741:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 355, + "name": "actualDataLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 336, + "src": "9745:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9741:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 370, + "initializationExpression": { + "assignments": [ + 351 + ], + "declarations": [ + { + "constant": false, + "id": 351, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 370, + "src": "9726:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9726:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 353, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9738:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9726:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "9763:3:1", + "subExpression": { + "argumentTypes": null, + "id": 357, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "9765:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 359, + "nodeType": "ExpressionStatement", + "src": "9763:3:1" + }, + "nodeType": "ForStatement", + "src": "9721:99:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 371, + "name": "actualData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "9837:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 334, + "id": 372, + "nodeType": "Return", + "src": "9830:17:1" + } + ] + }, + "documentation": null, + "id": 374, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getRelayedCallData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 331, + "nodeType": "ParameterList", + "parameters": [], + "src": "9350:2:1" + }, + "returnParameters": { + "id": 334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 333, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 374, + "src": "9375:12:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 332, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9375:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9374:14:1" + }, + "scope": 375, + "src": "9322:532:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 376, + "src": "702:9154:1" + } + ], + "src": "33:9824:1" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20Fee.json b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20Fee.json new file mode 100644 index 0000000..c60f0d9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20Fee.json @@ -0,0 +1,4679 @@ +{ + "fileName": "GSNRecipientERC20Fee.sol", + "contractName": "GSNRecipientERC20Fee", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./GSNRecipient.sol\";\nimport \"../math/SafeMath.sol\";\nimport \"../access/Ownable.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../token/ERC20/ERC20.sol\";\n\n/**\n * @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20\n * token, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the\n * recipient. This means that the token is essentially pegged to the value of Ether.\n *\n * The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token\n * whose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the\n * internal {_mint} function.\n */\ncontract GSNRecipientERC20Fee is GSNRecipient {\n using SafeERC20 for __unstable__ERC20Owned;\n using SafeMath for uint256;\n\n enum GSNRecipientERC20FeeErrorCodes {\n INSUFFICIENT_BALANCE\n }\n\n __unstable__ERC20Owned private _token;\n\n /**\n * @dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18.\n */\n constructor(string memory name, string memory symbol) public {\n _token = new __unstable__ERC20Owned(name, symbol);\n }\n\n /**\n * @dev Returns the gas payment token.\n */\n function token() public view returns (IERC20) {\n return IERC20(_token);\n }\n\n /**\n * @dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _token.mint(account, amount);\n }\n\n /**\n * @dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN.\n */\n function acceptRelayedCall(\n address,\n address from,\n bytes memory,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256,\n uint256,\n bytes memory,\n uint256 maxPossibleCharge\n )\n public\n view\n virtual\n override\n returns (uint256, bytes memory)\n {\n if (_token.balanceOf(from) < maxPossibleCharge) {\n return _rejectRelayedCall(uint256(GSNRecipientERC20FeeErrorCodes.INSUFFICIENT_BALANCE));\n }\n\n return _approveRelayedCall(abi.encode(from, maxPossibleCharge, transactionFee, gasPrice));\n }\n\n /**\n * @dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and\n * fee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the\n * actual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder\n * is returned to the user in {_postRelayedCall}.\n */\n function _preRelayedCall(bytes memory context) internal virtual override returns (bytes32) {\n (address from, uint256 maxPossibleCharge) = abi.decode(context, (address, uint256));\n\n // The maximum token charge is pre-charged from the user\n _token.safeTransferFrom(from, address(this), maxPossibleCharge);\n }\n\n /**\n * @dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known.\n */\n function _postRelayedCall(bytes memory context, bool, uint256 actualCharge, bytes32) internal virtual override {\n (address from, uint256 maxPossibleCharge, uint256 transactionFee, uint256 gasPrice) =\n abi.decode(context, (address, uint256, uint256, uint256));\n\n // actualCharge is an _estimated_ charge, which assumes postRelayedCall will use all available gas.\n // This implementation's gas cost can be roughly estimated as 10k gas, for the two SSTORE operations in an\n // ERC20 transfer.\n uint256 overestimation = _computeCharge(_POST_RELAYED_CALL_MAX_GAS.sub(10000), gasPrice, transactionFee);\n actualCharge = actualCharge.sub(overestimation);\n\n // After the relayed call has been executed and the actual charge estimated, the excess pre-charge is returned\n _token.safeTransfer(from, maxPossibleCharge.sub(actualCharge));\n }\n}\n\n/**\n * @title __unstable__ERC20Owned\n * @dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive\n * anyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used\n * outside of this context.\n */\n// solhint-disable-next-line contract-name-camelcase\ncontract __unstable__ERC20Owned is ERC20, Ownable {\n uint256 private constant _UINT256_MAX = 2**256 - 1;\n\n constructor(string memory name, string memory symbol) public ERC20(name, symbol) { }\n\n // The owner (GSNRecipientERC20Fee) can mint tokens\n function mint(address account, uint256 amount) public onlyOwner {\n _mint(account, amount);\n }\n\n // The owner has 'infinite' allowance for all token holders\n function allowance(address tokenOwner, address spender) public view override returns (uint256) {\n if (spender == owner()) {\n return _UINT256_MAX;\n } else {\n return super.allowance(tokenOwner, spender);\n }\n }\n\n // Allowance for the owner cannot be changed (it is always 'infinite')\n function _approve(address tokenOwner, address spender, uint256 value) internal override {\n if (spender == owner()) {\n return;\n } else {\n super._approve(tokenOwner, spender, value);\n }\n }\n\n function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\n if (recipient == owner()) {\n _transfer(sender, recipient, amount);\n return true;\n } else {\n return super.transferFrom(sender, recipient, amount);\n }\n }\n}\n", + "sourcePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "sourceMap": "830:3567:2:-:0;;;885:42:1;857:70;;;;;;;;;;;;;;;;;;;;1253:127:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1360:4;1366:6;1333:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1324:6;;:49;;;;;;;;;;;;;;;;;;1253:127;;830:3567;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "830:3567:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:94:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5087:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1974:624:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2699:227:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5945:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1445:84:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1451:94:1;1503:7;1529:9;;;;;;;;;;;1522:16;;1451:94;:::o;5087:221::-;5166:7;5207:12;:10;:12::i;:::-;5193:26;;:10;:26;;;5185:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:24;5293:7;5277:15;:24::i;:::-;5270:31;;5087:221;;;:::o;1974:624:2:-;2295:7;2304:12;2361:17;2336:6;;;;;;;;;;;:16;;;2353:4;2336:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:42;2332:160;;;2401:80;2428:51;2420:60;;;;;;;;2401:18;:80::i;:::-;2394:87;;;;;;2332:160;2509:82;2540:4;2546:17;2565:14;2581:8;2529:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2509:19;:82::i;:::-;2502:89;;;;1974:624;;;;;;;;;;;;;:::o;2699:227:1:-;2747:13;2905:14;;;;;;;;;;;;;;;;;;;2699:227;:::o;5945:287::-;6103:12;:10;:12::i;:::-;6089:26;;:10;:26;;;6081:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6166:59;6183:7;6192;6201:12;6215:9;6166:16;:59::i;:::-;5945:287;;;;:::o;1445:84:2:-;1483:6;1515;;;;;;;;;;;1501:21;;1445:84;:::o;3027:330::-;3109:7;3129:12;3143:25;3183:7;3172:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:83;;;;3287:63;3311:4;3325;3332:17;3287:6;;;;;;;;;;;:23;;;;:63;;;;;;:::i;:::-;3027:330;;;;;:::o;7405:157:1:-;7475:7;7484:12;7541:9;1041:2;7516:34;7508:47;;;;;;;;;;;;;;;;7405:157;;;:::o;7120:154::-;7194:7;7203:12;984:1;7259:7;7227:40;;;;7120:154;;;:::o;3498:897:2:-;3620:12;3634:25;3661:22;3685:16;3728:7;3717:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3619:155;;;;;;;;4035:22;4060:79;4075:37;4106:5;1157:6:1;4075:30:2;;:37;;;;:::i;:::-;4114:8;4124:14;4060;:79::i;:::-;4035:104;;4164:32;4181:14;4164:12;:16;;:32;;;;:::i;:::-;4149:47;;4326:62;4346:4;4352:35;4374:12;4352:17;:21;;:35;;;;:::i;:::-;4326:6;;;;;;;;;;;:19;;;;:62;;;;;:::i;:::-;3498:897;;;;;;;;;:::o;877:203:90:-;977:96;997:5;1027:27;;;1056:4;1062:2;1066:5;1004:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:19;:96::i;:::-;877:203;;;;:::o;1321:134:17:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;7720:340:1:-;7818:7;8050:3;8035:10;8029:3;:16;8017:8;8011:3;:14;:35;8010:43;;;;;;8003:50;;7720:340;;;;;:::o;696:175:90:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:19;:86::i;:::-;696:175;;;:::o;2959:751::-;3378:23;3404:69;3432:4;3404:69;;;;;;;;;;;;;;;;;3412:5;3404:27;;;;:69;;;;;:::i;:::-;3378:95;;3507:1;3487:10;:17;:21;3483:221;;;3627:10;3616:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3608:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:221;2959:751;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;3770:194:104:-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;5117:958::-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:958;;;;;;;:::o;718:610::-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "maxPossibleCharge", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "exportedSymbols": { + "GSNRecipientERC20Fee": [ + 593 + ], + "__unstable__ERC20Owned": [ + 721 + ] + }, + "id": 722, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 377, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:2" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "./GSNRecipient.sol", + "id": 378, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 376, + "src": "58:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 379, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 2422, + "src": "87:30:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Ownable.sol", + "file": "../access/Ownable.sol", + "id": 380, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 1577, + "src": "118:31:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 381, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 9987, + "src": "150:38:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 382, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 9195, + "src": "189:34:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 384, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 375, + "src": "863:12:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$375", + "typeString": "contract GSNRecipient" + } + }, + "id": 385, + "nodeType": "InheritanceSpecifier", + "src": "863:12:2" + } + ], + "contractDependencies": [ + 22, + 375, + 721, + 1184 + ], + "contractKind": "contract", + "documentation": { + "id": 383, + "nodeType": "StructuredDocumentation", + "src": "225:604:2", + "text": " @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20\n token, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the\n recipient. This means that the token is essentially pegged to the value of Ether.\n The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token\n whose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the\n internal {_mint} function." + }, + "fullyImplemented": true, + "id": 593, + "linearizedBaseContracts": [ + 593, + 375, + 22, + 1184 + ], + "name": "GSNRecipientERC20Fee", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 388, + "libraryName": { + "contractScope": null, + "id": 386, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9986, + "src": "888:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "882:43:2", + "typeName": { + "contractScope": null, + "id": 387, + "name": "__unstable__ERC20Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 721, + "src": "902:22:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + } + }, + { + "id": 391, + "libraryName": { + "contractScope": null, + "id": 389, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "936:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "930:27:2", + "typeName": { + "id": 390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes", + "id": 393, + "members": [ + { + "id": 392, + "name": "INSUFFICIENT_BALANCE", + "nodeType": "EnumValue", + "src": "1009:20:2" + } + ], + "name": "GSNRecipientERC20FeeErrorCodes", + "nodeType": "EnumDefinition", + "src": "963:72:2" + }, + { + "constant": false, + "id": 395, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 593, + "src": "1041:37:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + }, + "typeName": { + "contractScope": null, + "id": 394, + "name": "__unstable__ERC20Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 721, + "src": "1041:22:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 411, + "nodeType": "Block", + "src": "1314:66:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 403, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "1324:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 406, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 398, + "src": "1360:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 407, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "1366:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1333:26:2", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$___unstable__ERC20Owned_$721_$", + "typeString": "function (string memory,string memory) returns (contract __unstable__ERC20Owned)" + }, + "typeName": { + "contractScope": null, + "id": 404, + "name": "__unstable__ERC20Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 721, + "src": "1337:22:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + } + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1333:40:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "src": "1324:49:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 410, + "nodeType": "ExpressionStatement", + "src": "1324:49:2" + } + ] + }, + "documentation": { + "id": 396, + "nodeType": "StructuredDocumentation", + "src": "1085:163:2", + "text": " @dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18." + }, + "id": 412, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 398, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 412, + "src": "1265:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 397, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1265:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 400, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 412, + "src": "1285:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 399, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1285:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1264:42:2" + }, + "returnParameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [], + "src": "1314:0:2" + }, + "scope": 593, + "src": "1253:127:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 422, + "nodeType": "Block", + "src": "1491:38:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 419, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "1515:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + ], + "id": 418, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9773, + "src": "1508:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$9773_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1508:14:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 417, + "id": 421, + "nodeType": "Return", + "src": "1501:21:2" + } + ] + }, + "documentation": { + "id": 413, + "nodeType": "StructuredDocumentation", + "src": "1386:54:2", + "text": " @dev Returns the gas payment token." + }, + "functionSelector": "fc0c546a", + "id": 423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [], + "src": "1459:2:2" + }, + "returnParameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 423, + "src": "1483:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 415, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1483:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1482:8:2" + }, + "scope": 593, + "src": "1445:84:2", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 438, + "nodeType": "Block", + "src": "1786:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 434, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "1808:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 435, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "1817:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 431, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "1796:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 632, + "src": "1796:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1796:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 437, + "nodeType": "ExpressionStatement", + "src": "1796:28:2" + } + ] + }, + "documentation": { + "id": 424, + "nodeType": "StructuredDocumentation", + "src": "1535:181:2", + "text": " @dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms." + }, + "id": 439, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 426, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 439, + "src": "1736:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1736:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 428, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 439, + "src": "1753:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1753:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1735:33:2" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [], + "src": "1786:0:2" + }, + "scope": 593, + "src": "1721:110:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1163 + ], + "body": { + "id": 492, + "nodeType": "Block", + "src": "2322:276:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 468, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "2353:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 466, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "2336:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 8794, + "src": "2336:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2336:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 470, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "2361:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2336:42:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 481, + "nodeType": "IfStatement", + "src": "2332:160:2", + "trueBody": { + "id": 480, + "nodeType": "Block", + "src": "2380:112:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 475, + "name": "GSNRecipientERC20FeeErrorCodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 393, + "src": "2428:30:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_GSNRecipientERC20FeeErrorCodes_$393_$", + "typeString": "type(enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes)" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "INSUFFICIENT_BALANCE", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2428:51:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_GSNRecipientERC20FeeErrorCodes_$393", + "typeString": "enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_GSNRecipientERC20FeeErrorCodes_$393", + "typeString": "enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes" + } + ], + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2420:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2420:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2420:60:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 472, + "name": "_rejectRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "2401:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256,bytes memory)" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2401:80:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 465, + "id": 479, + "nodeType": "Return", + "src": "2394:87:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 485, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "2540:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 486, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "2546:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 487, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "2565:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 488, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 450, + "src": "2581:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 483, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2529:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2529:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2529:61:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 482, + "name": "_approveRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 254, + 269 + ], + "referencedDeclaration": 269, + "src": "2509:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (uint256,bytes memory)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2509:82:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 465, + "id": 491, + "nodeType": "Return", + "src": "2502:89:2" + } + ] + }, + "documentation": { + "id": 440, + "nodeType": "StructuredDocumentation", + "src": "1837:132:2", + "text": " @dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN." + }, + "functionSelector": "83947ea0", + "id": 493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 460, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2269:8:2" + }, + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 442, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2010:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 441, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 444, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2027:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2027:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2049:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 445, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2049:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 448, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2071:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 447, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2071:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 450, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2103:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2103:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 452, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2129:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2129:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 454, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2146:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2146:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 456, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2163:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 455, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2163:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2185:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2185:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2000:216:2" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2295:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 461, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2295:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2304:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 463, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2304:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2294:23:2" + }, + "scope": 593, + "src": "1974:624:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 199 + ], + "body": { + "id": 527, + "nodeType": "Block", + "src": "3118:239:2", + "statements": [ + { + "assignments": [ + 503, + 505 + ], + "declarations": [ + { + "constant": false, + "id": 503, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 527, + "src": "3129:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 502, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3129:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 505, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 527, + "src": "3143:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3143:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 515, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 508, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "3183:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3193:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3193:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3202:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3202:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 513, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3192:18:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256))" + } + ], + "expression": { + "argumentTypes": null, + "id": 506, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3172:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3172:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3172:39:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$", + "typeString": "tuple(address payable,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3128:83:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 519, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "3311:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 522, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3325:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$593", + "typeString": "contract GSNRecipientERC20Fee" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$593", + "typeString": "contract GSNRecipientERC20Fee" + } + ], + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3317:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 520, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3317:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3317:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "3332:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 516, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "3287:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 9832, + "src": "3287:23:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$9773_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3287:63:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 526, + "nodeType": "ExpressionStatement", + "src": "3287:63:2" + } + ] + }, + "documentation": { + "id": 494, + "nodeType": "StructuredDocumentation", + "src": "2604:418:2", + "text": " @dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and\n fee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the\n actual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder\n is returned to the user in {_postRelayedCall}." + }, + "id": 528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 498, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3091:8:2" + }, + "parameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 528, + "src": "3052:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 495, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3052:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3051:22:2" + }, + "returnParameters": { + "id": 501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 500, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 528, + "src": "3109:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 499, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3109:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3108:9:2" + }, + "scope": 593, + "src": "3027:330:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 241 + ], + "body": { + "id": 591, + "nodeType": "Block", + "src": "3609:786:2", + "statements": [ + { + "assignments": [ + 542, + 544, + 546, + 548 + ], + "declarations": [ + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3620:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3620:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3634:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3634:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3661:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3661:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3685:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3685:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 562, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 551, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 531, + "src": "3728:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3738:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3738:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3747:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3747:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3756:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3756:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3765:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3765:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 560, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3737:36:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256))" + } + ], + "expression": { + "argumentTypes": null, + "id": 549, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3717:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3717:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3717:57:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(address payable,uint256,uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3619:155:2" + }, + { + "assignments": [ + 564 + ], + "declarations": [ + { + "constant": false, + "id": 564, + "mutability": "mutable", + "name": "overestimation", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "4035:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4035:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 573, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4106:5:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + ], + "expression": { + "argumentTypes": null, + "id": 566, + "name": "_POST_RELAYED_CALL_MAX_GAS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "4075:26:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4075:30:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4075:37:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 570, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "4114:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 571, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "4124:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 565, + "name": "_computeCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "4060:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4060:79:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4035:104:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 574, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4149:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "overestimation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "4181:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 575, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4164:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4164:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4164:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4149:47:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "4149:47:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 584, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 542, + "src": "4346:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 587, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4374:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 585, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 544, + "src": "4352:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4352:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4352:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 581, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "4326:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9807, + "src": "4326:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$9773_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4326:62:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "4326:62:2" + } + ] + }, + "documentation": { + "id": 529, + "nodeType": "StructuredDocumentation", + "src": "3363:130:2", + "text": " @dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known." + }, + "id": 592, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 539, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3600:8:2" + }, + "parameters": { + "id": 538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3524:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 530, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3524:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3546:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 532, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3546:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 535, + "mutability": "mutable", + "name": "actualCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3552:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3552:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 537, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3574:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3574:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3523:59:2" + }, + "returnParameters": { + "id": 540, + "nodeType": "ParameterList", + "parameters": [], + "src": "3609:0:2" + }, + "scope": 593, + "src": "3498:897:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 722, + "src": "830:3567:2" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 595, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "4777:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + "id": 596, + "nodeType": "InheritanceSpecifier", + "src": "4777:5:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 597, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1576, + "src": "4784:7:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$1576", + "typeString": "contract Ownable" + } + }, + "id": 598, + "nodeType": "InheritanceSpecifier", + "src": "4784:7:2" + } + ], + "contractDependencies": [ + 22, + 1576, + 9194, + 9773 + ], + "contractKind": "contract", + "documentation": { + "id": 594, + "nodeType": "StructuredDocumentation", + "src": "4399:289:2", + "text": " @title __unstable__ERC20Owned\n @dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive\n anyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used\n outside of this context." + }, + "fullyImplemented": true, + "id": 721, + "linearizedBaseContracts": [ + 721, + 1576, + 9194, + 9773, + 22 + ], + "name": "__unstable__ERC20Owned", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 605, + "mutability": "constant", + "name": "_UINT256_MAX", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 721, + "src": "4798:50:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4798:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9936" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4838:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323536", + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4841:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "4838:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9936" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4847:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4838:10:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 616, + "nodeType": "Block", + "src": "4936:3:2", + "statements": [] + }, + "documentation": null, + "id": 617, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 612, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "4922:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 613, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "4928:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 614, + "modifierName": { + "argumentTypes": null, + "id": 611, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9194, + "src": "4916:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$9194_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4916:19:2" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 607, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 617, + "src": "4867:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 606, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4867:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 609, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 617, + "src": "4887:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 608, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4887:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4866:42:2" + }, + "returnParameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [], + "src": "4936:0:2" + }, + "scope": 721, + "src": "4855:84:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 631, + "nodeType": "Block", + "src": "5065:39:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 627, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 619, + "src": "5081:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 628, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "5090:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 626, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9070, + "src": "5075:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5075:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "5075:22:2" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 632, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 624, + "modifierName": { + "argumentTypes": null, + "id": 623, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "5055:9:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5055:9:2" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 632, + "src": "5015:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5015:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 621, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 632, + "src": "5032:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5032:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5014:33:2" + }, + "returnParameters": { + "id": 625, + "nodeType": "ParameterList", + "parameters": [], + "src": "5065:0:2" + }, + "scope": 721, + "src": "5001:103:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8833 + ], + "body": { + "id": 657, + "nodeType": "Block", + "src": "5269:158:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 642, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "5283:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 643, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "5294:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5294:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5283:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 655, + "nodeType": "Block", + "src": "5353:68:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 651, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "5390:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 652, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "5402:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 649, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5374:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20Owned_$721", + "typeString": "contract super __unstable__ERC20Owned" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8833, + "src": "5374:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5374:36:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 641, + "id": 654, + "nodeType": "Return", + "src": "5367:43:2" + } + ] + }, + "id": 656, + "nodeType": "IfStatement", + "src": "5279:142:2", + "trueBody": { + "id": 648, + "nodeType": "Block", + "src": "5303:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 646, + "name": "_UINT256_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "5324:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 641, + "id": 647, + "nodeType": "Return", + "src": "5317:19:2" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 658, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 638, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5242:8:2" + }, + "parameters": { + "id": 637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 634, + "mutability": "mutable", + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 658, + "src": "5193:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5193:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 636, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 658, + "src": "5213:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 635, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5213:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5192:37:2" + }, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 658, + "src": "5260:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5260:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5259:9:2" + }, + "scope": 721, + "src": "5174:253:2", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9171 + ], + "body": { + "id": 684, + "nodeType": "Block", + "src": "5596:144:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 668, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "5610:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 669, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "5621:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5621:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5610:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 682, + "nodeType": "Block", + "src": "5667:67:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 677, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "5696:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 678, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "5708:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 679, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 664, + "src": "5717:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 674, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5681:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20Owned_$721", + "typeString": "contract super __unstable__ERC20Owned" + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 9171, + "src": "5681:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5681:42:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "5681:42:2" + } + ] + }, + "id": 683, + "nodeType": "IfStatement", + "src": "5606:128:2", + "trueBody": { + "id": 673, + "nodeType": "Block", + "src": "5630:31:2", + "statements": [ + { + "expression": null, + "functionReturnParameters": 667, + "id": 672, + "nodeType": "Return", + "src": "5644:7:2" + } + ] + } + } + ] + }, + "documentation": null, + "id": 685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 666, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5587:8:2" + }, + "parameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 660, + "mutability": "mutable", + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 685, + "src": "5526:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 659, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5526:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 662, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 685, + "src": "5546:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5546:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 664, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 685, + "src": "5563:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 663, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5563:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5525:52:2" + }, + "returnParameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [], + "src": "5596:0:2" + }, + "scope": 721, + "src": "5508:232:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 8892 + ], + "body": { + "id": 719, + "nodeType": "Block", + "src": "5850:211:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 697, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "5864:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 698, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "5877:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5877:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5864:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 717, + "nodeType": "Block", + "src": "5978:77:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 712, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "6018:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 713, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "6026:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "6037:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 710, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5999:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20Owned_$721", + "typeString": "contract super __unstable__ERC20Owned" + } + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8892, + "src": "5999:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5999:45:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 696, + "id": 716, + "nodeType": "Return", + "src": "5992:52:2" + } + ] + }, + "id": 718, + "nodeType": "IfStatement", + "src": "5860:195:2", + "trueBody": { + "id": 709, + "nodeType": "Block", + "src": "5886:86:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 702, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "5910:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 703, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "5918:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 704, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "5929:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 701, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9015, + "src": "5900:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5900:36:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 706, + "nodeType": "ExpressionStatement", + "src": "5900:36:2" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5957:4:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 696, + "id": 708, + "nodeType": "Return", + "src": "5950:11:2" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 720, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 693, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5826:8:2" + }, + "parameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 687, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5768:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5768:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5784:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5784:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 691, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5803:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5803:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5767:51:2" + }, + "returnParameters": { + "id": 696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 695, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5844:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 694, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5844:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5843:6:2" + }, + "scope": 721, + "src": "5746:315:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 722, + "src": "4742:1321:2" + } + ], + "src": "33:6031:2" + }, + "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f4946000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006557600080fd5b50604051620031f8380380620031f8833981810160405260408110156200008b57600080fd5b8101908080516040519392919084640100000000821115620000ac57600080fd5b83820191506020820185811115620000c357600080fd5b8251866001820283011164010000000082111715620000e157600080fd5b8083526020830192505050908051906020019080838360005b8381101562000117578082015181840152602081019050620000fa565b50505050905090810190601f168015620001455780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200016957600080fd5b838201915060208201858111156200018057600080fd5b82518660018202830111640100000000821117156200019e57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001d4578082015181840152602081019050620001b7565b50505050905090810190601f168015620002025780820380516001836020036101000a031916815260200191505b506040525050508181604051620002199062000360565b808060200180602001838103835285818151815260200191508051906020019080838360005b838110156200025c5780820151818401526020810190506200023f565b50505050905090810190601f1680156200028a5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015620002c5578082015181840152602081019050620002a8565b50505050905090810190601f168015620002f35780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801562000317573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200036e565b611d63806200149583390190565b611117806200037e6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806374e861d61461006757806380274db7146100b157806383947ea014610180578063ad61ccd5146103c5578063e06e0e2214610448578063fc0c546a14610523575b600080fd5b61006f61056d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016a600480360360208110156100c757600080fd5b81019080803590602001906401000000008111156100e457600080fd5b8201836020820111156100f657600080fd5b8035906020019184600183028401116401000000008311171561011857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610596565b6040518082815260200191505060405180910390f35b610343600480360361012081101561019757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101f457600080fd5b82018360208201111561020657600080fd5b8035906020019184600183028401116401000000008311171561022857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460018302840111640100000000831117156102e757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610633565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561038957808201518184015260208101905061036e565b50505050905090810190601f1680156103b65780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103cd6107b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040d5780820151818401526020810190506103f2565b50505050905090810190601f16801561043a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105216004803603608081101561045e57600080fd5b810190808035906020019064010000000081111561047b57600080fd5b82018360208201111561048d57600080fd5b803590602001918460018302840111640100000000831117156104af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080351515906020019092919080359060200190929190803590602001909291905050506107f1565b005b61052b61088e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105a061056d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110946024913960400191505060405180910390fd5b61062c826108b8565b9050919050565b6000606082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106d757600080fd5b505afa1580156106eb573d6000803e3d6000fd5b505050506040513d602081101561070157600080fd5b810190808051906020019092919050505010156107355761072c60008081111561072757fe5b610947565b915091506107a6565b6107a18a848a8a604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050604051602081830303815290604052610968565b915091505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b6107f961056d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110946024913960400191505060405180910390fd5b61088884848484610978565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008380602001905160408110156108d257600080fd5b81019080805190602001909291908051906020019092919050505091509150610940823083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6f909392919063ffffffff16565b5050919050565b6000606082600b016040518060200160405280600081525091509150915091565b6000606060008391509150915091565b60008060008087806020019051608081101561099357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050935093509350935060006109ee6109e7612710620186a0610b5c90919063ffffffff16565b8385610ba6565b9050610a038188610b5c90919063ffffffff16565b9650610a6485610a1c8987610b5c90919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc39092919063ffffffff16565b505050505050505050565b610b56846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c7b565b50505050565b6000610b9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d6a565b905092915050565b60006064826064018486020281610bb957fe5b0490509392505050565b610c768363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c7b565b505050565b6060610cdd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e2a9092919063ffffffff16565b9050600081511115610d6557808060200190516020811015610cfe57600080fd5b8101908080519060200190929190505050610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806110b8602a913960400191505060405180910390fd5b5b505050565b6000838311158290610e17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ddc578082015181840152602081019050610dc1565b50505050905090810190601f168015610e095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060610e398484600085610e42565b90509392505050565b6060610e4d85611048565b610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310610f0f5780518252602082019150602081019050602083039250610eec565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f71576040519150601f19603f3d011682016040523d82523d6000602084013e610f76565b606091505b50915091508115610f8b578092505050611040565b600081511115610f9e5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611005578082015181840152602081019050610fea565b50505050905090810190601f1680156110325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561108a57506000801b8214155b9250505091905056fe47534e526563697069656e743a2063616c6c6572206973206e6f742052656c61794875625361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220e1273f7e02a5b5f1209d51c195627a2a66c8e8e02ef22281bebbb1bf64569d0964736f6c634300060a003360806040523480156200001157600080fd5b5060405162001d6338038062001d63833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001cf929190620002c8565b508060049080519060200190620001e8929190620002c8565b506012600560006101000a81548160ff021916908360ff1602179055505050600062000219620002c060201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505062000377565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030b57805160ff19168380011785556200033c565b828001600101855582156200033c579182015b828111156200033b5782518255916020019190600101906200031e565b5b5090506200034b91906200034f565b5090565b6200037491905b808211156200037057600081600090555060010162000356565b5090565b90565b6119dc80620003876000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d71461048e578063a9059cbb146104f4578063dd62ed3e1461055a578063f2fde38b146105d2576100f5565b806370a082311461035f578063715018a6146103b75780638da5cb5b146103c157806395d89b411461040b576100f5565b806323b872dd116100d357806323b872dd14610201578063313ce5671461028757806339509351146102ab57806340c10f1914610311576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b610102610616565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106b8565b604051808215151515815260200191505060405180910390f35b6101eb6106d6565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e0565b604051808215151515815260200191505060405180910390f35b61028f610746565b604051808260ff1660ff16815260200191505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b61035d6004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610810565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e8565b6040518082815260200191505060405180910390f35b6103bf610930565b005b6103c9610abb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610413610ae5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610453578082015181840152602081019050610438565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104da600480360360408110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b87565b604051808215151515815260200191505060405180910390f35b6105406004803603604081101561050a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c54565b604051808215151515815260200191505060405180910390f35b6105bc6004803603604081101561057057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b6040518082815260200191505060405180910390f35b610614600480360360208110156105e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cea565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106cc6106c5610efa565b8484610f02565b6001905092915050565b6000600254905090565b60006106ea610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561073157610728848484610f53565b6001905061073f565b61073c848484611214565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b600061080661076a610efa565b84610801856001600061077b610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b610f02565b6001905092915050565b610818610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108e48282611375565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610938610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b6000610c4a610b94610efa565b84610c45856040518060600160405280602581526020016119826025913960016000610bbe610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b6001905092915050565b6000610c68610c61610efa565b8484610f53565b6001905092915050565b6000610c7c610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610ce4565b610ce183836115fc565b90505b92915050565b610cf2610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118a36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610f0a610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4257610f4e565b610f4d838383611683565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119396025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806118806023913960400191505060405180910390fd5b61106a83838361187a565b6110d5816040518060600160405280602681526020016118eb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611168816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611221848484610f53565b6112e28461122d610efa565b6112dd8560405180606001604052806028815260200161191160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611293610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b600190509392505050565b60008082840190508381101561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6114246000838361187a565b611439816002546112ed90919063ffffffff16565b600281905550611490816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008383111582906115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115ae578082015181840152602081019050611593565b50505050905090810190601f1680156115db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061195e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118c96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209155b14b60d6899fd2d3449b3391db9f1827d6fc7c2e644ba621d72971ae8fca64736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806374e861d61461006757806380274db7146100b157806383947ea014610180578063ad61ccd5146103c5578063e06e0e2214610448578063fc0c546a14610523575b600080fd5b61006f61056d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016a600480360360208110156100c757600080fd5b81019080803590602001906401000000008111156100e457600080fd5b8201836020820111156100f657600080fd5b8035906020019184600183028401116401000000008311171561011857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610596565b6040518082815260200191505060405180910390f35b610343600480360361012081101561019757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101f457600080fd5b82018360208201111561020657600080fd5b8035906020019184600183028401116401000000008311171561022857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460018302840111640100000000831117156102e757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610633565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561038957808201518184015260208101905061036e565b50505050905090810190601f1680156103b65780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103cd6107b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040d5780820151818401526020810190506103f2565b50505050905090810190601f16801561043a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105216004803603608081101561045e57600080fd5b810190808035906020019064010000000081111561047b57600080fd5b82018360208201111561048d57600080fd5b803590602001918460018302840111640100000000831117156104af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080351515906020019092919080359060200190929190803590602001909291905050506107f1565b005b61052b61088e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105a061056d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110946024913960400191505060405180910390fd5b61062c826108b8565b9050919050565b6000606082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106d757600080fd5b505afa1580156106eb573d6000803e3d6000fd5b505050506040513d602081101561070157600080fd5b810190808051906020019092919050505010156107355761072c60008081111561072757fe5b610947565b915091506107a6565b6107a18a848a8a604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050604051602081830303815290604052610968565b915091505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b6107f961056d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110946024913960400191505060405180910390fd5b61088884848484610978565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008380602001905160408110156108d257600080fd5b81019080805190602001909291908051906020019092919050505091509150610940823083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6f909392919063ffffffff16565b5050919050565b6000606082600b016040518060200160405280600081525091509150915091565b6000606060008391509150915091565b60008060008087806020019051608081101561099357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050935093509350935060006109ee6109e7612710620186a0610b5c90919063ffffffff16565b8385610ba6565b9050610a038188610b5c90919063ffffffff16565b9650610a6485610a1c8987610b5c90919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc39092919063ffffffff16565b505050505050505050565b610b56846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c7b565b50505050565b6000610b9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d6a565b905092915050565b60006064826064018486020281610bb957fe5b0490509392505050565b610c768363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c7b565b505050565b6060610cdd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e2a9092919063ffffffff16565b9050600081511115610d6557808060200190516020811015610cfe57600080fd5b8101908080519060200190929190505050610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806110b8602a913960400191505060405180910390fd5b5b505050565b6000838311158290610e17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ddc578082015181840152602081019050610dc1565b50505050905090810190601f168015610e095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060610e398484600085610e42565b90509392505050565b6060610e4d85611048565b610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310610f0f5780518252602082019150602081019050602083039250610eec565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f71576040519150601f19603f3d011682016040523d82523d6000602084013e610f76565b606091505b50915091508115610f8b578092505050611040565b600081511115610f9e5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611005578082015181840152602081019050610fea565b50505050905090810190601f1680156110325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561108a57506000801b8214155b9250505091905056fe47534e526563697069656e743a2063616c6c6572206973206e6f742052656c61794875625361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220e1273f7e02a5b5f1209d51c195627a2a66c8e8e02ef22281bebbb1bf64569d0964736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20FeeMock.json b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20FeeMock.json new file mode 100644 index 0000000..ac7b2bd --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientERC20FeeMock.json @@ -0,0 +1,882 @@ +{ + "fileName": "GSNRecipientERC20FeeMock.sol", + "contractName": "GSNRecipientERC20FeeMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/GSNRecipient.sol\";\nimport \"../GSN/GSNRecipientERC20Fee.sol\";\n\ncontract GSNRecipientERC20FeeMock is GSNRecipient, GSNRecipientERC20Fee {\n constructor(string memory name, string memory symbol) public GSNRecipientERC20Fee(name, symbol) { }\n\n function mint(address account, uint256 amount) public {\n _mint(account, amount);\n }\n\n event MockFunctionCalled(uint256 senderBalance);\n\n function mockFunction() public {\n emit MockFunctionCalled(token().balanceOf(_msgSender()));\n }\n}\n", + "sourcePath": "contracts/mocks/GSNRecipientERC20FeeMock.sol", + "sourceMap": "135:442:49:-:0;;;885:42:1;857:70;;;;;;;;;;;;;;;;;;;;213:99:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;295:4;301:6;1360:4:2;1366:6;1333:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1324:6;;:49;;;;;;;;;;;;;;;;;;1253:127;;213:99:49;;135:442;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "135:442:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:104;;;:::i;:::-;;318:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1451:94:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5087:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1974:624:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2699:227:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5945:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1445:84:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;471:104:49;517:51;536:7;:5;:7::i;:::-;:17;;;554:12;:10;:12::i;:::-;536:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:51;;;;;;;;;;;;;;;;;;471:104::o;318:93::-;382:22;388:7;397:6;382:5;:22::i;:::-;318:93;;:::o;1451:94:1:-;1503:7;1529:9;;;;;;;;;;;1522:16;;1451:94;:::o;5087:221::-;5166:7;5207:12;:10;:12::i;:::-;5193:26;;:10;:26;;;5185:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:24;5293:7;5277:15;:24::i;:::-;5270:31;;5087:221;;;:::o;1974:624:2:-;2295:7;2304:12;2361:17;2336:6;;;;;;;;;;;:16;;;2353:4;2336:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:42;2332:160;;;2401:80;2428:51;2420:60;;;;;;;;2401:18;:80::i;:::-;2394:87;;;;;;2332:160;2509:82;2540:4;2546:17;2565:14;2581:8;2529:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2509:19;:82::i;:::-;2502:89;;;;1974:624;;;;;;;;;;;;;:::o;2699:227:1:-;2747:13;2905:14;;;;;;;;;;;;;;;;;;;2699:227;:::o;5945:287::-;6103:12;:10;:12::i;:::-;6089:26;;:10;:26;;;6081:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6166:59;6183:7;6192;6201:12;6215:9;6166:16;:59::i;:::-;5945:287;;;;:::o;1445:84:2:-;1483:6;1515;;;;;;;;;;;1501:21;;1445:84;:::o;3884:227:1:-;3946:15;3991:9;;;;;;;;;;;3977:23;;:10;:23;;;3973:132;;4023:10;4016:17;;;;3973:132;4071:23;:21;:23::i;:::-;4064:30;;3884:227;;:::o;1721:110:2:-;1796:6;;;;;;;;;;;:11;;;1808:7;1817:6;1796:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:110;;:::o;3027:330::-;3109:7;3129:12;3143:25;3183:7;3172:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:83;;;;3287:63;3311:4;3325;3332:17;3287:6;;;;;;;;;;;:23;;;;:63;;;;;;:::i;:::-;3027:330;;;;;:::o;7405:157:1:-;7475:7;7484:12;7541:9;1041:2;7516:34;7508:47;;;;;;;;;;;;;;;;7405:157;;;:::o;7120:154::-;7194:7;7203:12;984:1;7259:7;7227:40;;;;7120:154;;;:::o;3498:897:2:-;3620:12;3634:25;3661:22;3685:16;3728:7;3717:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3619:155;;;;;;;;4035:22;4060:79;4075:37;4106:5;1157:6:1;4075:30:2;;:37;;;;:::i;:::-;4114:8;4124:14;4060;:79::i;:::-;4035:104;;4164:32;4181:14;4164:12;:16;;:32;;;;:::i;:::-;4149:47;;4326:62;4346:4;4352:35;4374:12;4352:17;:21;;:35;;;;:::i;:::-;4326:6;;;;;;;;;;;:19;;;;:62;;;;;:::i;:::-;3498:897;;;;;;;;;:::o;8066:1250:1:-;8121:22;8928:18;8949:8;;8928:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8967:13;8983:8;;:15;;8967:31;;9234:42;9225:5;9218;9214:17;9208:24;9204:73;9194:83;;9303:6;9296:13;;;;8066:1250;:::o;876:203:77:-;976:96;996:5;1026:27;;;1055:4;1061:2;1065:5;1003:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;976:19;:96::i;:::-;876:203;;;;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o;7720:340:1:-;7818:7;8050:3;8035:10;8029:3;:16;8017:8;8011:3;:14;:35;8010:43;;;;;;8003:50;;7720:340;;;;;:::o;695:175:77:-;777:86;797:5;827:23;;;852:2;856:5;804:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;777:19;:86::i;:::-;695:175;;;:::o;2704:1096::-;3300:27;3308:5;3300:25;;;:27::i;:::-;3292:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:12;3448:23;3483:5;3475:19;;3495:4;3475:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3433:67;;;;3518:7;3510:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3597:1;3577:10;:17;:21;3573:221;;;3717:10;3706:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3698:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3573:221;2704:1096;;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "senderBalance", + "type": "uint256" + } + ], + "name": "MockFunctionCalled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "maxPossibleCharge", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mockFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/GSNRecipientERC20FeeMock.sol", + "exportedSymbols": { + "GSNRecipientERC20FeeMock": [ + 4841 + ] + }, + "id": 4842, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4792, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:49" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "../GSN/GSNRecipient.sol", + "id": 4793, + "nodeType": "ImportDirective", + "scope": 4842, + "sourceUnit": 380, + "src": "58:33:49", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "file": "../GSN/GSNRecipientERC20Fee.sol", + "id": 4794, + "nodeType": "ImportDirective", + "scope": 4842, + "sourceUnit": 726, + "src": "92:41:49", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4795, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "172:12:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + }, + "id": 4796, + "nodeType": "InheritanceSpecifier", + "src": "172:12:49" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4797, + "name": "GSNRecipientERC20Fee", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 597, + "src": "186:20:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$597", + "typeString": "contract GSNRecipientERC20Fee" + } + }, + "id": 4798, + "nodeType": "InheritanceSpecifier", + "src": "186:20:49" + } + ], + "contractDependencies": [ + 26, + 379, + 597, + 1188 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4841, + "linearizedBaseContracts": [ + 4841, + 597, + 379, + 26, + 1188 + ], + "name": "GSNRecipientERC20FeeMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4809, + "nodeType": "Block", + "src": "309:3:49", + "statements": [] + }, + "documentation": null, + "id": 4810, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4805, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4800, + "src": "295:4:49", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 4806, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4802, + "src": "301:6:49", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 4807, + "modifierName": { + "argumentTypes": null, + "id": 4804, + "name": "GSNRecipientERC20Fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "274:20:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipientERC20Fee_$597_$", + "typeString": "type(contract GSNRecipientERC20Fee)" + } + }, + "nodeType": "ModifierInvocation", + "src": "274:34:49" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4803, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4800, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4810, + "src": "225:18:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4799, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "225:6:49", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4802, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4810, + "src": "245:20:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4801, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "245:6:49", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "224:42:49" + }, + "returnParameters": { + "id": 4808, + "nodeType": "ParameterList", + "parameters": [], + "src": "309:0:49" + }, + "scope": 4841, + "src": "213:99:49", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4822, + "nodeType": "Block", + "src": "372:39:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4818, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4812, + "src": "388:7:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4819, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4814, + "src": "397:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4817, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "382:5:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "382:22:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4821, + "nodeType": "ExpressionStatement", + "src": "382:22:49" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 4823, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4812, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4823, + "src": "332:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "332:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4814, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4823, + "src": "349:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4813, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "349:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "331:33:49" + }, + "returnParameters": { + "id": 4816, + "nodeType": "ParameterList", + "parameters": [], + "src": "372:0:49" + }, + "scope": 4841, + "src": "318:93:49", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4827, + "name": "MockFunctionCalled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4825, + "indexed": false, + "mutability": "mutable", + "name": "senderBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4827, + "src": "442:21:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "441:23:49" + }, + "src": "417:48:49" + }, + { + "body": { + "id": 4839, + "nodeType": "Block", + "src": "502:73:49", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4834, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 151 + ], + "referencedDeclaration": 151, + "src": "554:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "554:12:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4831, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 427, + "src": "536:5:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$7969_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 4832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "536:7:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 4833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 7908, + "src": "536:17:49", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 4836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "536:31:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4830, + "name": "MockFunctionCalled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4827, + "src": "517:18:49", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "517:51:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4838, + "nodeType": "EmitStatement", + "src": "512:56:49" + } + ] + }, + "documentation": null, + "functionSelector": "3e6fec04", + "id": 4840, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mockFunction", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4828, + "nodeType": "ParameterList", + "parameters": [], + "src": "492:2:49" + }, + "returnParameters": { + "id": 4829, + "nodeType": "ParameterList", + "parameters": [], + "src": "502:0:49" + }, + "scope": 4841, + "src": "471:104:49", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4842, + "src": "135:442:49" + } + ], + "src": "33:545:49" + }, + "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f4946000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006557600080fd5b506040516200346d3803806200346d833981810160405260408110156200008b57600080fd5b8101908080516040519392919084640100000000821115620000ac57600080fd5b83820191506020820185811115620000c357600080fd5b8251866001820283011164010000000082111715620000e157600080fd5b8083526020830192505050908051906020019080838360005b8381101562000117578082015181840152602081019050620000fa565b50505050905090810190601f168015620001455780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200016957600080fd5b838201915060208201858111156200018057600080fd5b82518660018202830111640100000000821117156200019e57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001d4578082015181840152602081019050620001b7565b50505050905090810190601f168015620002025780820380516001836020036101000a031916815260200191505b50604052505050818181816040516200021b9062000364565b808060200180602001838103835285818151815260200191508051906020019080838360005b838110156200025e57808201518184015260208101905062000241565b50505050905090810190601f1680156200028c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015620002c7578082015181840152602081019050620002aa565b50505050905090810190601f168015620002f55780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f08015801562000319573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000372565b611d63806200170a83390190565b61138880620003826000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806383947ea01161005b57806383947ea0146101fe578063ad61ccd514610443578063e06e0e22146104c6578063fc0c546a146105a157610088565b80633e6fec041461008d57806340c10f191461009757806374e861d6146100e557806380274db71461012f575b600080fd5b6100956105eb565b005b6100e3600480360360408110156100ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e9565b005b6100ed6106f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e86004803603602081101561014557600080fd5b810190808035906020019064010000000081111561016257600080fd5b82018360208201111561017457600080fd5b8035906020019184600183028401116401000000008311171561019657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610720565b6040518082815260200191505060405180910390f35b6103c1600480360361012081101561021557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561027257600080fd5b82018360208201111561028457600080fd5b803590602001918460018302840111640100000000831117156102a657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561033157600080fd5b82018360208201111561034357600080fd5b8035906020019184600183028401116401000000008311171561036557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506107bd565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104075780820151818401526020810190506103ec565b50505050905090810190601f1680156104345780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61044b61093e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048b578082015181840152602081019050610470565b50505050905090810190601f1680156104b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059f600480360360808110156104dc57600080fd5b81019080803590602001906401000000008111156104f957600080fd5b82018360208201111561050b57600080fd5b8035906020019184600183028401116401000000008311171561052d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803515159060200190929190803590602001909291908035906020019092919050505061097b565b005b6105a9610a18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b7fde4813f7525e49908b98ef6c9c80c5bc8c7d0842981a49420eb45ef36a60e0c0610614610a18565b73ffffffffffffffffffffffffffffffffffffffff166370a08231610637610a42565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561069757600080fd5b505afa1580156106ab573d6000803e3d6000fd5b505050506040513d60208110156106c157600080fd5b81019080805190602001909291905050506040518082815260200191505060405180910390a1565b6106f38282610aae565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061072a6106f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6107b682610b73565b9050919050565b6000606082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d602081101561088b57600080fd5b810190808051906020019092919050505010156108bf576108b66000808111156108b157fe5b610c02565b91509150610930565b61092b8a848a8a604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050604051602081830303815290604052610c23565b915091505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b6109836106f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b610a1284848484610c33565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa057339050610aab565b610aa8610d2a565b90505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505050565b6000806000838060200190516040811015610b8d57600080fd5b81019080805190602001909291908051906020019092919050505091509150610bfb823083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610da2909392919063ffffffff16565b5050919050565b6000606082600b016040518060200160405280600081525091509150915091565b6000606060008391509150915091565b600080600080878060200190516080811015610c4e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093506000610ca9610ca2612710620186a0610e8f90919063ffffffff16565b8385610ed9565b9050610cbe8188610e8f90919063ffffffff16565b9650610d1f85610cd78987610e8f90919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef69092919063ffffffff16565b505050505050505050565b600060606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff81830151169250829250505090565b610e89846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fae565b50505050565b6000610ed183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111f9565b905092915050565b60006064826064018486020281610eec57fe5b0490509392505050565b610fa98363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fae565b505050565b610fcd8273ffffffffffffffffffffffffffffffffffffffff166112b9565b61103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061108e578051825260208201915060208101905060208303925061106b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146110f0576040519150601f19603f3d011682016040523d82523d6000602084013e6110f5565b606091505b50915091508161116d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156111f35780806020019051602081101561118c57600080fd5b81019080805190602001909291905050506111f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611329602a913960400191505060405180910390fd5b5b50505050565b60008383111582906112a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561126b578082015181840152602081019050611250565b50505050905090810190601f1680156112985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156112fb57506000801b8214155b9250505091905056fe47534e526563697069656e743a2063616c6c6572206973206e6f742052656c61794875625361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a712ab5cc10334068f655a756e1ced1dce1db4248b12aae9c0040f0e5becc52064736f6c6343000609003360806040523480156200001157600080fd5b5060405162001d6338038062001d63833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001cf929190620002c8565b508060049080519060200190620001e8929190620002c8565b506012600560006101000a81548160ff021916908360ff1602179055505050600062000219620002c060201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505062000377565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030b57805160ff19168380011785556200033c565b828001600101855582156200033c579182015b828111156200033b5782518255916020019190600101906200031e565b5b5090506200034b91906200034f565b5090565b6200037491905b808211156200037057600081600090555060010162000356565b5090565b90565b6119dc80620003876000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d71461048e578063a9059cbb146104f4578063dd62ed3e1461055a578063f2fde38b146105d2576100f5565b806370a082311461035f578063715018a6146103b75780638da5cb5b146103c157806395d89b411461040b576100f5565b806323b872dd116100d357806323b872dd14610201578063313ce5671461028757806339509351146102ab57806340c10f1914610311576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b610102610616565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106b8565b604051808215151515815260200191505060405180910390f35b6101eb6106d6565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e0565b604051808215151515815260200191505060405180910390f35b61028f610746565b604051808260ff1660ff16815260200191505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b61035d6004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610810565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e8565b6040518082815260200191505060405180910390f35b6103bf610930565b005b6103c9610abb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610413610ae5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610453578082015181840152602081019050610438565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104da600480360360408110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b87565b604051808215151515815260200191505060405180910390f35b6105406004803603604081101561050a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c54565b604051808215151515815260200191505060405180910390f35b6105bc6004803603604081101561057057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b6040518082815260200191505060405180910390f35b610614600480360360208110156105e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cea565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106cc6106c5610efa565b8484610f02565b6001905092915050565b6000600254905090565b60006106ea610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561073157610728848484610f53565b6001905061073f565b61073c848484611214565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b600061080661076a610efa565b84610801856001600061077b610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b610f02565b6001905092915050565b610818610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108e48282611375565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610938610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b6000610c4a610b94610efa565b84610c45856040518060600160405280602581526020016119826025913960016000610bbe610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b6001905092915050565b6000610c68610c61610efa565b8484610f53565b6001905092915050565b6000610c7c610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610ce4565b610ce183836115fc565b90505b92915050565b610cf2610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118a36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610f0a610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4257610f4e565b610f4d838383611683565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119396025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806118806023913960400191505060405180910390fd5b61106a83838361187a565b6110d5816040518060600160405280602681526020016118eb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611168816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611221848484610f53565b6112e28461122d610efa565b6112dd8560405180606001604052806028815260200161191160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611293610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b600190509392505050565b60008082840190508381101561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6114246000838361187a565b611439816002546112ed90919063ffffffff16565b600281905550611490816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008383111582906115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115ae578082015181840152602081019050611593565b50505050905090810190601f1680156115db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061195e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118c96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122079101f8631ea59f520cdd1345b6e58ec37981b29d999f6e91ebee5d0636620ad64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806383947ea01161005b57806383947ea0146101fe578063ad61ccd514610443578063e06e0e22146104c6578063fc0c546a146105a157610088565b80633e6fec041461008d57806340c10f191461009757806374e861d6146100e557806380274db71461012f575b600080fd5b6100956105eb565b005b6100e3600480360360408110156100ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e9565b005b6100ed6106f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e86004803603602081101561014557600080fd5b810190808035906020019064010000000081111561016257600080fd5b82018360208201111561017457600080fd5b8035906020019184600183028401116401000000008311171561019657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610720565b6040518082815260200191505060405180910390f35b6103c1600480360361012081101561021557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561027257600080fd5b82018360208201111561028457600080fd5b803590602001918460018302840111640100000000831117156102a657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561033157600080fd5b82018360208201111561034357600080fd5b8035906020019184600183028401116401000000008311171561036557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506107bd565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156104075780820151818401526020810190506103ec565b50505050905090810190601f1680156104345780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61044b61093e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048b578082015181840152602081019050610470565b50505050905090810190601f1680156104b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059f600480360360808110156104dc57600080fd5b81019080803590602001906401000000008111156104f957600080fd5b82018360208201111561050b57600080fd5b8035906020019184600183028401116401000000008311171561052d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803515159060200190929190803590602001909291908035906020019092919050505061097b565b005b6105a9610a18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b7fde4813f7525e49908b98ef6c9c80c5bc8c7d0842981a49420eb45ef36a60e0c0610614610a18565b73ffffffffffffffffffffffffffffffffffffffff166370a08231610637610a42565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561069757600080fd5b505afa1580156106ab573d6000803e3d6000fd5b505050506040513d60208110156106c157600080fd5b81019080805190602001909291905050506040518082815260200191505060405180910390a1565b6106f38282610aae565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061072a6106f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6107b682610b73565b9050919050565b6000606082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d602081101561088b57600080fd5b810190808051906020019092919050505010156108bf576108b66000808111156108b157fe5b610c02565b91509150610930565b61092b8a848a8a604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050604051602081830303815290604052610c23565b915091505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b6109836106f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b610a1284848484610c33565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa057339050610aab565b610aa8610d2a565b90505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505050565b6000806000838060200190516040811015610b8d57600080fd5b81019080805190602001909291908051906020019092919050505091509150610bfb823083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610da2909392919063ffffffff16565b5050919050565b6000606082600b016040518060200160405280600081525091509150915091565b6000606060008391509150915091565b600080600080878060200190516080811015610c4e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093506000610ca9610ca2612710620186a0610e8f90919063ffffffff16565b8385610ed9565b9050610cbe8188610e8f90919063ffffffff16565b9650610d1f85610cd78987610e8f90919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef69092919063ffffffff16565b505050505050505050565b600060606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff81830151169250829250505090565b610e89846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fae565b50505050565b6000610ed183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111f9565b905092915050565b60006064826064018486020281610eec57fe5b0490509392505050565b610fa98363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fae565b505050565b610fcd8273ffffffffffffffffffffffffffffffffffffffff166112b9565b61103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061108e578051825260208201915060208101905060208303925061106b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146110f0576040519150601f19603f3d011682016040523d82523d6000602084013e6110f5565b606091505b50915091508161116d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156111f35780806020019051602081101561118c57600080fd5b81019080805190602001909291905050506111f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611329602a913960400191505060405180910390fd5b5b50505050565b60008383111582906112a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561126b578082015181840152602081019050611250565b50505050905090810190601f1680156112985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156112fb57506000801b8214155b9250505091905056fe47534e526563697069656e743a2063616c6c6572206973206e6f742052656c61794875625361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a712ab5cc10334068f655a756e1ced1dce1db4248b12aae9c0040f0e5becc52064736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientMock.json b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientMock.json new file mode 100644 index 0000000..4458077 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientMock.json @@ -0,0 +1,1636 @@ +{ + "fileName": "GSNRecipientMock.sol", + "contractName": "GSNRecipientMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ContextMock.sol\";\nimport \"../GSN/GSNRecipient.sol\";\n\n// By inheriting from GSNRecipient, Context's internal functions are overridden automatically\ncontract GSNRecipientMock is ContextMock, GSNRecipient {\n function withdrawDeposits(uint256 amount, address payable payee) public {\n _withdrawDeposits(amount, payee);\n }\n\n function acceptRelayedCall(address, address, bytes calldata, uint256, uint256, uint256, uint256, bytes calldata, uint256)\n external\n view\n override\n returns (uint256, bytes memory)\n {\n return (0, \"\");\n }\n\n function _preRelayedCall(bytes memory) internal override returns (bytes32) { }\n\n function _postRelayedCall(bytes memory, bool, uint256, bytes32) internal override { }\n\n function upgradeRelayHub(address newRelayHub) public {\n return _upgradeRelayHub(newRelayHub);\n }\n\n function _msgSender() internal override(Context, GSNRecipient) view virtual returns (address payable) {\n return GSNRecipient._msgSender();\n }\n\n function _msgData() internal override(Context, GSNRecipient) view virtual returns (bytes memory) {\n return GSNRecipient._msgData();\n }\n}\n", + "sourcePath": "contracts/mocks/GSNRecipientMock.sol", + "sourceMap": "215:1028:50:-:0;;;885:42:1;857:70;;;;;;;;;;;;;;;;;;;;215:1028:50;;;;;;;;;;;;;;;;", + "deployedSourceMap": "215:1028:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;308:138:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1451:94:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5087:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;403:244:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;828:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2699:227:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;276:121:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;161:70:24;;;:::i;:::-;;5945:287:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;308:138:24;396:43;401:10;:8;:10::i;:::-;413:12;427:11;396:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;308:138;;:::o;1451:94:1:-;1503:7;1529:9;;;;;;;;;;;1522:16;;1451:94;:::o;5087:221::-;5166:7;5207:12;:10;:12::i;:::-;5193:26;;:10;:26;;;5185:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:24;5293:7;5277:15;:24::i;:::-;5270:31;;5087:221;;;:::o;403:244:50:-;589:7;598:12;634:1;626:14;;;;;;;;;;;;;;;;;;;403:244;;;;;;;;;;;;;;:::o;828:106::-;898:29;915:11;898:16;:29::i;:::-;828:106;:::o;2699:227:1:-;2747:13;2905:14;;;;;;;;;;;;;;;;;;;2699:227;:::o;276:121:50:-;358:32;376:6;384:5;358:17;:32::i;:::-;276:121;;:::o;161:70:24:-;204:20;211:12;:10;:12::i;:::-;204:20;;;;;;;;;;;;;;;;;;;;;;161:70::o;5945:287:1:-;6103:12;:10;:12::i;:::-;6089:26;;:10;:26;;;6081:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6166:59;6183:7;6192;6201:12;6215:9;6166:16;:59::i;:::-;5945:287;;;;:::o;1097:144:50:-;1180:12;1211:23;:21;:23::i;:::-;1204:30;;1097:144;:::o;653:78::-;719:7;653:78;;;:::o;1950:403:1:-;2024:23;2050:9;;;;;;;;;;;2024:35;;2100:1;2077:25;;:11;:25;;;;2069:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2186:15;2171:30;;:11;:30;;;;2163:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2300:11;2267:45;;2283:15;2267:45;;;;;;;;;;;;2335:11;2323:9;;:23;;;;;;;;;;;;;;;;;;1950:403;;:::o;3114:144::-;3217:9;;;;;;;;;;;3207:29;;;3237:6;3245:5;3207:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3114:144;;:::o;940:151:50:-;1025:15;1059:25;:23;:25::i;:::-;1052:32;;940:151;:::o;737:85::-;;;;;:::o;4473:218:1:-;4533:12;4575:9;;;;;;;;;;;4561:23;;:10;:23;;;4557:128;;4607:8;;4600:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4557:128;4653:21;:19;:21::i;:::-;4646:28;;4473:218;;:::o;3884:227::-;3946:15;3991:9;;;;;;;;;;;3977:23;;:10;:23;;;3973:132;;4023:10;4016:17;;;;3973:132;4071:23;:21;:23::i;:::-;4064:30;;3884:227;;:::o;9322:532::-;9375:12;9600:24;9645:2;9627:8;;:15;;:20;9600:47;;9657:23;9693:16;9683:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9657:53;;9726:9;9738:1;9726:13;;9721:99;9745:16;9741:1;:20;9721:99;;;9798:8;;9807:1;9798:11;;;;;;;;;;;;;;;9782:10;9793:1;9782:13;;;;;;;;;;;:27;;;;;;;;;;;9763:3;;;;;9721:99;;;;9837:10;9830:17;;;;9322:532;:::o;8066:1250::-;8121:22;8928:18;8949:8;;8928:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8967:13;8983:8;;:15;;8967:31;;9234:42;9225:5;9218;9214:17;9208:24;9204:73;9194:83;;9303:6;9296:13;;;;8066:1250;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "integerValue", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "stringValue", + "type": "string" + } + ], + "name": "Data", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "Sender", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "integerValue", + "type": "uint256" + }, + { + "internalType": "string", + "name": "stringValue", + "type": "string" + } + ], + "name": "msgData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "msgSender", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "upgradeRelayHub", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdrawDeposits", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/GSNRecipientMock.sol", + "exportedSymbols": { + "GSNRecipientMock": [ + 4952 + ] + }, + "id": 4953, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4843, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:50" + }, + { + "absolutePath": "contracts/mocks/ContextMock.sol", + "file": "./ContextMock.sol", + "id": 4844, + "nodeType": "ImportDirective", + "scope": 4953, + "sourceUnit": 3197, + "src": "58:27:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "../GSN/GSNRecipient.sol", + "id": 4845, + "nodeType": "ImportDirective", + "scope": 4953, + "sourceUnit": 380, + "src": "86:33:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4846, + "name": "ContextMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3167, + "src": "244:11:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ContextMock_$3167", + "typeString": "contract ContextMock" + } + }, + "id": 4847, + "nodeType": "InheritanceSpecifier", + "src": "244:11:50" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4848, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "257:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + }, + "id": 4849, + "nodeType": "InheritanceSpecifier", + "src": "257:12:50" + } + ], + "contractDependencies": [ + 26, + 379, + 1188, + 3167 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4952, + "linearizedBaseContracts": [ + 4952, + 379, + 3167, + 26, + 1188 + ], + "name": "GSNRecipientMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4861, + "nodeType": "Block", + "src": "348:49:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4857, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4851, + "src": "376:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4858, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4853, + "src": "384:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4856, + "name": "_withdrawDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "358:17:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_payable_$returns$__$", + "typeString": "function (uint256,address payable)" + } + }, + "id": 4859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "358:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4860, + "nodeType": "ExpressionStatement", + "src": "358:32:50" + } + ] + }, + "documentation": null, + "functionSelector": "c2db1abe", + "id": 4862, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawDeposits", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4851, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4862, + "src": "302:14:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "302:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4853, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4862, + "src": "318:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "318:15:50", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "301:39:50" + }, + "returnParameters": { + "id": 4855, + "nodeType": "ParameterList", + "parameters": [], + "src": "348:0:50" + }, + "scope": 4952, + "src": "276:121:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1167 + ], + "body": { + "id": 4892, + "nodeType": "Block", + "src": "616:31:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "634:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 4889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:2:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "id": 4890, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "633:7:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$", + "typeString": "tuple(int_const 0,literal_string \"\")" + } + }, + "functionReturnParameters": 4887, + "id": 4891, + "nodeType": "Return", + "src": "626:14:50" + } + ] + }, + "documentation": null, + "functionSelector": "83947ea0", + "id": 4893, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4882, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "563:8:50" + }, + "parameters": { + "id": 4881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4864, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "430:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "430:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4866, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "439:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "439:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4868, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "448:14:50", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4867, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "448:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4870, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "464:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "464:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4872, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "473:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4871, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "473:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4874, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "482:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "482:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4876, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "491:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "491:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4878, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "500:14:50", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4877, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "500:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4880, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "516:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "516:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:95:50" + }, + "returnParameters": { + "id": 4887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4884, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "589:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "589:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4886, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4893, + "src": "598:12:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "598:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "588:23:50" + }, + "scope": 4952, + "src": "403:244:50", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 203 + ], + "body": { + "id": 4901, + "nodeType": "Block", + "src": "728:3:50", + "statements": [] + }, + "documentation": null, + "id": 4902, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4897, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "701:8:50" + }, + "parameters": { + "id": 4896, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4895, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4902, + "src": "678:12:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4894, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "678:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "677:14:50" + }, + "returnParameters": { + "id": 4900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4899, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4902, + "src": "719:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4898, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "719:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "718:9:50" + }, + "scope": 4952, + "src": "653:78:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 245 + ], + "body": { + "id": 4914, + "nodeType": "Block", + "src": "819:3:50", + "statements": [] + }, + "documentation": null, + "id": 4915, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4912, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "810:8:50" + }, + "parameters": { + "id": 4911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4904, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4915, + "src": "763:12:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4903, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "763:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4906, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4915, + "src": "777:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4905, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "777:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4908, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4915, + "src": "783:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "783:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4910, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4915, + "src": "792:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4909, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "792:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "762:38:50" + }, + "returnParameters": { + "id": 4913, + "nodeType": "ParameterList", + "parameters": [], + "src": "819:0:50" + }, + "scope": 4952, + "src": "737:85:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4924, + "nodeType": "Block", + "src": "881:53:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4921, + "name": "newRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4917, + "src": "915:11:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4920, + "name": "_upgradeRelayHub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "898:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "898:29:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "functionReturnParameters": 4919, + "id": 4923, + "nodeType": "Return", + "src": "891:36:50" + } + ] + }, + "documentation": null, + "functionSelector": "9e30a590", + "id": 4925, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeRelayHub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4917, + "mutability": "mutable", + "name": "newRelayHub", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4925, + "src": "853:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "853:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "852:21:50" + }, + "returnParameters": { + "id": 4919, + "nodeType": "ParameterList", + "parameters": [], + "src": "881:0:50" + }, + "scope": 4952, + "src": "828:106:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 14, + 151 + ], + "body": { + "id": 4937, + "nodeType": "Block", + "src": "1042:49:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 4933, + "name": "GSNRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "1059:12:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipient_$379_$", + "typeString": "type(contract GSNRecipient)" + } + }, + "id": 4934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_msgSender", + "nodeType": "MemberAccess", + "referencedDeclaration": 151, + "src": "1059:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1059:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4932, + "id": 4936, + "nodeType": "Return", + "src": "1052:32:50" + } + ] + }, + "documentation": null, + "id": 4938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4929, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 4927, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "980:7:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + { + "contractScope": null, + "id": 4928, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "989:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + } + ], + "src": "971:31:50" + }, + "parameters": { + "id": 4926, + "nodeType": "ParameterList", + "parameters": [], + "src": "959:2:50" + }, + "returnParameters": { + "id": 4932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4931, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4938, + "src": "1025:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4930, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1025:15:50", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1024:17:50" + }, + "scope": 4952, + "src": "940:151:50", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 25, + 172 + ], + "body": { + "id": 4950, + "nodeType": "Block", + "src": "1194:47:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 4946, + "name": "GSNRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "1211:12:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipient_$379_$", + "typeString": "type(contract GSNRecipient)" + } + }, + "id": 4947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_msgData", + "nodeType": "MemberAccess", + "referencedDeclaration": 172, + "src": "1211:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () view returns (bytes memory)" + } + }, + "id": 4948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1211:23:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 4945, + "id": 4949, + "nodeType": "Return", + "src": "1204:30:50" + } + ] + }, + "documentation": null, + "id": 4951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4942, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "contractScope": null, + "id": 4940, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1135:7:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + { + "contractScope": null, + "id": 4941, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "1144:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + } + ], + "src": "1126:31:50" + }, + "parameters": { + "id": 4939, + "nodeType": "ParameterList", + "parameters": [], + "src": "1114:2:50" + }, + "returnParameters": { + "id": 4945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4944, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4951, + "src": "1180:12:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4943, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1180:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1179:14:50" + }, + "scope": 4952, + "src": "1097:144:50", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 4953, + "src": "215:1028:50" + } + ], + "src": "33:1211:50" + }, + "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f4946000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006457600080fd5b50610f78806100746000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80639e30a590116100665780639e30a59014610437578063ad61ccd51461047b578063c2db1abe146104fe578063d737d0c71461054c578063e06e0e221461055657610093565b8063376bf2621461009857806374e861d61461015d57806380274db7146101a757806383947ea014610276575b600080fd5b61015b600480360360408110156100ae57600080fd5b8101908080359060200190929190803590602001906401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610631565b005b61016561074d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610260600480360360208110156101bd57600080fd5b81019080803590602001906401000000008111156101da57600080fd5b8201836020820111156101ec57600080fd5b8035906020019184600183028401116401000000008311171561020e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610776565b6040518082815260200191505060405180910390f35b6103b5600480360361012081101561028d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102ea57600080fd5b8201836020820111156102fc57600080fd5b8035906020019184600183028401116401000000008311171561031e57600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561036757600080fd5b82018360208201111561037957600080fd5b8035906020019184600183028401116401000000008311171561039b57600080fd5b909192939192939080359060200190929190505050610813565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103fb5780820151818401526020810190506103e0565b50505050905090810190601f1680156104285780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610840565b005b61048361084c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104c35780820151818401526020810190506104a8565b50505050905090810190601f1680156104f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61054a6004803603604081101561051457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610889565b005b610554610897565b005b61062f6004803603608081101561056c57600080fd5b810190808035906020019064010000000081111561058957600080fd5b82018360208201111561059b57600080fd5b803590602001918460018302840111640100000000831117156105bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050610903565b005b7faf235354a0a47c91ee171961326335cb2d1a8e55b8a89859b0e61eb049e50ea061065a6109a0565b8383604051808060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156106a657808201518184015260208101905061068b565b50505050905090810190601f1680156106d35780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561070c5780820151818401526020810190506106f1565b50505050905090810190601f1680156107395780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061078061074d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610803576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f1f6024913960400191505060405180910390fd5b61080c826109af565b9050919050565b60006060600080905060405180602001604052806000815250915091509b509b9950505050505050505050565b610849816109b6565b50565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b6108938282610b85565b5050565b7fd6558c3ed910d959271054471fd1c326679d9fece99c5091b00ed89627cf2bfc6108c0610c48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b61090b61074d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f1f6024913960400191505060405180910390fd5b61099a84848484610c57565b50505050565b60606109aa610c5d565b905090565b6000919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610ec4602e913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180610ef2602d913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a3816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662f714ce83836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b505050505050565b6000610c52610d0e565b905090565b50505050565b60606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d00576000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050610d0b565b610d08610d7a565b90505b90565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6c57339050610d77565b610d74610e4b565b90505b90565b606060006014600036905003905060608167ffffffffffffffff81118015610da157600080fd5b506040519080825280601f01601f191660200182016040528015610dd45781602001600182028036833780820191505090505b50905060008090505b82811015610e425760003682818110610df257fe5b9050013560f81c60f81b828281518110610e0857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806001019050610ddd565b50809250505090565b600060606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff8183015116925082925050509056fe47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f206164647265737347534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a26469706673582212202dd84176ade68e576ef2f7c02a1bf32331628c31485dc1c415ef56ba000fb2f264736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c80639e30a590116100665780639e30a59014610437578063ad61ccd51461047b578063c2db1abe146104fe578063d737d0c71461054c578063e06e0e221461055657610093565b8063376bf2621461009857806374e861d61461015d57806380274db7146101a757806383947ea014610276575b600080fd5b61015b600480360360408110156100ae57600080fd5b8101908080359060200190929190803590602001906401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610631565b005b61016561074d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610260600480360360208110156101bd57600080fd5b81019080803590602001906401000000008111156101da57600080fd5b8201836020820111156101ec57600080fd5b8035906020019184600183028401116401000000008311171561020e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610776565b6040518082815260200191505060405180910390f35b6103b5600480360361012081101561028d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102ea57600080fd5b8201836020820111156102fc57600080fd5b8035906020019184600183028401116401000000008311171561031e57600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561036757600080fd5b82018360208201111561037957600080fd5b8035906020019184600183028401116401000000008311171561039b57600080fd5b909192939192939080359060200190929190505050610813565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103fb5780820151818401526020810190506103e0565b50505050905090810190601f1680156104285780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610840565b005b61048361084c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104c35780820151818401526020810190506104a8565b50505050905090810190601f1680156104f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61054a6004803603604081101561051457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610889565b005b610554610897565b005b61062f6004803603608081101561056c57600080fd5b810190808035906020019064010000000081111561058957600080fd5b82018360208201111561059b57600080fd5b803590602001918460018302840111640100000000831117156105bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050610903565b005b7faf235354a0a47c91ee171961326335cb2d1a8e55b8a89859b0e61eb049e50ea061065a6109a0565b8383604051808060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156106a657808201518184015260208101905061068b565b50505050905090810190601f1680156106d35780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561070c5780820151818401526020810190506106f1565b50505050905090810190601f1680156107395780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061078061074d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610803576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f1f6024913960400191505060405180910390fd5b61080c826109af565b9050919050565b60006060600080905060405180602001604052806000815250915091509b509b9950505050505050505050565b610849816109b6565b50565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b6108938282610b85565b5050565b7fd6558c3ed910d959271054471fd1c326679d9fece99c5091b00ed89627cf2bfc6108c0610c48565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b61090b61074d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f1f6024913960400191505060405180910390fd5b61099a84848484610c57565b50505050565b60606109aa610c5d565b905090565b6000919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610ec4602e913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180610ef2602d913960400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a3816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662f714ce83836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b505050505050565b6000610c52610d0e565b905090565b50505050565b60606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d00576000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050610d0b565b610d08610d7a565b90505b90565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6c57339050610d77565b610d74610e4b565b90505b90565b606060006014600036905003905060608167ffffffffffffffff81118015610da157600080fd5b506040519080825280601f01601f191660200182016040528015610dd45781602001600182028036833780820191505090505b50905060008090505b82811015610e425760003682818110610df257fe5b9050013560f81c60f81b828281518110610e0857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806001019050610ddd565b50809250505090565b600060606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff8183015116925082925050509056fe47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f206164647265737347534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a26469706673582212202dd84176ade68e576ef2f7c02a1bf32331628c31485dc1c415ef56ba000fb2f264736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignature.json b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignature.json new file mode 100644 index 0000000..011c3fc --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignature.json @@ -0,0 +1,1902 @@ +{ + "fileName": "GSNRecipientSignature.sol", + "contractName": "GSNRecipientSignature", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./GSNRecipient.sol\";\nimport \"../cryptography/ECDSA.sol\";\n\n/**\n * @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that allows relayed transactions through when they are\n * accompanied by the signature of a trusted signer. The intent is for this signature to be generated by a server that\n * performs validations off-chain. Note that nothing is charged to the user in this scheme. Thus, the server should make\n * sure to account for this in their economic and threat model.\n */\ncontract GSNRecipientSignature is GSNRecipient {\n using ECDSA for bytes32;\n\n address private _trustedSigner;\n\n enum GSNRecipientSignatureErrorCodes {\n INVALID_SIGNER\n }\n\n /**\n * @dev Sets the trusted signer that is going to be producing signatures to approve relayed calls.\n */\n constructor(address trustedSigner) public {\n require(trustedSigner != address(0), \"GSNRecipientSignature: trusted signer is the zero address\");\n _trustedSigner = trustedSigner;\n }\n\n /**\n * @dev Ensures that only transactions with a trusted signature can be relayed through the GSN.\n */\n function acceptRelayedCall(\n address relay,\n address from,\n bytes memory encodedFunction,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256 gasLimit,\n uint256 nonce,\n bytes memory approvalData,\n uint256\n )\n public\n view\n virtual\n override\n returns (uint256, bytes memory)\n {\n bytes memory blob = abi.encodePacked(\n relay,\n from,\n encodedFunction,\n transactionFee,\n gasPrice,\n gasLimit,\n nonce, // Prevents replays on RelayHub\n getHubAddr(), // Prevents replays in multiple RelayHubs\n address(this) // Prevents replays in multiple recipients\n );\n if (keccak256(blob).toEthSignedMessageHash().recover(approvalData) == _trustedSigner) {\n return _approveRelayedCall();\n } else {\n return _rejectRelayedCall(uint256(GSNRecipientSignatureErrorCodes.INVALID_SIGNER));\n }\n }\n\n function _preRelayedCall(bytes memory) internal virtual override returns (bytes32) { }\n\n function _postRelayedCall(bytes memory, bool, uint256, bytes32) internal virtual override { }\n}\n", + "sourcePath": "contracts/GSN/GSNRecipientSignature.sol", + "sourceMap": "560:1854:3:-:0;;;885:42:1;857:70;;;;;;;;;;;;;;;;;;;;872:196:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;957:1;932:27;;:13;:27;;;;924:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:13;1031:14;;:30;;;;;;;;;;;;;;;;;;872:196;560:1854;;;;;;", + "deployedSourceMap": "560:1854:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:94:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5087:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1190:1031:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2699:227:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5945:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1451:94;1503:7;1529:9;;;;;;;;;;;1522:16;;1451:94;:::o;5087:221::-;5166:7;5207:12;:10;:12::i;:::-;5193:26;;:10;:26;;;5185:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:24;5293:7;5277:15;:24::i;:::-;5270:31;;5087:221;;;:::o;1190:1031:3:-;1543:7;1552:12;1580:17;1630:5;1649:4;1667:15;1696:14;1724:8;1746;1768:5;1819:12;:10;:12::i;:::-;1895:4;1600:353;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:373;;2033:14;;;;;;;;;;;1967:80;;:62;2016:12;1967:40;1977:4;1967:15;;;;;;:38;:40::i;:::-;:48;;:62;;;;:::i;:::-;:80;;;1963:252;;;2070:21;:19;:21::i;:::-;2063:28;;;;;;;1963:252;2129:75;2156:46;2148:55;;;;;;;;2129:18;:75::i;:::-;2122:82;;;;;1190:1031;;;;;;;;;;;;;:::o;2699:227:1:-;2747:13;2905:14;;;;;;;;;;;;;;;;;;;2699:227;:::o;5945:287::-;6103:12;:10;:12::i;:::-;6089:26;;:10;:26;;;6081:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6166:59;6183:7;6192;6201:12;6215:9;6166:16;:59::i;:::-;5945:287;;;;:::o;2227:86:3:-;2301:7;2227:86;;;:::o;3396:265:8:-;3465:7;3648:4;3595:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3585:69;;;;;;3578:76;;3396:265;;;:::o;1064:2068::-;1142:7;1223:2;1203:9;:16;:22;1199:94;;1241:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:94;1359:9;1378;1397:7;1643:4;1632:9;1628:20;1622:27;1617:32;;1688:4;1677:9;1673:20;1667:27;1662:32;;1741:4;1730:9;1726:20;1720:27;1717:1;1712:36;1707:41;;2659:66;2654:1;2646:10;;:79;2642:154;;;2741:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:154;2815:2;2810:1;:7;;;;:18;;;;;2826:2;2821:1;:7;;;;2810:18;2806:93;;;2844:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:93;2993:14;3010:24;3020:4;3026:1;3029;3032;3010:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:41;;3070:1;3052:20;;:6;:20;;;;3044:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3119:6;3112:13;;;;;;1064:2068;;;;:::o;6834:124:1:-;6888:7;6897:12;6928:23;;;;;;;;;;;;;:19;:23::i;:::-;6921:30;;;;6834:124;;:::o;7405:157::-;7475:7;7484:12;7541:9;1041:2;7516:34;7508:47;;;;;;;;;;;;;;;;7405:157;;;:::o;2319:93:3:-;;;;;:::o;7120:154:1:-;7194:7;7203:12;984:1;7259:7;7227:40;;;;7120:154;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "trustedSigner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/GSNRecipientSignature.sol", + "exportedSymbols": { + "GSNRecipientSignature": [ + 850 + ] + }, + "id": 851, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 723, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:3" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "./GSNRecipient.sol", + "id": 724, + "nodeType": "ImportDirective", + "scope": 851, + "sourceUnit": 376, + "src": "58:28:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/cryptography/ECDSA.sol", + "file": "../cryptography/ECDSA.sol", + "id": 725, + "nodeType": "ImportDirective", + "scope": 851, + "sourceUnit": 1675, + "src": "87:35:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 727, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 375, + "src": "594:12:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$375", + "typeString": "contract GSNRecipient" + } + }, + "id": 728, + "nodeType": "InheritanceSpecifier", + "src": "594:12:3" + } + ], + "contractDependencies": [ + 22, + 375, + 1184 + ], + "contractKind": "contract", + "documentation": { + "id": 726, + "nodeType": "StructuredDocumentation", + "src": "124:435:3", + "text": " @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that allows relayed transactions through when they are\n accompanied by the signature of a trusted signer. The intent is for this signature to be generated by a server that\n performs validations off-chain. Note that nothing is charged to the user in this scheme. Thus, the server should make\n sure to account for this in their economic and threat model." + }, + "fullyImplemented": true, + "id": 850, + "linearizedBaseContracts": [ + 850, + 375, + 22, + 1184 + ], + "name": "GSNRecipientSignature", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 731, + "libraryName": { + "contractScope": null, + "id": 729, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1674, + "src": "619:5:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$1674", + "typeString": "library ECDSA" + } + }, + "nodeType": "UsingForDirective", + "src": "613:24:3", + "typeName": { + "id": 730, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "629:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": false, + "id": 733, + "mutability": "mutable", + "name": "_trustedSigner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 850, + "src": "643:30:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "643:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "canonicalName": "GSNRecipientSignature.GSNRecipientSignatureErrorCodes", + "id": 735, + "members": [ + { + "id": 734, + "name": "INVALID_SIGNER", + "nodeType": "EnumValue", + "src": "727:14:3" + } + ], + "name": "GSNRecipientSignatureErrorCodes", + "nodeType": "EnumDefinition", + "src": "680:67:3" + }, + { + "body": { + "id": 755, + "nodeType": "Block", + "src": "914:154:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 742, + "name": "trustedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "932:13:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "957:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "949:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 743, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "949:7:3", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "949:10:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "932:27:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "47534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f2061646472657373", + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:59:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b449863bc8ef919e776559b9a0800b6601550a12ec4edf55e3d3f41dc6eeaa03", + "typeString": "literal_string \"GSNRecipientSignature: trusted signer is the zero address\"" + }, + "value": "GSNRecipientSignature: trusted signer is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b449863bc8ef919e776559b9a0800b6601550a12ec4edf55e3d3f41dc6eeaa03", + "typeString": "literal_string \"GSNRecipientSignature: trusted signer is the zero address\"" + } + ], + "id": 741, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "924:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "924:97:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 750, + "nodeType": "ExpressionStatement", + "src": "924:97:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 751, + "name": "_trustedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "1031:14:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 752, + "name": "trustedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "1048:13:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1031:30:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 754, + "nodeType": "ExpressionStatement", + "src": "1031:30:3" + } + ] + }, + "documentation": { + "id": 736, + "nodeType": "StructuredDocumentation", + "src": "753:114:3", + "text": " @dev Sets the trusted signer that is going to be producing signatures to approve relayed calls." + }, + "id": 756, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 738, + "mutability": "mutable", + "name": "trustedSigner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 756, + "src": "884:21:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 737, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "883:23:3" + }, + "returnParameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [], + "src": "914:0:3" + }, + "scope": 850, + "src": "872:196:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1163 + ], + "body": { + "id": 826, + "nodeType": "Block", + "src": "1570:651:3", + "statements": [ + { + "assignments": [ + 784 + ], + "declarations": [ + { + "constant": false, + "id": 784, + "mutability": "mutable", + "name": "blob", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 826, + "src": "1580:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 783, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1580:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 801, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 787, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "1630:5:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 788, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "1649:4:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 789, + "name": "encodedFunction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "1667:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 790, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 765, + "src": "1696:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 791, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 767, + "src": "1724:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 792, + "name": "gasLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "1746:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 793, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "1768:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 794, + "name": "getHubAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "1819:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1819:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 798, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1895:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientSignature_$850", + "typeString": "contract GSNRecipientSignature" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GSNRecipientSignature_$850", + "typeString": "contract GSNRecipientSignature" + } + ], + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1887:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1887:7:3", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1887:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 785, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1600:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1600:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1600:353:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1580:373:3" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 808, + "name": "approvalData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 773, + "src": "2016:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 803, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 784, + "src": "1977:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 802, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1967:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1967:15:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 1673, + "src": "1967:38:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1967:40:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 1656, + "src": "1967:48:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1967:62:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 810, + "name": "_trustedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2033:14:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1967:80:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 824, + "nodeType": "Block", + "src": "2108:107:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 819, + "name": "GSNRecipientSignatureErrorCodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "2156:31:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_GSNRecipientSignatureErrorCodes_$735_$", + "typeString": "type(enum GSNRecipientSignature.GSNRecipientSignatureErrorCodes)" + } + }, + "id": 820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "INVALID_SIGNER", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2156:46:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_GSNRecipientSignatureErrorCodes_$735", + "typeString": "enum GSNRecipientSignature.GSNRecipientSignatureErrorCodes" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_GSNRecipientSignatureErrorCodes_$735", + "typeString": "enum GSNRecipientSignature.GSNRecipientSignatureErrorCodes" + } + ], + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2148:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2148:7:3", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2148:55:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 816, + "name": "_rejectRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "2129:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256,bytes memory)" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2129:75:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 782, + "id": 823, + "nodeType": "Return", + "src": "2122:82:3" + } + ] + }, + "id": 825, + "nodeType": "IfStatement", + "src": "1963:252:3", + "trueBody": { + "id": 815, + "nodeType": "Block", + "src": "2049:53:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 812, + "name": "_approveRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 254, + 269 + ], + "referencedDeclaration": 254, + "src": "2070:19:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (uint256,bytes memory)" + } + }, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2070:21:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 782, + "id": 814, + "nodeType": "Return", + "src": "2063:28:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 757, + "nodeType": "StructuredDocumentation", + "src": "1074:111:3", + "text": " @dev Ensures that only transactions with a trusted signature can be relayed through the GSN." + }, + "functionSelector": "83947ea0", + "id": 827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 777, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1517:8:3" + }, + "parameters": { + "id": 776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 759, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1226:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1226:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 761, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1249:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1249:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "mutability": "mutable", + "name": "encodedFunction", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1271:28:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 762, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1271:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 765, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1309:22:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1309:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 767, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1341:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 766, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1341:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 769, + "mutability": "mutable", + "name": "gasLimit", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1367:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1367:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 771, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1393:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1393:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 773, + "mutability": "mutable", + "name": "approvalData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1416:25:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 772, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1416:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 775, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1451:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1451:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1216:248:3" + }, + "returnParameters": { + "id": 782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 779, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1543:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1543:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 781, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 827, + "src": "1552:12:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 780, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1552:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1542:23:3" + }, + "scope": 850, + "src": "1190:1031:3", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 199 + ], + "body": { + "id": 835, + "nodeType": "Block", + "src": "2310:3:3", + "statements": [] + }, + "documentation": null, + "id": 836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 831, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2283:8:3" + }, + "parameters": { + "id": 830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 829, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 836, + "src": "2252:12:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 828, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2252:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2251:14:3" + }, + "returnParameters": { + "id": 834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 833, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 836, + "src": "2301:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 832, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2301:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2300:9:3" + }, + "scope": 850, + "src": "2227:86:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 241 + ], + "body": { + "id": 848, + "nodeType": "Block", + "src": "2409:3:3", + "statements": [] + }, + "documentation": null, + "id": 849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 846, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2400:8:3" + }, + "parameters": { + "id": 845, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 838, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 849, + "src": "2345:12:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 837, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2345:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 840, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 849, + "src": "2359:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 839, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2359:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 842, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 849, + "src": "2365:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 841, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2365:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 844, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 849, + "src": "2374:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 843, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2374:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2344:38:3" + }, + "returnParameters": { + "id": 847, + "nodeType": "ParameterList", + "parameters": [], + "src": "2409:0:3" + }, + "scope": 850, + "src": "2319:93:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 851, + "src": "560:1854:3" + } + ], + "src": "33:2382:3" + }, + "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f4946000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006457600080fd5b50604051610e79380380610e798339818101604052602081101561008757600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561011e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180610e406039913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610cd18061016f6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806374e861d61461005c57806380274db7146100a657806383947ea014610175578063ad61ccd5146103ba578063e06e0e221461043d575b600080fd5b610064610518565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61015f600480360360208110156100bc57600080fd5b81019080803590602001906401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610541565b6040518082815260200191505060405180910390f35b610338600480360361012081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101e957600080fd5b8201836020820111156101fb57600080fd5b8035906020019184600183028401116401000000008311171561021d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156102a857600080fd5b8201836020820111156102ba57600080fd5b803590602001918460018302840111640100000000831117156102dc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506105de565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561037e578082015181840152602081019050610363565b50505050905090810190601f1680156103ab5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103c2610804565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104025780820151818401526020810190506103e7565b50505050905090810190601f16801561042f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105166004803603608081101561045357600080fd5b810190808035906020019064010000000081111561047057600080fd5b82018360208201111561048257600080fd5b803590602001918460018302840111640100000000831117156104a457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050610841565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061054b610518565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610c786024913960400191505060405180910390fd5b6105d7826108de565b9050919050565b60006060808b8b8b8b8b8b8b6105f2610518565b30604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140188805190602001908083835b602083106106935780518252602082019150602081019050602083039250610670565b6001836020036101000a0380198251168184511680821785525050505050509050018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140199505050505050505050506040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107ae866107a084805190602001206108e5565b61093d90919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614156107dc576107d2610bd8565b92509250506107f6565b6107f06000808111156107eb57fe5b610bfc565b92509250505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b610849610518565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610c786024913960400191505060405180910390fd5b6108d884848484610c1d565b50505050565b6000919050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251146109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c346022913960400191505060405180910390fd5b601b8160ff1614158015610a675750601c8160ff1614155b15610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c566022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b1c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60006060610bf460405180602001604052806000815250610c23565b915091509091565b6000606082600b016040518060200160405280600081525091509150915091565b50505050565b600060606000839150915091509156fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a2646970667358221220254cc57478ccdccafc5f0d9e46e3c109beab430a8ab1cd62cf3d859af47267c664736f6c634300060a003347534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c806374e861d61461005c57806380274db7146100a657806383947ea014610175578063ad61ccd5146103ba578063e06e0e221461043d575b600080fd5b610064610518565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61015f600480360360208110156100bc57600080fd5b81019080803590602001906401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610541565b6040518082815260200191505060405180910390f35b610338600480360361012081101561018c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101e957600080fd5b8201836020820111156101fb57600080fd5b8035906020019184600183028401116401000000008311171561021d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156102a857600080fd5b8201836020820111156102ba57600080fd5b803590602001918460018302840111640100000000831117156102dc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506105de565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561037e578082015181840152602081019050610363565b50505050905090810190601f1680156103ab5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103c2610804565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104025780820151818401526020810190506103e7565b50505050905090810190601f16801561042f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105166004803603608081101561045357600080fd5b810190808035906020019064010000000081111561047057600080fd5b82018360208201111561048257600080fd5b803590602001918460018302840111640100000000831117156104a457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050610841565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061054b610518565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610c786024913960400191505060405180910390fd5b6105d7826108de565b9050919050565b60006060808b8b8b8b8b8b8b6105f2610518565b30604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140188805190602001908083835b602083106106935780518252602082019150602081019050602083039250610670565b6001836020036101000a0380198251168184511680821785525050505050509050018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140199505050505050505050506040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107ae866107a084805190602001206108e5565b61093d90919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614156107dc576107d2610bd8565b92509250506107f6565b6107f06000808111156107eb57fe5b610bfc565b92509250505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b610849610518565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610c786024913960400191505060405180910390fd5b6108d884848484610c1d565b50505050565b6000919050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251146109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c346022913960400191505060405180910390fd5b601b8160ff1614158015610a675750601c8160ff1614155b15610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c566022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b1c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60006060610bf460405180602001604052806000815250610c23565b915091509091565b6000606082600b016040518060200160405280600081525091509150915091565b50505050565b600060606000839150915091509156fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a2646970667358221220254cc57478ccdccafc5f0d9e46e3c109beab430a8ab1cd62cf3d859af47267c664736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignatureMock.json b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignatureMock.json new file mode 100644 index 0000000..0806fa5 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/GSNRecipientSignatureMock.json @@ -0,0 +1,494 @@ +{ + "fileName": "GSNRecipientSignatureMock.sol", + "contractName": "GSNRecipientSignatureMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/GSNRecipient.sol\";\nimport \"../GSN/GSNRecipientSignature.sol\";\n\ncontract GSNRecipientSignatureMock is GSNRecipient, GSNRecipientSignature {\n constructor(address trustedSigner) public GSNRecipientSignature(trustedSigner) { }\n\n event MockFunctionCalled();\n\n function mockFunction() public {\n emit MockFunctionCalled();\n }\n}\n", + "sourcePath": "contracts/mocks/GSNRecipientSignatureMock.sol", + "sourceMap": "136:276:51:-:0;;;885:42:1;857:70;;;;;;;;;;;;;;;;;;;;216:82:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;280:13;957:1:3;932:27;;:13;:27;;;;924:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:13;1031:14;;:30;;;;;;;;;;;;;;;;;;872:196;216:82:51;136:276;;;;;;", + "deployedSourceMap": "136:276:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:73;;;:::i;:::-;;1451:94:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5087:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1190:1031:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2699:227:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5945:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;337:73:51;383:20;;;;;;;;;;337:73::o;1451:94:1:-;1503:7;1529:9;;;;;;;;;;;1522:16;;1451:94;:::o;5087:221::-;5166:7;5207:12;:10;:12::i;:::-;5193:26;;:10;:26;;;5185:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:24;5293:7;5277:15;:24::i;:::-;5270:31;;5087:221;;;:::o;1190:1031:3:-;1543:7;1552:12;1580:17;1630:5;1649:4;1667:15;1696:14;1724:8;1746;1768:5;1819:12;:10;:12::i;:::-;1895:4;1600:353;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:373;;2033:14;;;;;;;;;;;1967:80;;:62;2016:12;1967:40;1977:4;1967:15;;;;;;:38;:40::i;:::-;:48;;:62;;;;:::i;:::-;:80;;;1963:252;;;2070:21;:19;:21::i;:::-;2063:28;;;;;;;1963:252;2129:75;2156:46;2148:55;;;;;;;;2129:18;:75::i;:::-;2122:82;;;;;1190:1031;;;;;;;;;;;;;:::o;2699:227:1:-;2747:13;2905:14;;;;;;;;;;;;;;;;;;;2699:227;:::o;5945:287::-;6103:12;:10;:12::i;:::-;6089:26;;:10;:26;;;6081:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6166:59;6183:7;6192;6201:12;6215:9;6166:16;:59::i;:::-;5945:287;;;;:::o;2227:86:3:-;2301:7;2227:86;;;:::o;3396:265:8:-;3465:7;3648:4;3595:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3585:69;;;;;;3578:76;;3396:265;;;:::o;1064:2068::-;1142:7;1223:2;1203:9;:16;:22;1199:94;;1241:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:94;1359:9;1378;1397:7;1643:4;1632:9;1628:20;1622:27;1617:32;;1688:4;1677:9;1673:20;1667:27;1662:32;;1741:4;1730:9;1726:20;1720:27;1717:1;1712:36;1707:41;;2659:66;2654:1;2646:10;;:79;2642:154;;;2741:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:154;2815:2;2810:1;:7;;;;:18;;;;;2826:2;2821:1;:7;;;;2810:18;2806:93;;;2844:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2806:93;2993:14;3010:24;3020:4;3026:1;3029;3032;3010:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:41;;3070:1;3052:20;;:6;:20;;;;3044:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3119:6;3112:13;;;;;;1064:2068;;;;:::o;6834:124:1:-;6888:7;6897:12;6928:23;;;;;;;;;;;;;:19;:23::i;:::-;6921:30;;;;6834:124;;:::o;7405:157::-;7475:7;7484:12;7541:9;1041:2;7516:34;7508:47;;;;;;;;;;;;;;;;7405:157;;;:::o;2319:93:3:-;;;;;:::o;7120:154:1:-;7194:7;7203:12;984:1;7259:7;7227:40;;;;7120:154;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "trustedSigner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "MockFunctionCalled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mockFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/GSNRecipientSignatureMock.sol", + "exportedSymbols": { + "GSNRecipientSignatureMock": [ + 4979 + ] + }, + "id": 4980, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4954, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:51" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "../GSN/GSNRecipient.sol", + "id": 4955, + "nodeType": "ImportDirective", + "scope": 4980, + "sourceUnit": 380, + "src": "58:33:51", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/GSN/GSNRecipientSignature.sol", + "file": "../GSN/GSNRecipientSignature.sol", + "id": 4956, + "nodeType": "ImportDirective", + "scope": 4980, + "sourceUnit": 855, + "src": "92:42:51", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4957, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 379, + "src": "174:12:51", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$379", + "typeString": "contract GSNRecipient" + } + }, + "id": 4958, + "nodeType": "InheritanceSpecifier", + "src": "174:12:51" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4959, + "name": "GSNRecipientSignature", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 854, + "src": "188:21:51", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientSignature_$854", + "typeString": "contract GSNRecipientSignature" + } + }, + "id": 4960, + "nodeType": "InheritanceSpecifier", + "src": "188:21:51" + } + ], + "contractDependencies": [ + 26, + 379, + 854, + 1188 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4979, + "linearizedBaseContracts": [ + 4979, + 854, + 379, + 26, + 1188 + ], + "name": "GSNRecipientSignatureMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4968, + "nodeType": "Block", + "src": "295:3:51", + "statements": [] + }, + "documentation": null, + "id": 4969, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4965, + "name": "trustedSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4962, + "src": "280:13:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4966, + "modifierName": { + "argumentTypes": null, + "id": 4964, + "name": "GSNRecipientSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "258:21:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GSNRecipientSignature_$854_$", + "typeString": "type(contract GSNRecipientSignature)" + } + }, + "nodeType": "ModifierInvocation", + "src": "258:36:51" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4962, + "mutability": "mutable", + "name": "trustedSigner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4969, + "src": "228:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "228:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "227:23:51" + }, + "returnParameters": { + "id": 4967, + "nodeType": "ParameterList", + "parameters": [], + "src": "295:0:51" + }, + "scope": 4979, + "src": "216:82:51", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4971, + "name": "MockFunctionCalled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4970, + "nodeType": "ParameterList", + "parameters": [], + "src": "328:2:51" + }, + "src": "304:27:51" + }, + { + "body": { + "id": 4977, + "nodeType": "Block", + "src": "368:42:51", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4974, + "name": "MockFunctionCalled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4971, + "src": "383:18:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "383:20:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4976, + "nodeType": "EmitStatement", + "src": "378:25:51" + } + ] + }, + "documentation": null, + "functionSelector": "3e6fec04", + "id": 4978, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mockFunction", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4972, + "nodeType": "ParameterList", + "parameters": [], + "src": "358:2:51" + }, + "returnParameters": { + "id": 4973, + "nodeType": "ParameterList", + "parameters": [], + "src": "368:0:51" + }, + "scope": 4979, + "src": "337:73:51", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 4980, + "src": "136:276:51" + } + ], + "src": "33:380:51" + }, + "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f4946000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006457600080fd5b50604051610ebe380380610ebe8339818101604052602081101561008757600080fd5b810190808051906020019092919050505080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561011f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180610e856039913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610d14806101716000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80633e6fec041461006757806374e861d61461007157806380274db7146100bb57806383947ea01461018a578063ad61ccd5146103cf578063e06e0e2214610452575b600080fd5b61006f61052d565b005b61007961055b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610174600480360360208110156100d157600080fd5b81019080803590602001906401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610584565b6040518082815260200191505060405180910390f35b61034d60048036036101208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156102bd57600080fd5b8201836020820111156102cf57600080fd5b803590602001918460018302840111640100000000831117156102f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610621565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610393578082015181840152602081019050610378565b50505050905090810190601f1680156103c05780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103d7610847565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104175780820151818401526020810190506103fc565b50505050905090810190601f1680156104445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61052b6004803603608081101561046857600080fd5b810190808035906020019064010000000081111561048557600080fd5b82018360208201111561049757600080fd5b803590602001918460018302840111640100000000831117156104b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050610884565b005b7f52c66ed6ec9ca819cba26fe2b2650059270d8981b295af300187a964f54a8c2360405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061058e61055b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cbb6024913960400191505060405180910390fd5b61061a82610921565b9050919050565b60006060808b8b8b8b8b8b8b61063561055b565b30604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140188805190602001908083835b602083106106d657805182526020820191506020810190506020830392506106b3565b6001836020036101000a0380198251168184511680821785525050505050509050018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140199505050505050505050506040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f1866107e38480519060200120610928565b61098090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16141561081f57610815610c1b565b9250925050610839565b61083360008081111561082e57fe5b610c3f565b92509250505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b61088c61055b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cbb6024913960400191505060405180910390fd5b61091b84848484610c60565b50505050565b6000919050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251146109f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c776022913960400191505060405180910390fd5b601b8160ff1614158015610aaa5750601c8160ff1614155b15610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c996022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b5f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60006060610c3760405180602001604052806000815250610c66565b915091509091565b6000606082600b016040518060200160405280600081525091509150915091565b50505050565b600060606000839150915091509156fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a2646970667358221220caa56a9df2c38fd9bac9018065585cd222232ec4d6b3bca7ae05ee548ea6486264736f6c6343000609003347534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80633e6fec041461006757806374e861d61461007157806380274db7146100bb57806383947ea01461018a578063ad61ccd5146103cf578063e06e0e2214610452575b600080fd5b61006f61052d565b005b61007961055b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610174600480360360208110156100d157600080fd5b81019080803590602001906401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610584565b6040518082815260200191505060405180910390f35b61034d60048036036101208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101fe57600080fd5b82018360208201111561021057600080fd5b8035906020019184600183028401116401000000008311171561023257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156102bd57600080fd5b8201836020820111156102cf57600080fd5b803590602001918460018302840111640100000000831117156102f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610621565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610393578082015181840152602081019050610378565b50505050905090810190601f1680156103c05780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6103d7610847565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104175780820151818401526020810190506103fc565b50505050905090810190601f1680156104445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61052b6004803603608081101561046857600080fd5b810190808035906020019064010000000081111561048557600080fd5b82018360208201111561049757600080fd5b803590602001918460018302840111640100000000831117156104b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291908035906020019092919080359060200190929190505050610884565b005b7f52c66ed6ec9ca819cba26fe2b2650059270d8981b295af300187a964f54a8c2360405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061058e61055b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cbb6024913960400191505060405180910390fd5b61061a82610921565b9050919050565b60006060808b8b8b8b8b8b8b61063561055b565b30604051602001808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140188805190602001908083835b602083106106d657805182526020820191506020810190506020830392506106b3565b6001836020036101000a0380198251168184511680821785525050505050509050018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140199505050505050505050506040516020818303038152906040529050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f1866107e38480519060200120610928565b61098090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16141561081f57610815610c1b565b9250925050610839565b61083360008081111561082e57fe5b610c3f565b92509250505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b61088c61055b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cbb6024913960400191505060405180910390fd5b61091b84848484610c60565b50505050565b6000919050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251146109f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c776022913960400191505060405180910390fd5b601b8160ff1614158015610aaa5750601c8160ff1614155b15610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c996022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610b5f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60006060610c3760405180602001604052806000815250610c66565b915091509091565b6000606082600b016040518060200160405280600081525091509150915091565b50505050565b600060606000839150915091509156fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c756547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a2646970667358221220caa56a9df2c38fd9bac9018065585cd222232ec4d6b3bca7ae05ee548ea6486264736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC1155.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC1155.json new file mode 100644 index 0000000..550daba --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC1155.json @@ -0,0 +1,1798 @@ +{ + "fileName": "IERC1155.sol", + "contractName": "IERC1155", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n /**\n * @dev Emitted when `value` tokens of token type `id` are transfered from `from` to `to` by `operator`.\n */\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n /**\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n * transfers.\n */\n event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);\n\n /**\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n * `approved`.\n */\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n /**\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n *\n * If an {URI} event was emitted for `id`, the standard\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n * returned by {IERC1155MetadataURI-uri}.\n */\n event URI(string value, uint256 indexed id);\n\n /**\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);\n\n /**\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n *\n * Emits an {ApprovalForAll} event.\n *\n * Requirements:\n *\n * - `operator` cannot be the caller.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;\n}\n", + "sourcePath": "contracts/token/ERC1155/IERC1155.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/IERC1155.sol", + "exportedSymbols": { + "IERC1155": [ + 8631 + ] + }, + "id": 8632, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8511, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:81" + }, + { + "absolutePath": "contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 8512, + "nodeType": "ImportDirective", + "scope": 8632, + "sourceUnit": 2049, + "src": "58:41:81", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8514, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2048, + "src": "289:7:81", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$2048", + "typeString": "contract IERC165" + } + }, + "id": 8515, + "nodeType": "InheritanceSpecifier", + "src": "289:7:81" + } + ], + "contractDependencies": [ + 2048 + ], + "contractKind": "interface", + "documentation": { + "id": 8513, + "nodeType": "StructuredDocumentation", + "src": "101:165:81", + "text": " @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 8631, + "linearizedBaseContracts": [ + 8631, + 2048 + ], + "name": "IERC1155", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 8516, + "nodeType": "StructuredDocumentation", + "src": "303:120:81", + "text": " @dev Emitted when `value` tokens of token type `id` are transfered from `from` to `to` by `operator`." + }, + "id": 8528, + "name": "TransferSingle", + "nodeType": "EventDefinition", + "parameters": { + "id": 8527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8518, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8528, + "src": "449:24:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "449:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8520, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8528, + "src": "475:20:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8522, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8528, + "src": "497:18:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8524, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8528, + "src": "517:10:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "517:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8526, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8528, + "src": "529:13:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "529:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "448:95:81" + }, + "src": "428:116:81" + }, + { + "anonymous": false, + "documentation": { + "id": 8529, + "nodeType": "StructuredDocumentation", + "src": "550:144:81", + "text": " @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers." + }, + "id": 8543, + "name": "TransferBatch", + "nodeType": "EventDefinition", + "parameters": { + "id": 8542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8531, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8543, + "src": "719:24:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "719:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8533, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8543, + "src": "745:20:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "745:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8535, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8543, + "src": "767:18:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "767:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8538, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8543, + "src": "787:13:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "787:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8537, + "length": null, + "nodeType": "ArrayTypeName", + "src": "787:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8541, + "indexed": false, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8543, + "src": "802:16:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "802:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8540, + "length": null, + "nodeType": "ArrayTypeName", + "src": "802:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "718:101:81" + }, + "src": "699:121:81" + }, + { + "anonymous": false, + "documentation": { + "id": 8544, + "nodeType": "StructuredDocumentation", + "src": "826:147:81", + "text": " @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`." + }, + "id": 8552, + "name": "ApprovalForAll", + "nodeType": "EventDefinition", + "parameters": { + "id": 8551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8546, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8552, + "src": "999:23:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "999:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8548, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8552, + "src": "1024:24:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8547, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1024:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8550, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8552, + "src": "1050:13:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8549, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1050:4:81", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "998:66:81" + }, + "src": "978:87:81" + }, + { + "anonymous": false, + "documentation": { + "id": 8553, + "nodeType": "StructuredDocumentation", + "src": "1071:343:81", + "text": " @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}." + }, + "id": 8559, + "name": "URI", + "nodeType": "EventDefinition", + "parameters": { + "id": 8558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8555, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8559, + "src": "1429:12:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8554, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1429:6:81", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8557, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8559, + "src": "1443:18:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1443:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1428:34:81" + }, + "src": "1419:44:81" + }, + { + "body": null, + "documentation": { + "id": 8560, + "nodeType": "StructuredDocumentation", + "src": "1469:173:81", + "text": " @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address." + }, + "functionSelector": "00fdd58e", + "id": 8569, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8562, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8569, + "src": "1666:15:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1666:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8564, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8569, + "src": "1683:10:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1683:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1665:29:81" + }, + "returnParameters": { + "id": 8568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8567, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8569, + "src": "1718:7:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1718:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1717:9:81" + }, + "scope": 8631, + "src": "1647:80:81", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 8570, + "nodeType": "StructuredDocumentation", + "src": "1733:188:81", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length." + }, + "functionSelector": "4e1273f4", + "id": 8582, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8573, + "mutability": "mutable", + "name": "accounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8582, + "src": "1950:27:81", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 8571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1950:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8572, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1950:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8576, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8582, + "src": "1979:22:81", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1979:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8575, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1979:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1949:53:81" + }, + "returnParameters": { + "id": 8581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8580, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8582, + "src": "2026:16:81", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2026:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8579, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2026:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2025:18:81" + }, + "scope": 8631, + "src": "1926:118:81", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 8583, + "nodeType": "StructuredDocumentation", + "src": "2050:248:81", + "text": " @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller." + }, + "functionSelector": "a22cb465", + "id": 8590, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8585, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8590, + "src": "2330:16:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8584, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2330:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8587, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8590, + "src": "2348:13:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8586, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2348:4:81", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2329:33:81" + }, + "returnParameters": { + "id": 8589, + "nodeType": "ParameterList", + "parameters": [], + "src": "2371:0:81" + }, + "scope": 8631, + "src": "2303:69:81", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 8591, + "nodeType": "StructuredDocumentation", + "src": "2378:135:81", + "text": " @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}." + }, + "functionSelector": "e985e9c5", + "id": 8600, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8593, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8600, + "src": "2544:15:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2544:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8595, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8600, + "src": "2561:16:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2561:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2543:35:81" + }, + "returnParameters": { + "id": 8599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8598, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8600, + "src": "2602:4:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8597, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2602:4:81", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2601:6:81" + }, + "scope": 8631, + "src": "2518:90:81", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 8601, + "nodeType": "StructuredDocumentation", + "src": "2614:559:81", + "text": " @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value." + }, + "functionSelector": "f242432a", + "id": 8614, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8603, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8614, + "src": "3204:12:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3204:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8605, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8614, + "src": "3218:10:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3218:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8607, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8614, + "src": "3230:10:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3230:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8609, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8614, + "src": "3242:14:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8608, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3242:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8611, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8614, + "src": "3258:19:81", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8610, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3258:5:81", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3203:75:81" + }, + "returnParameters": { + "id": 8613, + "nodeType": "ParameterList", + "parameters": [], + "src": "3287:0:81" + }, + "scope": 8631, + "src": "3178:110:81", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 8615, + "nodeType": "StructuredDocumentation", + "src": "3294:390:81", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value." + }, + "functionSelector": "2eb2c2d6", + "id": 8630, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeBatchTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8617, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8630, + "src": "3720:12:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3720:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8619, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8630, + "src": "3734:10:81", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3734:7:81", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8622, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8630, + "src": "3746:22:81", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3746:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8621, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3746:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8625, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8630, + "src": "3770:26:81", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3770:7:81", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8624, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3770:9:81", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8627, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8630, + "src": "3798:19:81", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8626, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3798:5:81", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3719:99:81" + }, + "returnParameters": { + "id": 8629, + "nodeType": "ParameterList", + "parameters": [], + "src": "3827:0:81" + }, + "scope": 8631, + "src": "3689:139:81", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8632, + "src": "267:3563:81" + } + ], + "src": "33:3798:81" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC1155MetadataURI.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC1155MetadataURI.json new file mode 100644 index 0000000..7cf19c2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC1155MetadataURI.json @@ -0,0 +1,508 @@ +{ + "fileName": "IERC1155MetadataURI.sol", + "contractName": "IERC1155MetadataURI", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\nimport \"./IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n", + "sourcePath": "contracts/token/ERC1155/IERC1155MetadataURI.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/IERC1155MetadataURI.sol", + "exportedSymbols": { + "IERC1155MetadataURI": [ + 8646 + ] + }, + "id": 8647, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8633, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:82" + }, + { + "absolutePath": "contracts/token/ERC1155/IERC1155.sol", + "file": "./IERC1155.sol", + "id": 8634, + "nodeType": "ImportDirective", + "scope": 8647, + "sourceUnit": 8632, + "src": "58:24:82", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8636, + "name": "IERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8631, + "src": "312:8:82", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$8631", + "typeString": "contract IERC1155" + } + }, + "id": 8637, + "nodeType": "InheritanceSpecifier", + "src": "312:8:82" + } + ], + "contractDependencies": [ + 2048, + 8631 + ], + "contractKind": "interface", + "documentation": { + "id": 8635, + "nodeType": "StructuredDocumentation", + "src": "84:194:82", + "text": " @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 8646, + "linearizedBaseContracts": [ + 8646, + 8631, + 2048 + ], + "name": "IERC1155MetadataURI", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 8638, + "nodeType": "StructuredDocumentation", + "src": "327:192:82", + "text": " @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID." + }, + "functionSelector": "0e89341c", + "id": 8645, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "uri", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8640, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8645, + "src": "537:10:82", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "537:7:82", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "536:12:82" + }, + "returnParameters": { + "id": 8644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8643, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8645, + "src": "572:13:82", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8642, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "572:6:82", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "571:15:82" + }, + "scope": 8646, + "src": "524:63:82", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8647, + "src": "279:310:82" + } + ], + "src": "33:557:82" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC1155Receiver.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC1155Receiver.json new file mode 100644 index 0000000..29829c3 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC1155Receiver.json @@ -0,0 +1,631 @@ +{ + "fileName": "IERC1155Receiver.sol", + "contractName": "IERC1155Receiver", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n\n /**\n @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n )\n external\n returns(bytes4);\n\n /**\n @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated. To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n )\n external\n returns(bytes4);\n}\n", + "sourcePath": "contracts/token/ERC1155/IERC1155Receiver.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC1155/IERC1155Receiver.sol", + "exportedSymbols": { + "IERC1155Receiver": [ + 8687 + ] + }, + "id": 8688, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8648, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:83" + }, + { + "absolutePath": "contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 8649, + "nodeType": "ImportDirective", + "scope": 8688, + "sourceUnit": 2049, + "src": "58:41:83", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8651, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2048, + "src": "166:7:83", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$2048", + "typeString": "contract IERC165" + } + }, + "id": 8652, + "nodeType": "InheritanceSpecifier", + "src": "166:7:83" + } + ], + "contractDependencies": [ + 2048 + ], + "contractKind": "interface", + "documentation": { + "id": 8650, + "nodeType": "StructuredDocumentation", + "src": "101:34:83", + "text": " _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 8687, + "linearizedBaseContracts": [ + 8687, + 2048 + ], + "name": "IERC1155Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 8653, + "nodeType": "StructuredDocumentation", + "src": "181:816:83", + "text": "@dev Handles the receipt of a single ERC1155 token type. This function is\ncalled at the end of a `safeTransferFrom` after the balance has been updated.\nTo accept the transfer, this must return\n`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n(i.e. 0xf23a6e61, or its own function selector).\n@param operator The address which initiated the transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param id The ID of the token being transferred\n@param value The amount of tokens being transferred\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed" + }, + "functionSelector": "f23a6e61", + "id": 8668, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC1155Received", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8655, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8668, + "src": "1038:16:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1038:7:83", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8657, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8668, + "src": "1064:12:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1064:7:83", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8659, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8668, + "src": "1086:10:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1086:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8661, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8668, + "src": "1106:13:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1106:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8663, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8668, + "src": "1129:19:83", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8662, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1129:5:83", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1028:126:83" + }, + "returnParameters": { + "id": 8667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8666, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8668, + "src": "1188:6:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8665, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1188:6:83", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1187:8:83" + }, + "scope": 8687, + "src": "1002:194:83", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 8669, + "nodeType": "StructuredDocumentation", + "src": "1202:977:83", + "text": "@dev Handles the receipt of a multiple ERC1155 token types. This function\nis called at the end of a `safeBatchTransferFrom` after the balances have\nbeen updated. To accept the transfer(s), this must return\n`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n(i.e. 0xbc197c81, or its own function selector).\n@param operator The address which initiated the batch transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param ids An array containing ids of each token being transferred (order and length must match values array)\n@param values An array containing amounts of each token being transferred (order and length must match ids array)\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed" + }, + "functionSelector": "bc197c81", + "id": 8686, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC1155BatchReceived", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 8682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8671, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8686, + "src": "2225:16:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2225:7:83", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8673, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8686, + "src": "2251:12:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2251:7:83", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8676, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8686, + "src": "2273:22:83", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2273:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8675, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2273:9:83", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8679, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8686, + "src": "2305:25:83", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2305:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8678, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2305:9:83", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8681, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8686, + "src": "2340:19:83", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8680, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2340:5:83", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2215:150:83" + }, + "returnParameters": { + "id": 8685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8684, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 8686, + "src": "2399:6:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 8683, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2399:6:83", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2398:8:83" + }, + "scope": 8687, + "src": "2184:223:83", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8688, + "src": "136:2273:83" + } + ], + "src": "33:2377:83" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC165.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC165.json new file mode 100644 index 0000000..4b0ddff --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC165.json @@ -0,0 +1,180 @@ +{ + "fileName": "IERC165.sol", + "contractName": "IERC165", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n", + "sourcePath": "contracts/introspection/IERC165.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 2048 + ] + }, + "id": 2049, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2038, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:13" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2039, + "nodeType": "StructuredDocumentation", + "src": "58:279:13", + "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 2048, + "linearizedBaseContracts": [ + 2048 + ], + "name": "IERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 2040, + "nodeType": "StructuredDocumentation", + "src": "362:340:13", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 2047, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2042, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2047, + "src": "734:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2041, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "734:6:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "733:20:13" + }, + "returnParameters": { + "id": 2046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2045, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2047, + "src": "777:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "777:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "776:6:13" + }, + "scope": 2048, + "src": "707:76:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2049, + "src": "338:447:13" + } + ], + "src": "33:753:13" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC1820Implementer.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC1820Implementer.json new file mode 100644 index 0000000..4e7f792 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC1820Implementer.json @@ -0,0 +1,214 @@ +{ + "fileName": "IERC1820Implementer.sol", + "contractName": "IERC1820Implementer", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface for an ERC1820 implementer, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1820#interface-implementation-erc1820implementerinterface[EIP].\n * Used by contracts that will be registered as implementers in the\n * {IERC1820Registry}.\n */\ninterface IERC1820Implementer {\n /**\n * @dev Returns a special value (`ERC1820_ACCEPT_MAGIC`) if this contract\n * implements `interfaceHash` for `account`.\n *\n * See {IERC1820Registry-setInterfaceImplementer}.\n */\n function canImplementInterfaceForAddress(bytes32 interfaceHash, address account) external view returns (bytes32);\n}\n", + "sourcePath": "contracts/introspection/IERC1820Implementer.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "canImplementInterfaceForAddress", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/introspection/IERC1820Implementer.sol", + "exportedSymbols": { + "IERC1820Implementer": [ + 2062 + ] + }, + "id": 2063, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2050, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:14" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2051, + "nodeType": "StructuredDocumentation", + "src": "58:264:14", + "text": " @dev Interface for an ERC1820 implementer, as defined in the\n https://eips.ethereum.org/EIPS/eip-1820#interface-implementation-erc1820implementerinterface[EIP].\n Used by contracts that will be registered as implementers in the\n {IERC1820Registry}." + }, + "fullyImplemented": false, + "id": 2062, + "linearizedBaseContracts": [ + 2062 + ], + "name": "IERC1820Implementer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 2052, + "nodeType": "StructuredDocumentation", + "src": "359:200:14", + "text": " @dev Returns a special value (`ERC1820_ACCEPT_MAGIC`) if this contract\n implements `interfaceHash` for `account`.\n See {IERC1820Registry-setInterfaceImplementer}." + }, + "functionSelector": "249cb3fa", + "id": 2061, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "canImplementInterfaceForAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2054, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2061, + "src": "605:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "605:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2056, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2061, + "src": "628:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2055, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "628:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "604:40:14" + }, + "returnParameters": { + "id": 2060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2059, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2061, + "src": "668:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2058, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "668:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "667:9:14" + }, + "scope": 2062, + "src": "564:113:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2063, + "src": "323:356:14" + } + ], + "src": "33:647:14" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC1820Registry.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC1820Registry.json new file mode 100644 index 0000000..992782e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC1820Registry.json @@ -0,0 +1,1317 @@ +{ + "fileName": "IERC1820Registry.sol", + "contractName": "IERC1820Registry", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the global ERC1820 Registry, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register\n * implementers for interfaces in this registry, as well as query support.\n *\n * Implementers may be shared by multiple accounts, and can also implement more\n * than a single interface for each account. Contracts can implement interfaces\n * for themselves, but externally-owned accounts (EOA) must delegate this to a\n * contract.\n *\n * {IERC165} interfaces can also be queried via the registry.\n *\n * For an in-depth explanation and source code analysis, see the EIP text.\n */\ninterface IERC1820Registry {\n /**\n * @dev Sets `newManager` as the manager for `account`. A manager of an\n * account is able to set interface implementers for it.\n *\n * By default, each account is its own manager. Passing a value of `0x0` in\n * `newManager` will reset the manager to this initial state.\n *\n * Emits a {ManagerChanged} event.\n *\n * Requirements:\n *\n * - the caller must be the current manager for `account`.\n */\n function setManager(address account, address newManager) external;\n\n /**\n * @dev Returns the manager for `account`.\n *\n * See {setManager}.\n */\n function getManager(address account) external view returns (address);\n\n /**\n * @dev Sets the `implementer` contract as ``account``'s implementer for\n * `interfaceHash`.\n *\n * `account` being the zero address is an alias for the caller's address.\n * The zero address can also be used in `implementer` to remove an old one.\n *\n * See {interfaceHash} to learn how these are created.\n *\n * Emits an {InterfaceImplementerSet} event.\n *\n * Requirements:\n *\n * - the caller must be the current manager for `account`.\n * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not\n * end in 28 zeroes).\n * - `implementer` must implement {IERC1820Implementer} and return true when\n * queried for support, unless `implementer` is the caller. See\n * {IERC1820Implementer-canImplementInterfaceForAddress}.\n */\n function setInterfaceImplementer(address account, bytes32 interfaceHash, address implementer) external;\n\n /**\n * @dev Returns the implementer of `interfaceHash` for `account`. If no such\n * implementer is registered, returns the zero address.\n *\n * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28\n * zeroes), `account` will be queried for support of it.\n *\n * `account` being the zero address is an alias for the caller's address.\n */\n function getInterfaceImplementer(address account, bytes32 interfaceHash) external view returns (address);\n\n /**\n * @dev Returns the interface hash for an `interfaceName`, as defined in the\n * corresponding\n * https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP].\n */\n function interfaceHash(string calldata interfaceName) external pure returns (bytes32);\n\n /**\n * @notice Updates the cache with whether the contract implements an ERC165 interface or not.\n * @param account Address of the contract for which to update the cache.\n * @param interfaceId ERC165 interface for which to update the cache.\n */\n function updateERC165Cache(address account, bytes4 interfaceId) external;\n\n /**\n * @notice Checks whether a contract implements an ERC165 interface or not.\n * If the result is not cached a direct lookup on the contract address is performed.\n * If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling\n * {updateERC165Cache} with the contract address.\n * @param account Address of the contract to check.\n * @param interfaceId ERC165 interface to check.\n * @return True if `account` implements `interfaceId`, false otherwise.\n */\n function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool);\n\n /**\n * @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\n * @param account Address of the contract to check.\n * @param interfaceId ERC165 interface to check.\n * @return True if `account` implements `interfaceId`, false otherwise.\n */\n function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool);\n\n event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer);\n\n event ManagerChanged(address indexed account, address indexed newManager);\n}\n", + "sourcePath": "contracts/introspection/IERC1820Registry.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementer", + "type": "address" + } + ], + "name": "InterfaceImplementerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "ManagerChanged", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + } + ], + "name": "getInterfaceImplementer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "implementsERC165Interface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "implementsERC165InterfaceNoCache", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "interfaceName", + "type": "string" + } + ], + "name": "interfaceHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "interfaceHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "implementer", + "type": "address" + } + ], + "name": "setInterfaceImplementer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "setManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "updateERC165Cache", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/introspection/IERC1820Registry.sol", + "exportedSymbols": { + "IERC1820Registry": [ + 2152 + ] + }, + "id": 2153, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2064, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:15" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2065, + "nodeType": "StructuredDocumentation", + "src": "58:619:15", + "text": " @dev Interface of the global ERC1820 Registry, as defined in the\n https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register\n implementers for interfaces in this registry, as well as query support.\n Implementers may be shared by multiple accounts, and can also implement more\n than a single interface for each account. Contracts can implement interfaces\n for themselves, but externally-owned accounts (EOA) must delegate this to a\n contract.\n {IERC165} interfaces can also be queried via the registry.\n For an in-depth explanation and source code analysis, see the EIP text." + }, + "fullyImplemented": false, + "id": 2152, + "linearizedBaseContracts": [ + 2152 + ], + "name": "IERC1820Registry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 2066, + "nodeType": "StructuredDocumentation", + "src": "711:445:15", + "text": " @dev Sets `newManager` as the manager for `account`. A manager of an\n account is able to set interface implementers for it.\n By default, each account is its own manager. Passing a value of `0x0` in\n `newManager` will reset the manager to this initial state.\n Emits a {ManagerChanged} event.\n Requirements:\n - the caller must be the current manager for `account`." + }, + "functionSelector": "5df8122f", + "id": 2073, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setManager", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2068, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2073, + "src": "1181:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2067, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1181:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2070, + "mutability": "mutable", + "name": "newManager", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2073, + "src": "1198:18:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2069, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1198:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1180:37:15" + }, + "returnParameters": { + "id": 2072, + "nodeType": "ParameterList", + "parameters": [], + "src": "1226:0:15" + }, + "scope": 2152, + "src": "1161:66:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2074, + "nodeType": "StructuredDocumentation", + "src": "1233:90:15", + "text": " @dev Returns the manager for `account`.\n See {setManager}." + }, + "functionSelector": "3d584063", + "id": 2081, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getManager", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2076, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2081, + "src": "1348:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2075, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1348:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1347:17:15" + }, + "returnParameters": { + "id": 2080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2079, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2081, + "src": "1388:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1388:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1387:9:15" + }, + "scope": 2152, + "src": "1328:69:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2082, + "nodeType": "StructuredDocumentation", + "src": "1403:815:15", + "text": " @dev Sets the `implementer` contract as ``account``'s implementer for\n `interfaceHash`.\n `account` being the zero address is an alias for the caller's address.\n The zero address can also be used in `implementer` to remove an old one.\n See {interfaceHash} to learn how these are created.\n Emits an {InterfaceImplementerSet} event.\n Requirements:\n - the caller must be the current manager for `account`.\n - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not\n end in 28 zeroes).\n - `implementer` must implement {IERC1820Implementer} and return true when\n queried for support, unless `implementer` is the caller. See\n {IERC1820Implementer-canImplementInterfaceForAddress}." + }, + "functionSelector": "29965a1d", + "id": 2091, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setInterfaceImplementer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2084, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2091, + "src": "2256:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2083, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2256:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2086, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2091, + "src": "2273:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2085, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2273:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2088, + "mutability": "mutable", + "name": "implementer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2091, + "src": "2296:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2296:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2255:61:15" + }, + "returnParameters": { + "id": 2090, + "nodeType": "ParameterList", + "parameters": [], + "src": "2325:0:15" + }, + "scope": 2152, + "src": "2223:103:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2092, + "nodeType": "StructuredDocumentation", + "src": "2332:382:15", + "text": " @dev Returns the implementer of `interfaceHash` for `account`. If no such\n implementer is registered, returns the zero address.\n If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28\n zeroes), `account` will be queried for support of it.\n `account` being the zero address is an alias for the caller's address." + }, + "functionSelector": "aabbb8ca", + "id": 2101, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getInterfaceImplementer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2094, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2101, + "src": "2752:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2752:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2096, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2101, + "src": "2769:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2095, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2769:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2751:40:15" + }, + "returnParameters": { + "id": 2100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2099, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2101, + "src": "2815:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2098, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2815:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2814:9:15" + }, + "scope": 2152, + "src": "2719:105:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2102, + "nodeType": "StructuredDocumentation", + "src": "2830:196:15", + "text": " @dev Returns the interface hash for an `interfaceName`, as defined in the\n corresponding\n https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]." + }, + "functionSelector": "65ba36c1", + "id": 2109, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "interfaceHash", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2104, + "mutability": "mutable", + "name": "interfaceName", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2109, + "src": "3054:29:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2103, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3054:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3053:31:15" + }, + "returnParameters": { + "id": 2108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2107, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2109, + "src": "3108:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2106, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3108:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3107:9:15" + }, + "scope": 2152, + "src": "3031:86:15", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2110, + "nodeType": "StructuredDocumentation", + "src": "3123:263:15", + "text": " @notice Updates the cache with whether the contract implements an ERC165 interface or not.\n @param account Address of the contract for which to update the cache.\n @param interfaceId ERC165 interface for which to update the cache." + }, + "functionSelector": "a41e7d51", + "id": 2117, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateERC165Cache", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2112, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2117, + "src": "3418:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3418:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2114, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2117, + "src": "3435:18:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2113, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3435:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3417:37:15" + }, + "returnParameters": { + "id": 2116, + "nodeType": "ParameterList", + "parameters": [], + "src": "3463:0:15" + }, + "scope": 2152, + "src": "3391:73:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2118, + "nodeType": "StructuredDocumentation", + "src": "3470:543:15", + "text": " @notice Checks whether a contract implements an ERC165 interface or not.\n If the result is not cached a direct lookup on the contract address is performed.\n If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling\n {updateERC165Cache} with the contract address.\n @param account Address of the contract to check.\n @param interfaceId ERC165 interface to check.\n @return True if `account` implements `interfaceId`, false otherwise." + }, + "functionSelector": "f712f3e8", + "id": 2127, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "implementsERC165Interface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2120, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2127, + "src": "4053:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4053:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2122, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2127, + "src": "4070:18:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2121, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4070:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4052:37:15" + }, + "returnParameters": { + "id": 2126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2125, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2127, + "src": "4113:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2124, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4113:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4112:6:15" + }, + "scope": 2152, + "src": "4018:101:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2128, + "nodeType": "StructuredDocumentation", + "src": "4125:317:15", + "text": " @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\n @param account Address of the contract to check.\n @param interfaceId ERC165 interface to check.\n @return True if `account` implements `interfaceId`, false otherwise." + }, + "functionSelector": "b7056765", + "id": 2137, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "implementsERC165InterfaceNoCache", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2130, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2137, + "src": "4489:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2129, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4489:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2132, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2137, + "src": "4506:18:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2131, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4506:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4488:37:15" + }, + "returnParameters": { + "id": 2136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2135, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2137, + "src": "4549:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2134, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4549:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4548:6:15" + }, + "scope": 2152, + "src": "4447:108:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 2145, + "name": "InterfaceImplementerSet", + "nodeType": "EventDefinition", + "parameters": { + "id": 2144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2139, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2145, + "src": "4591:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4591:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2141, + "indexed": true, + "mutability": "mutable", + "name": "interfaceHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2145, + "src": "4616:29:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2140, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4616:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2143, + "indexed": true, + "mutability": "mutable", + "name": "implementer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2145, + "src": "4647:27:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4647:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4590:85:15" + }, + "src": "4561:115:15" + }, + { + "anonymous": false, + "documentation": null, + "id": 2151, + "name": "ManagerChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 2150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2147, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2151, + "src": "4703:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4703:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2149, + "indexed": true, + "mutability": "mutable", + "name": "newManager", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2151, + "src": "4728:26:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4728:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4702:53:15" + }, + "src": "4682:74:15" + } + ], + "scope": 2153, + "src": "678:4080:15" + } + ], + "src": "33:4726:15" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC20.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC20.json new file mode 100644 index 0000000..8a803da --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC20.json @@ -0,0 +1,1140 @@ +{ + "fileName": "IERC20.sol", + "contractName": "IERC20", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n", + "sourcePath": "contracts/token/ERC20/IERC20.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 9773 + ] + }, + "id": 9774, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9697, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:89" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 9698, + "nodeType": "StructuredDocumentation", + "src": "58:70:89", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 9773, + "linearizedBaseContracts": [ + 9773 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 9699, + "nodeType": "StructuredDocumentation", + "src": "152:66:89", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 9704, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9700, + "nodeType": "ParameterList", + "parameters": [], + "src": "243:2:89" + }, + "returnParameters": { + "id": 9703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9702, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9704, + "src": "269:7:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "269:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "268:9:89" + }, + "scope": 9773, + "src": "223:55:89", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 9705, + "nodeType": "StructuredDocumentation", + "src": "284:72:89", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 9712, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9707, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9712, + "src": "380:15:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "380:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "379:17:89" + }, + "returnParameters": { + "id": 9711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9710, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9712, + "src": "420:7:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9709, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "420:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "419:9:89" + }, + "scope": 9773, + "src": "361:68:89", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 9713, + "nodeType": "StructuredDocumentation", + "src": "435:209:89", + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 9722, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9715, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9722, + "src": "667:17:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "667:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9717, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9722, + "src": "686:14:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9716, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "686:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "666:35:89" + }, + "returnParameters": { + "id": 9721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9720, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9722, + "src": "720:4:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9719, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "720:4:89", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "719:6:89" + }, + "scope": 9773, + "src": "649:77:89", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 9723, + "nodeType": "StructuredDocumentation", + "src": "732:264:89", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 9732, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9725, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9732, + "src": "1020:13:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1020:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9727, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9732, + "src": "1035:15:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9726, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1035:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1019:32:89" + }, + "returnParameters": { + "id": 9731, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9730, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9732, + "src": "1075:7:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1075:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1074:9:89" + }, + "scope": 9773, + "src": "1001:83:89", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 9733, + "nodeType": "StructuredDocumentation", + "src": "1090:642:89", + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 9742, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9735, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9742, + "src": "1754:15:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1754:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9737, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9742, + "src": "1771:14:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1771:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1753:33:89" + }, + "returnParameters": { + "id": 9741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9740, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9742, + "src": "1805:4:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9739, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1805:4:89", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1804:6:89" + }, + "scope": 9773, + "src": "1737:74:89", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 9743, + "nodeType": "StructuredDocumentation", + "src": "1817:296:89", + "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 9754, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9745, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9754, + "src": "2140:14:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2140:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9747, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9754, + "src": "2156:17:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2156:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9749, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9754, + "src": "2175:14:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9748, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2175:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2139:51:89" + }, + "returnParameters": { + "id": 9753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9752, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9754, + "src": "2209:4:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9751, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2209:4:89", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2208:6:89" + }, + "scope": 9773, + "src": "2118:97:89", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 9755, + "nodeType": "StructuredDocumentation", + "src": "2221:158:89", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 9763, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 9762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9757, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9763, + "src": "2399:20:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2399:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9759, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9763, + "src": "2421:18:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2421:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9761, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9763, + "src": "2441:13:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2441:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2398:57:89" + }, + "src": "2384:72:89" + }, + { + "anonymous": false, + "documentation": { + "id": 9764, + "nodeType": "StructuredDocumentation", + "src": "2462:148:89", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "id": 9772, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 9771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9766, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9772, + "src": "2630:21:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9765, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2630:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9768, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9772, + "src": "2653:23:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2653:7:89", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9770, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9772, + "src": "2678:13:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2678:7:89", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2629:63:89" + }, + "src": "2615:78:89" + } + ], + "scope": 9774, + "src": "129:2566:89" + } + ], + "src": "33:2663:89" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC721.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC721.json new file mode 100644 index 0000000..a456ab1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC721.json @@ -0,0 +1,1690 @@ +{ + "fileName": "IERC721.sol", + "contractName": "IERC721", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transfered from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n}\n", + "sourcePath": "contracts/token/ERC721/IERC721.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC721": [ + 11235 + ] + }, + "id": 11236, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11121, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:96" + }, + { + "absolutePath": "contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 11122, + "nodeType": "ImportDirective", + "scope": 11236, + "sourceUnit": 2049, + "src": "58:41:96", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11124, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2048, + "src": "190:7:96", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$2048", + "typeString": "contract IERC165" + } + }, + "id": 11125, + "nodeType": "InheritanceSpecifier", + "src": "190:7:96" + } + ], + "contractDependencies": [ + 2048 + ], + "contractKind": "interface", + "documentation": { + "id": 11123, + "nodeType": "StructuredDocumentation", + "src": "101:67:96", + "text": " @dev Required interface of an ERC721 compliant contract." + }, + "fullyImplemented": false, + "id": 11235, + "linearizedBaseContracts": [ + 11235, + 2048 + ], + "name": "IERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 11126, + "nodeType": "StructuredDocumentation", + "src": "204:87:96", + "text": " @dev Emitted when `tokenId` token is transfered from `from` to `to`." + }, + "id": 11134, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 11133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11128, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11134, + "src": "311:20:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "311:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11130, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11134, + "src": "333:18:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11129, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "333:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11132, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11134, + "src": "353:23:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "353:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "310:67:96" + }, + "src": "296:82:96" + }, + { + "anonymous": false, + "documentation": { + "id": 11135, + "nodeType": "StructuredDocumentation", + "src": "384:94:96", + "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token." + }, + "id": 11143, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 11142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11137, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11143, + "src": "498:21:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "498:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11139, + "indexed": true, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11143, + "src": "521:24:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "521:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11141, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11143, + "src": "547:23:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "547:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:74:96" + }, + "src": "483:89:96" + }, + { + "anonymous": false, + "documentation": { + "id": 11144, + "nodeType": "StructuredDocumentation", + "src": "578:117:96", + "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets." + }, + "id": 11152, + "name": "ApprovalForAll", + "nodeType": "EventDefinition", + "parameters": { + "id": 11151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11146, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11152, + "src": "721:21:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11145, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "721:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11148, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11152, + "src": "744:24:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "744:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11150, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11152, + "src": "770:13:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11149, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "770:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "720:64:96" + }, + "src": "700:85:96" + }, + { + "body": null, + "documentation": { + "id": 11153, + "nodeType": "StructuredDocumentation", + "src": "791:76:96", + "text": " @dev Returns the number of tokens in ``owner``'s account." + }, + "functionSelector": "70a08231", + "id": 11160, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11155, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11160, + "src": "891:13:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "891:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "890:15:96" + }, + "returnParameters": { + "id": 11159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11158, + "mutability": "mutable", + "name": "balance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11160, + "src": "929:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "929:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "928:17:96" + }, + "scope": 11235, + "src": "872:74:96", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11161, + "nodeType": "StructuredDocumentation", + "src": "952:131:96", + "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "6352211e", + "id": 11168, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11163, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11168, + "src": "1105:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1105:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1104:17:96" + }, + "returnParameters": { + "id": 11167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11166, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11168, + "src": "1145:13:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11165, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1145:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1144:15:96" + }, + "scope": 11235, + "src": "1088:72:96", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11169, + "nodeType": "StructuredDocumentation", + "src": "1166:690:96", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "42842e0e", + "id": 11178, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11171, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11178, + "src": "1887:12:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1887:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11173, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11178, + "src": "1901:10:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11172, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1901:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11175, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11178, + "src": "1913:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1913:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1886:43:96" + }, + "returnParameters": { + "id": 11177, + "nodeType": "ParameterList", + "parameters": [], + "src": "1938:0:96" + }, + "scope": 11235, + "src": "1861:78:96", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11179, + "nodeType": "StructuredDocumentation", + "src": "1945:504:96", + "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 11188, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11181, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11188, + "src": "2476:12:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2476:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11183, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11188, + "src": "2490:10:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2490:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11185, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11188, + "src": "2502:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11184, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2502:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2475:43:96" + }, + "returnParameters": { + "id": 11187, + "nodeType": "ParameterList", + "parameters": [], + "src": "2527:0:96" + }, + "scope": 11235, + "src": "2454:74:96", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11189, + "nodeType": "StructuredDocumentation", + "src": "2534:452:96", + "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 11196, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11191, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11196, + "src": "3008:10:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3008:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11193, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11196, + "src": "3020:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3020:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3007:29:96" + }, + "returnParameters": { + "id": 11195, + "nodeType": "ParameterList", + "parameters": [], + "src": "3045:0:96" + }, + "scope": 11235, + "src": "2991:55:96", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11197, + "nodeType": "StructuredDocumentation", + "src": "3052:139:96", + "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "081812fc", + "id": 11204, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11199, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11204, + "src": "3217:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11198, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3217:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3216:17:96" + }, + "returnParameters": { + "id": 11203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11202, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11204, + "src": "3257:16:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3257:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3256:18:96" + }, + "scope": 11235, + "src": "3196:79:96", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11205, + "nodeType": "StructuredDocumentation", + "src": "3281:309:96", + "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event." + }, + "functionSelector": "a22cb465", + "id": 11212, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11207, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11212, + "src": "3622:16:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3622:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11209, + "mutability": "mutable", + "name": "_approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11212, + "src": "3640:14:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11208, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3640:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3621:34:96" + }, + "returnParameters": { + "id": 11211, + "nodeType": "ParameterList", + "parameters": [], + "src": "3664:0:96" + }, + "scope": 11235, + "src": "3595:70:96", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11213, + "nodeType": "StructuredDocumentation", + "src": "3671:138:96", + "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}" + }, + "functionSelector": "e985e9c5", + "id": 11222, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11215, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11222, + "src": "3840:13:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11214, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3840:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11217, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11222, + "src": "3855:16:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3855:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3839:33:96" + }, + "returnParameters": { + "id": 11221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11220, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11222, + "src": "3896:4:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11219, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3896:4:96", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3895:6:96" + }, + "scope": 11235, + "src": "3814:88:96", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11223, + "nodeType": "StructuredDocumentation", + "src": "3908:566:96", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "b88d4fde", + "id": 11234, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11225, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11234, + "src": "4505:12:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4505:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11227, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11234, + "src": "4519:10:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4519:7:96", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11229, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11234, + "src": "4531:15:96", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4531:7:96", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11231, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11234, + "src": "4548:19:96", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11230, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4548:5:96", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4504:64:96" + }, + "returnParameters": { + "id": 11233, + "nodeType": "ParameterList", + "parameters": [], + "src": "4577:0:96" + }, + "scope": 11235, + "src": "4479:99:96", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11236, + "src": "169:4411:96" + } + ], + "src": "33:4548:96" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC721Enumerable.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Enumerable.json new file mode 100644 index 0000000..059dea2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Enumerable.json @@ -0,0 +1,721 @@ +{ + "fileName": "IERC721Enumerable.sol", + "contractName": "IERC721Enumerable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n", + "sourcePath": "contracts/token/ERC721/IERC721Enumerable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC721Enumerable": [ + 11266 + ] + }, + "id": 11267, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11237, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:97" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 11238, + "nodeType": "ImportDirective", + "scope": 11267, + "sourceUnit": 11236, + "src": "58:23:97", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11240, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11235, + "src": "251:7:97", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$11235", + "typeString": "contract IERC721" + } + }, + "id": 11241, + "nodeType": "InheritanceSpecifier", + "src": "251:7:97" + } + ], + "contractDependencies": [ + 2048, + 11235 + ], + "contractKind": "interface", + "documentation": { + "id": 11239, + "nodeType": "StructuredDocumentation", + "src": "83:136:97", + "text": " @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 11266, + "linearizedBaseContracts": [ + 11266, + 11235, + 2048 + ], + "name": "IERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 11242, + "nodeType": "StructuredDocumentation", + "src": "266:82:97", + "text": " @dev Returns the total amount of tokens stored by the contract." + }, + "functionSelector": "18160ddd", + "id": 11247, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11243, + "nodeType": "ParameterList", + "parameters": [], + "src": "373:2:97" + }, + "returnParameters": { + "id": 11246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11245, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11247, + "src": "399:7:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "399:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "398:9:97" + }, + "scope": 11266, + "src": "353:55:97", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11248, + "nodeType": "StructuredDocumentation", + "src": "414:171:97", + "text": " @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens." + }, + "functionSelector": "2f745c59", + "id": 11257, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11250, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11257, + "src": "619:13:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:97", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11252, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11257, + "src": "634:13:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "634:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "618:30:97" + }, + "returnParameters": { + "id": 11256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11255, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11257, + "src": "672:15:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "672:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:17:97" + }, + "scope": 11266, + "src": "590:99:97", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11258, + "nodeType": "StructuredDocumentation", + "src": "695:164:97", + "text": " @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens." + }, + "functionSelector": "4f6ccce7", + "id": 11265, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11260, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11265, + "src": "886:13:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "886:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "885:15:97" + }, + "returnParameters": { + "id": 11264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11263, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11265, + "src": "924:7:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "924:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "923:9:97" + }, + "scope": 11266, + "src": "864:69:97", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11267, + "src": "220:715:97" + } + ], + "src": "33:903:97" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC721Full.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Full.json new file mode 100644 index 0000000..ac46204 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Full.json @@ -0,0 +1,576 @@ +{ + "fileName": "IERC721Full.sol", + "contractName": "IERC721Full", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Metadata.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, full implementation interface\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ncontract IERC721Full is IERC721, IERC721Enumerable, IERC721Metadata {\n // solhint-disable-previous-line no-empty-blocks\n}\n", + "sourcePath": "contracts/token/ERC721/IERC721Full.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/IERC721Full.sol", + "exportedSymbols": { + "IERC721Full": [ + 12109 + ] + }, + "id": 12110, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12099, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:139" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 12100, + "nodeType": "ImportDirective", + "scope": 12110, + "sourceUnit": 12071, + "src": "25:23:139", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 12101, + "nodeType": "ImportDirective", + "scope": 12110, + "sourceUnit": 12098, + "src": "49:33:139", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 12102, + "nodeType": "ImportDirective", + "scope": 12110, + "sourceUnit": 12133, + "src": "83:31:139", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 12103, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12070, + "src": "276:7:139", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$12070", + "typeString": "contract IERC721" + } + }, + "id": 12104, + "nodeType": "InheritanceSpecifier", + "src": "276:7:139" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 12105, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12097, + "src": "285:17:139", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$12097", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 12106, + "nodeType": "InheritanceSpecifier", + "src": "285:17:139" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 12107, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12132, + "src": "304:15:139", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$12132", + "typeString": "contract IERC721Metadata" + } + }, + "id": 12108, + "nodeType": "InheritanceSpecifier", + "src": "304:15:139" + } + ], + "contractDependencies": [ + 4862, + 12070, + 12097, + 12132 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, full implementation interface\n@dev See https://eips.ethereum.org/EIPS/eip-721", + "fullyImplemented": false, + "id": 12109, + "linearizedBaseContracts": [ + 12109, + 12132, + 12097, + 12070, + 4862 + ], + "name": "IERC721Full", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 12110, + "src": "252:124:139" + } + ], + "src": "0:377:139" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC721Metadata.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Metadata.json new file mode 100644 index 0000000..e66eeb0 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Metadata.json @@ -0,0 +1,652 @@ +{ + "fileName": "IERC721Metadata.sol", + "contractName": "IERC721Metadata", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n", + "sourcePath": "contracts/token/ERC721/IERC721Metadata.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/IERC721Metadata.sol", + "exportedSymbols": { + "IERC721Metadata": [ + 11293 + ] + }, + "id": 11294, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11268, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:98" + }, + { + "absolutePath": "contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 11269, + "nodeType": "ImportDirective", + "scope": 11294, + "sourceUnit": 11236, + "src": "58:23:98", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 11271, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 11235, + "src": "246:7:98", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$11235", + "typeString": "contract IERC721" + } + }, + "id": 11272, + "nodeType": "InheritanceSpecifier", + "src": "246:7:98" + } + ], + "contractDependencies": [ + 2048, + 11235 + ], + "contractKind": "interface", + "documentation": { + "id": 11270, + "nodeType": "StructuredDocumentation", + "src": "83:133:98", + "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 11293, + "linearizedBaseContracts": [ + 11293, + 11235, + 2048 + ], + "name": "IERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 11273, + "nodeType": "StructuredDocumentation", + "src": "261:58:98", + "text": " @dev Returns the token collection name." + }, + "functionSelector": "06fdde03", + "id": 11278, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11274, + "nodeType": "ParameterList", + "parameters": [], + "src": "337:2:98" + }, + "returnParameters": { + "id": 11277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11276, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11278, + "src": "363:13:98", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "363:6:98", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "362:15:98" + }, + "scope": 11293, + "src": "324:54:98", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11279, + "nodeType": "StructuredDocumentation", + "src": "384:60:98", + "text": " @dev Returns the token collection symbol." + }, + "functionSelector": "95d89b41", + "id": 11284, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11280, + "nodeType": "ParameterList", + "parameters": [], + "src": "464:2:98" + }, + "returnParameters": { + "id": 11283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11282, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11284, + "src": "490:13:98", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11281, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "490:6:98", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "489:15:98" + }, + "scope": 11293, + "src": "449:56:98", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 11285, + "nodeType": "StructuredDocumentation", + "src": "511:90:98", + "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token." + }, + "functionSelector": "c87b56dd", + "id": 11292, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11287, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11292, + "src": "624:15:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "624:7:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "623:17:98" + }, + "returnParameters": { + "id": 11291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11290, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11292, + "src": "664:13:98", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11289, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "664:6:98", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "663:15:98" + }, + "scope": 11293, + "src": "606:73:98", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11294, + "src": "217:464:98" + } + ], + "src": "33:649:98" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC721Receiver.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Receiver.json new file mode 100644 index 0000000..d9d912c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC721Receiver.json @@ -0,0 +1,281 @@ +{ + "fileName": "IERC721Receiver.sol", + "contractName": "IERC721Receiver", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\n */\n function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data)\n external returns (bytes4);\n}\n", + "sourcePath": "contracts/token/ERC721/IERC721Receiver.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 11311 + ] + }, + "id": 11312, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11295, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:99" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 11296, + "nodeType": "StructuredDocumentation", + "src": "58:152:99", + "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts." + }, + "fullyImplemented": false, + "id": 11311, + "linearizedBaseContracts": [ + 11311 + ], + "name": "IERC721Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 11297, + "nodeType": "StructuredDocumentation", + "src": "243:485:99", + "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`." + }, + "functionSelector": "150b7a02", + "id": 11310, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 11306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11299, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11310, + "src": "759:16:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "759:7:99", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11301, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11310, + "src": "777:12:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "777:7:99", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11303, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11310, + "src": "791:15:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "791:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11305, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11310, + "src": "808:19:99", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11304, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "808:5:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "758:70:99" + }, + "returnParameters": { + "id": 11309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11308, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 11310, + "src": "851:6:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 11307, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "851:6:99", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "850:8:99" + }, + "scope": 11311, + "src": "733:126:99", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11312, + "src": "211:650:99" + } + ], + "src": "33:829:99" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC777.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC777.json new file mode 100644 index 0000000..2417f85 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC777.json @@ -0,0 +1,2331 @@ +{ + "fileName": "IERC777.sol", + "contractName": "IERC777", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC777Token standard as defined in the EIP.\n *\n * This contract uses the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n * token holders and recipients react to token movements by using setting implementers\n * for the associated interfaces in said registry. See {IERC1820Registry} and\n * {ERC1820Implementer}.\n */\ninterface IERC777 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * For most token contracts, this value will equal 1.\n */\n function granularity() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address owner) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(address recipient, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * Emits an {AuthorizedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external;\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * Emits a {RevokedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external;\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n event Sent(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256 amount,\n bytes data,\n bytes operatorData\n );\n\n event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);\n\n event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);\n\n event AuthorizedOperator(address indexed operator, address indexed tokenHolder);\n\n event RevokedOperator(address indexed operator, address indexed tokenHolder);\n}\n", + "sourcePath": "contracts/token/ERC777/IERC777.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "granularity", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC777/IERC777.sol", + "exportedSymbols": { + "IERC777": [ + 12570 + ] + }, + "id": 12571, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12413, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:101" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 12414, + "nodeType": "StructuredDocumentation", + "src": "58:372:101", + "text": " @dev Interface of the ERC777Token standard as defined in the EIP.\n This contract uses the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n token holders and recipients react to token movements by using setting implementers\n for the associated interfaces in said registry. See {IERC1820Registry} and\n {ERC1820Implementer}." + }, + "fullyImplemented": false, + "id": 12570, + "linearizedBaseContracts": [ + 12570 + ], + "name": "IERC777", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 12415, + "nodeType": "StructuredDocumentation", + "src": "455:54:101", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 12420, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12416, + "nodeType": "ParameterList", + "parameters": [], + "src": "527:2:101" + }, + "returnParameters": { + "id": 12419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12418, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12420, + "src": "553:13:101", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12417, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "553:6:101", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "552:15:101" + }, + "scope": 12570, + "src": "514:54:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12421, + "nodeType": "StructuredDocumentation", + "src": "574:102:101", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 12426, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12422, + "nodeType": "ParameterList", + "parameters": [], + "src": "696:2:101" + }, + "returnParameters": { + "id": 12425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12424, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12426, + "src": "722:13:101", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 12423, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "722:6:101", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "721:15:101" + }, + "scope": 12570, + "src": "681:56:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12427, + "nodeType": "StructuredDocumentation", + "src": "743:287:101", + "text": " @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n For most token contracts, this value will equal 1." + }, + "functionSelector": "556f0dc7", + "id": 12432, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "granularity", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12428, + "nodeType": "ParameterList", + "parameters": [], + "src": "1055:2:101" + }, + "returnParameters": { + "id": 12431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12432, + "src": "1081:7:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1081:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1080:9:101" + }, + "scope": 12570, + "src": "1035:55:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12433, + "nodeType": "StructuredDocumentation", + "src": "1096:66:101", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 12438, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12434, + "nodeType": "ParameterList", + "parameters": [], + "src": "1187:2:101" + }, + "returnParameters": { + "id": 12437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12436, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12438, + "src": "1213:7:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12435, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1213:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1212:9:101" + }, + "scope": 12570, + "src": "1167:55:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12439, + "nodeType": "StructuredDocumentation", + "src": "1228:83:101", + "text": " @dev Returns the amount of tokens owned by an account (`owner`)." + }, + "functionSelector": "70a08231", + "id": 12446, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12441, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12446, + "src": "1335:13:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1335:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1334:15:101" + }, + "returnParameters": { + "id": 12445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12444, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12446, + "src": "1373:7:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1373:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1372:9:101" + }, + "scope": 12570, + "src": "1316:66:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12447, + "nodeType": "StructuredDocumentation", + "src": "1388:585:101", + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface." + }, + "functionSelector": "9bd9bbc6", + "id": 12456, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "send", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12449, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12456, + "src": "1992:17:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1992:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12451, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12456, + "src": "2011:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2011:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12453, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12456, + "src": "2027:19:101", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12452, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2027:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1991:56:101" + }, + "returnParameters": { + "id": 12455, + "nodeType": "ParameterList", + "parameters": [], + "src": "2056:0:101" + }, + "scope": 12570, + "src": "1978:79:101", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12457, + "nodeType": "StructuredDocumentation", + "src": "2063:404:101", + "text": " @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - the caller must have at least `amount` tokens." + }, + "functionSelector": "fe9d9303", + "id": 12464, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12459, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12464, + "src": "2486:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2486:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12461, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12464, + "src": "2502:19:101", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12460, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2502:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2485:37:101" + }, + "returnParameters": { + "id": 12463, + "nodeType": "ParameterList", + "parameters": [], + "src": "2531:0:101" + }, + "scope": 12570, + "src": "2472:60:101", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12465, + "nodeType": "StructuredDocumentation", + "src": "2538:249:101", + "text": " @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}." + }, + "functionSelector": "d95b6371", + "id": 12474, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isOperatorFor", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12467, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12474, + "src": "2815:16:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2815:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12469, + "mutability": "mutable", + "name": "tokenHolder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12474, + "src": "2833:19:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2833:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2814:39:101" + }, + "returnParameters": { + "id": 12473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12472, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12474, + "src": "2877:4:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12471, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2877:4:101", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2876:6:101" + }, + "scope": 12570, + "src": "2792:91:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12475, + "nodeType": "StructuredDocumentation", + "src": "2889:233:101", + "text": " @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n Emits an {AuthorizedOperator} event.\n Requirements\n - `operator` cannot be calling address." + }, + "functionSelector": "959b8c3f", + "id": 12480, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "authorizeOperator", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12477, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12480, + "src": "3154:16:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3154:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3153:18:101" + }, + "returnParameters": { + "id": 12479, + "nodeType": "ParameterList", + "parameters": [], + "src": "3180:0:101" + }, + "scope": 12570, + "src": "3127:54:101", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12481, + "nodeType": "StructuredDocumentation", + "src": "3187:261:101", + "text": " @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n Emits a {RevokedOperator} event.\n Requirements\n - `operator` cannot be calling address." + }, + "functionSelector": "fad8b32a", + "id": 12486, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "revokeOperator", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12483, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12486, + "src": "3477:16:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3477:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3476:18:101" + }, + "returnParameters": { + "id": 12485, + "nodeType": "ParameterList", + "parameters": [], + "src": "3503:0:101" + }, + "scope": 12570, + "src": "3453:51:101", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12487, + "nodeType": "StructuredDocumentation", + "src": "3510:338:101", + "text": " @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false." + }, + "functionSelector": "06e48538", + "id": 12493, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "defaultOperators", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12488, + "nodeType": "ParameterList", + "parameters": [], + "src": "3878:2:101" + }, + "returnParameters": { + "id": 12492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12491, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12493, + "src": "3904:16:101", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 12489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3904:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12490, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3904:9:101", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3903:18:101" + }, + "scope": 12570, + "src": "3853:69:101", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12494, + "nodeType": "StructuredDocumentation", + "src": "3928:714:101", + "text": " @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface." + }, + "functionSelector": "62ad1b83", + "id": 12507, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "operatorSend", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12496, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12507, + "src": "4678:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4678:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12498, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12507, + "src": "4702:17:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4702:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12500, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12507, + "src": "4729:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4729:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12502, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12507, + "src": "4753:19:101", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12501, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4753:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12504, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12507, + "src": "4782:27:101", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12503, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4782:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4668:147:101" + }, + "returnParameters": { + "id": 12506, + "nodeType": "ParameterList", + "parameters": [], + "src": "4824:0:101" + }, + "scope": 12570, + "src": "4647:178:101", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 12508, + "nodeType": "StructuredDocumentation", + "src": "4831:532:101", + "text": " @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`." + }, + "functionSelector": "fc673c4f", + "id": 12519, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "operatorBurn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12510, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12519, + "src": "5399:15:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5399:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12512, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12519, + "src": "5424:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5424:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12514, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12519, + "src": "5448:19:101", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12513, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5448:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12516, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12519, + "src": "5477:27:101", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5477:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5389:121:101" + }, + "returnParameters": { + "id": 12518, + "nodeType": "ParameterList", + "parameters": [], + "src": "5519:0:101" + }, + "scope": 12570, + "src": "5368:152:101", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 12533, + "name": "Sent", + "nodeType": "EventDefinition", + "parameters": { + "id": 12532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12521, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12533, + "src": "5546:24:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12520, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5546:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12523, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12533, + "src": "5580:20:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5580:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12525, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12533, + "src": "5610:18:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5610:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12527, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12533, + "src": "5638:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5638:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12529, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12533, + "src": "5662:10:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12528, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5662:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12531, + "indexed": false, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12533, + "src": "5682:18:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12530, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5682:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5536:170:101" + }, + "src": "5526:181:101" + }, + { + "anonymous": false, + "documentation": null, + "id": 12545, + "name": "Minted", + "nodeType": "EventDefinition", + "parameters": { + "id": 12544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12535, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12545, + "src": "5726:24:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5726:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12537, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12545, + "src": "5752:18:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12536, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5752:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12539, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12545, + "src": "5772:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5772:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12541, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12545, + "src": "5788:10:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12540, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5788:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12543, + "indexed": false, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12545, + "src": "5800:18:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12542, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5800:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5725:94:101" + }, + "src": "5713:107:101" + }, + { + "anonymous": false, + "documentation": null, + "id": 12557, + "name": "Burned", + "nodeType": "EventDefinition", + "parameters": { + "id": 12556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12547, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12557, + "src": "5839:24:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5839:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12549, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12557, + "src": "5865:20:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5865:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12551, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12557, + "src": "5887:14:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5887:7:101", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12553, + "indexed": false, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12557, + "src": "5903:10:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12552, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5903:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12555, + "indexed": false, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12557, + "src": "5915:18:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12554, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5915:5:101", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5838:96:101" + }, + "src": "5826:109:101" + }, + { + "anonymous": false, + "documentation": null, + "id": 12563, + "name": "AuthorizedOperator", + "nodeType": "EventDefinition", + "parameters": { + "id": 12562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12559, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12563, + "src": "5966:24:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12558, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5966:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12561, + "indexed": true, + "mutability": "mutable", + "name": "tokenHolder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12563, + "src": "5992:27:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5992:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5965:55:101" + }, + "src": "5941:80:101" + }, + { + "anonymous": false, + "documentation": null, + "id": 12569, + "name": "RevokedOperator", + "nodeType": "EventDefinition", + "parameters": { + "id": 12568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12565, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12569, + "src": "6049:24:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12564, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6049:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12567, + "indexed": true, + "mutability": "mutable", + "name": "tokenHolder", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12569, + "src": "6075:27:101", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12566, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6075:7:101", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6048:55:101" + }, + "src": "6027:77:101" + } + ], + "scope": 12571, + "src": "431:5675:101" + } + ], + "src": "33:6074:101" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC777Recipient.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC777Recipient.json new file mode 100644 index 0000000..cf0e74e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC777Recipient.json @@ -0,0 +1,313 @@ +{ + "fileName": "IERC777Recipient.sol", + "contractName": "IERC777Recipient", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC777TokensRecipient standard as defined in the EIP.\n *\n * Accounts can be notified of {IERC777} tokens being sent to them by having a\n * contract implement this interface (contract holders can be their own\n * implementer) and registering it on the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n *\n * See {IERC1820Registry} and {ERC1820Implementer}.\n */\ninterface IERC777Recipient {\n /**\n * @dev Called by an {IERC777} token contract whenever tokens are being\n * moved or created into a registered account (`to`). The type of operation\n * is conveyed by `from` being the zero address or not.\n *\n * This call occurs _after_ the token contract's state is updated, so\n * {IERC777-balanceOf}, etc., can be used to query the post-operation state.\n *\n * This function may revert to prevent the operation from being executed.\n */\n function tokensReceived(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes calldata userData,\n bytes calldata operatorData\n ) external;\n}\n", + "sourcePath": "contracts/token/ERC777/IERC777Recipient.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC777/IERC777Recipient.sol", + "exportedSymbols": { + "IERC777Recipient": [ + 12590 + ] + }, + "id": 12591, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12572, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:102" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 12573, + "nodeType": "StructuredDocumentation", + "src": "58:406:102", + "text": " @dev Interface of the ERC777TokensRecipient standard as defined in the EIP.\n Accounts can be notified of {IERC777} tokens being sent to them by having a\n contract implement this interface (contract holders can be their own\n implementer) and registering it on the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n See {IERC1820Registry} and {ERC1820Implementer}." + }, + "fullyImplemented": false, + "id": 12590, + "linearizedBaseContracts": [ + 12590 + ], + "name": "IERC777Recipient", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 12574, + "nodeType": "StructuredDocumentation", + "src": "498:474:102", + "text": " @dev Called by an {IERC777} token contract whenever tokens are being\n moved or created into a registered account (`to`). The type of operation\n is conveyed by `from` being the zero address or not.\n This call occurs _after_ the token contract's state is updated, so\n {IERC777-balanceOf}, etc., can be used to query the post-operation state.\n This function may revert to prevent the operation from being executed." + }, + "functionSelector": "0023de29", + "id": 12589, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokensReceived", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12576, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12589, + "src": "1010:16:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1010:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12578, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12589, + "src": "1036:12:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1036:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12580, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12589, + "src": "1058:10:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1058:7:102", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12582, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12589, + "src": "1078:14:102", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1078:7:102", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12584, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12589, + "src": "1102:23:102", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12583, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1102:5:102", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12586, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12589, + "src": "1135:27:102", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12585, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1135:5:102", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1000:168:102" + }, + "returnParameters": { + "id": 12588, + "nodeType": "ParameterList", + "parameters": [], + "src": "1177:0:102" + }, + "scope": 12590, + "src": "977:201:102", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 12591, + "src": "465:715:102" + } + ], + "src": "33:1148:102" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IERC777Sender.json b/node_modules/@openzeppelin/contracts/build/contracts/IERC777Sender.json new file mode 100644 index 0000000..78c5b4c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IERC777Sender.json @@ -0,0 +1,313 @@ +{ + "fileName": "IERC777Sender.sol", + "contractName": "IERC777Sender", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC777TokensSender standard as defined in the EIP.\n *\n * {IERC777} Token holders can be notified of operations performed on their\n * tokens by having a contract implement this interface (contract holders can be\n * their own implementer) and registering it on the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n *\n * See {IERC1820Registry} and {ERC1820Implementer}.\n */\ninterface IERC777Sender {\n /**\n * @dev Called by an {IERC777} token contract whenever a registered holder's\n * (`from`) tokens are about to be moved or destroyed. The type of operation\n * is conveyed by `to` being the zero address or not.\n *\n * This call occurs _before_ the token contract's state is updated, so\n * {IERC777-balanceOf}, etc., can be used to query the pre-operation state.\n *\n * This function may revert to prevent the operation from being executed.\n */\n function tokensToSend(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes calldata userData,\n bytes calldata operatorData\n ) external;\n}\n", + "sourcePath": "contracts/token/ERC777/IERC777Sender.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "tokensToSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC777/IERC777Sender.sol", + "exportedSymbols": { + "IERC777Sender": [ + 12610 + ] + }, + "id": 12611, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12592, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:103" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 12593, + "nodeType": "StructuredDocumentation", + "src": "58:420:103", + "text": " @dev Interface of the ERC777TokensSender standard as defined in the EIP.\n {IERC777} Token holders can be notified of operations performed on their\n tokens by having a contract implement this interface (contract holders can be\n their own implementer) and registering it on the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n See {IERC1820Registry} and {ERC1820Implementer}." + }, + "fullyImplemented": false, + "id": 12610, + "linearizedBaseContracts": [ + 12610 + ], + "name": "IERC777Sender", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 12594, + "nodeType": "StructuredDocumentation", + "src": "509:478:103", + "text": " @dev Called by an {IERC777} token contract whenever a registered holder's\n (`from`) tokens are about to be moved or destroyed. The type of operation\n is conveyed by `to` being the zero address or not.\n This call occurs _before_ the token contract's state is updated, so\n {IERC777-balanceOf}, etc., can be used to query the pre-operation state.\n This function may revert to prevent the operation from being executed." + }, + "functionSelector": "75ab9782", + "id": 12609, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokensToSend", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 12607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12596, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12609, + "src": "1023:16:103", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12595, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1023:7:103", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12598, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12609, + "src": "1049:12:103", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1049:7:103", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12600, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12609, + "src": "1071:10:103", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1071:7:103", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12602, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12609, + "src": "1091:14:103", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12601, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1091:7:103", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12604, + "mutability": "mutable", + "name": "userData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12609, + "src": "1115:23:103", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12603, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1115:5:103", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12606, + "mutability": "mutable", + "name": "operatorData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 12609, + "src": "1148:27:103", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12605, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1148:5:103", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1013:168:103" + }, + "returnParameters": { + "id": 12608, + "nodeType": "ParameterList", + "parameters": [], + "src": "1190:0:103" + }, + "scope": 12610, + "src": "992:199:103", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 12611, + "src": "479:714:103" + } + ], + "src": "33:1161:103" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IRelayHub.json b/node_modules/@openzeppelin/contracts/build/contracts/IRelayHub.json new file mode 100644 index 0000000..cc47a91 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IRelayHub.json @@ -0,0 +1,3986 @@ +{ + "fileName": "IRelayHub.sol", + "contractName": "IRelayHub", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface for `RelayHub`, the core contract of the GSN. Users should not need to interact with this contract\n * directly.\n *\n * See the https://github.com/OpenZeppelin/openzeppelin-gsn-helpers[OpenZeppelin GSN helpers] for more information on\n * how to deploy an instance of `RelayHub` on your local test network.\n */\ninterface IRelayHub {\n // Relay management\n\n /**\n * @dev Adds stake to a relay and sets its `unstakeDelay`. If the relay does not exist, it is created, and the caller\n * of this function becomes its owner. If the relay already exists, only the owner can call this function. A relay\n * cannot be its own owner.\n *\n * All Ether in this function call will be added to the relay's stake.\n * Its unstake delay will be assigned to `unstakeDelay`, but the new value must be greater or equal to the current one.\n *\n * Emits a {Staked} event.\n */\n function stake(address relayaddr, uint256 unstakeDelay) external payable;\n\n /**\n * @dev Emitted when a relay's stake or unstakeDelay are increased\n */\n event Staked(address indexed relay, uint256 stake, uint256 unstakeDelay);\n\n /**\n * @dev Registers the caller as a relay.\n * The relay must be staked for, and not be a contract (i.e. this function must be called directly from an EOA).\n *\n * This function can be called multiple times, emitting new {RelayAdded} events. Note that the received\n * `transactionFee` is not enforced by {relayCall}.\n *\n * Emits a {RelayAdded} event.\n */\n function registerRelay(uint256 transactionFee, string calldata url) external;\n\n /**\n * @dev Emitted when a relay is registered or re-registerd. Looking at these events (and filtering out\n * {RelayRemoved} events) lets a client discover the list of available relays.\n */\n event RelayAdded(address indexed relay, address indexed owner, uint256 transactionFee, uint256 stake, uint256 unstakeDelay, string url);\n\n /**\n * @dev Removes (deregisters) a relay. Unregistered (but staked for) relays can also be removed.\n *\n * Can only be called by the owner of the relay. After the relay's `unstakeDelay` has elapsed, {unstake} will be\n * callable.\n *\n * Emits a {RelayRemoved} event.\n */\n function removeRelayByOwner(address relay) external;\n\n /**\n * @dev Emitted when a relay is removed (deregistered). `unstakeTime` is the time when unstake will be callable.\n */\n event RelayRemoved(address indexed relay, uint256 unstakeTime);\n\n /** Deletes the relay from the system, and gives back its stake to the owner.\n *\n * Can only be called by the relay owner, after `unstakeDelay` has elapsed since {removeRelayByOwner} was called.\n *\n * Emits an {Unstaked} event.\n */\n function unstake(address relay) external;\n\n /**\n * @dev Emitted when a relay is unstaked for, including the returned stake.\n */\n event Unstaked(address indexed relay, uint256 stake);\n\n // States a relay can be in\n enum RelayState {\n Unknown, // The relay is unknown to the system: it has never been staked for\n Staked, // The relay has been staked for, but it is not yet active\n Registered, // The relay has registered itself, and is active (can relay calls)\n Removed // The relay has been removed by its owner and can no longer relay calls. It must wait for its unstakeDelay to elapse before it can unstake\n }\n\n /**\n * @dev Returns a relay's status. Note that relays can be deleted when unstaked or penalized, causing this function\n * to return an empty entry.\n */\n function getRelay(address relay) external view returns (uint256 totalStake, uint256 unstakeDelay, uint256 unstakeTime, address payable owner, RelayState state);\n\n // Balance management\n\n /**\n * @dev Deposits Ether for a contract, so that it can receive (and pay for) relayed transactions.\n *\n * Unused balance can only be withdrawn by the contract itself, by calling {withdraw}.\n *\n * Emits a {Deposited} event.\n */\n function depositFor(address target) external payable;\n\n /**\n * @dev Emitted when {depositFor} is called, including the amount and account that was funded.\n */\n event Deposited(address indexed recipient, address indexed from, uint256 amount);\n\n /**\n * @dev Returns an account's deposits. These can be either a contracts's funds, or a relay owner's revenue.\n */\n function balanceOf(address target) external view returns (uint256);\n\n /**\n * Withdraws from an account's balance, sending it back to it. Relay owners call this to retrieve their revenue, and\n * contracts can use it to reduce their funding.\n *\n * Emits a {Withdrawn} event.\n */\n function withdraw(uint256 amount, address payable dest) external;\n\n /**\n * @dev Emitted when an account withdraws funds from `RelayHub`.\n */\n event Withdrawn(address indexed account, address indexed dest, uint256 amount);\n\n // Relaying\n\n /**\n * @dev Checks if the `RelayHub` will accept a relayed operation.\n * Multiple things must be true for this to happen:\n * - all arguments must be signed for by the sender (`from`)\n * - the sender's nonce must be the current one\n * - the recipient must accept this transaction (via {acceptRelayedCall})\n *\n * Returns a `PreconditionCheck` value (`OK` when the transaction can be relayed), or a recipient-specific error\n * code if it returns one in {acceptRelayedCall}.\n */\n function canRelay(\n address relay,\n address from,\n address to,\n bytes calldata encodedFunction,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256 gasLimit,\n uint256 nonce,\n bytes calldata signature,\n bytes calldata approvalData\n ) external view returns (uint256 status, bytes memory recipientContext);\n\n // Preconditions for relaying, checked by canRelay and returned as the corresponding numeric values.\n enum PreconditionCheck {\n OK, // All checks passed, the call can be relayed\n WrongSignature, // The transaction to relay is not signed by requested sender\n WrongNonce, // The provided nonce has already been used by the sender\n AcceptRelayedCallReverted, // The recipient rejected this call via acceptRelayedCall\n InvalidRecipientStatusCode // The recipient returned an invalid (reserved) status code\n }\n\n /**\n * @dev Relays a transaction.\n *\n * For this to succeed, multiple conditions must be met:\n * - {canRelay} must `return PreconditionCheck.OK`\n * - the sender must be a registered relay\n * - the transaction's gas price must be larger or equal to the one that was requested by the sender\n * - the transaction must have enough gas to not run out of gas if all internal transactions (calls to the\n * recipient) use all gas available to them\n * - the recipient must have enough balance to pay the relay for the worst-case scenario (i.e. when all gas is\n * spent)\n *\n * If all conditions are met, the call will be relayed and the recipient charged. {preRelayedCall}, the encoded\n * function and {postRelayedCall} will be called in that order.\n *\n * Parameters:\n * - `from`: the client originating the request\n * - `to`: the target {IRelayRecipient} contract\n * - `encodedFunction`: the function call to relay, including data\n * - `transactionFee`: fee (%) the relay takes over actual gas cost\n * - `gasPrice`: gas price the client is willing to pay\n * - `gasLimit`: gas to forward when calling the encoded function\n * - `nonce`: client's nonce\n * - `signature`: client's signature over all previous params, plus the relay and RelayHub addresses\n * - `approvalData`: dapp-specific data forwared to {acceptRelayedCall}. This value is *not* verified by the\n * `RelayHub`, but it still can be used for e.g. a signature.\n *\n * Emits a {TransactionRelayed} event.\n */\n function relayCall(\n address from,\n address to,\n bytes calldata encodedFunction,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256 gasLimit,\n uint256 nonce,\n bytes calldata signature,\n bytes calldata approvalData\n ) external;\n\n /**\n * @dev Emitted when an attempt to relay a call failed.\n *\n * This can happen due to incorrect {relayCall} arguments, or the recipient not accepting the relayed call. The\n * actual relayed call was not executed, and the recipient not charged.\n *\n * The `reason` parameter contains an error code: values 1-10 correspond to `PreconditionCheck` entries, and values\n * over 10 are custom recipient error codes returned from {acceptRelayedCall}.\n */\n event CanRelayFailed(address indexed relay, address indexed from, address indexed to, bytes4 selector, uint256 reason);\n\n /**\n * @dev Emitted when a transaction is relayed.\n * Useful when monitoring a relay's operation and relayed calls to a contract\n *\n * Note that the actual encoded function might be reverted: this is indicated in the `status` parameter.\n *\n * `charge` is the Ether value deducted from the recipient's balance, paid to the relay's owner.\n */\n event TransactionRelayed(address indexed relay, address indexed from, address indexed to, bytes4 selector, RelayCallStatus status, uint256 charge);\n\n // Reason error codes for the TransactionRelayed event\n enum RelayCallStatus {\n OK, // The transaction was successfully relayed and execution successful - never included in the event\n RelayedCallFailed, // The transaction was relayed, but the relayed call failed\n PreRelayedFailed, // The transaction was not relayed due to preRelatedCall reverting\n PostRelayedFailed, // The transaction was relayed and reverted due to postRelatedCall reverting\n RecipientBalanceChanged // The transaction was relayed and reverted due to the recipient's balance changing\n }\n\n /**\n * @dev Returns how much gas should be forwarded to a call to {relayCall}, in order to relay a transaction that will\n * spend up to `relayedCallStipend` gas.\n */\n function requiredGas(uint256 relayedCallStipend) external view returns (uint256);\n\n /**\n * @dev Returns the maximum recipient charge, given the amount of gas forwarded, gas price and relay fee.\n */\n function maxPossibleCharge(uint256 relayedCallStipend, uint256 gasPrice, uint256 transactionFee) external view returns (uint256);\n\n // Relay penalization.\n // Any account can penalize relays, removing them from the system immediately, and rewarding the\n // reporter with half of the relay's stake. The other half is burned so that, even if the relay penalizes itself, it\n // still loses half of its stake.\n\n /**\n * @dev Penalize a relay that signed two transactions using the same nonce (making only the first one valid) and\n * different data (gas price, gas limit, etc. may be different).\n *\n * The (unsigned) transaction data and signature for both transactions must be provided.\n */\n function penalizeRepeatedNonce(bytes calldata unsignedTx1, bytes calldata signature1, bytes calldata unsignedTx2, bytes calldata signature2) external;\n\n /**\n * @dev Penalize a relay that sent a transaction that didn't target ``RelayHub``'s {registerRelay} or {relayCall}.\n */\n function penalizeIllegalTransaction(bytes calldata unsignedTx, bytes calldata signature) external;\n\n /**\n * @dev Emitted when a relay is penalized.\n */\n event Penalized(address indexed relay, address sender, uint256 amount);\n\n /**\n * @dev Returns an account's nonce in `RelayHub`.\n */\n function getNonce(address from) external view returns (uint256);\n}\n\n", + "sourcePath": "contracts/GSN/IRelayHub.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reason", + "type": "uint256" + } + ], + "name": "CanRelayFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Penalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stake", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unstakeDelay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "url", + "type": "string" + } + ], + "name": "RelayAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unstakeTime", + "type": "uint256" + } + ], + "name": "RelayRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stake", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unstakeDelay", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "enum IRelayHub.RelayCallStatus", + "name": "status", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "charge", + "type": "uint256" + } + ], + "name": "TransactionRelayed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stake", + "type": "uint256" + } + ], + "name": "Unstaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dest", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + } + ], + "name": "canRelay", + "outputs": [ + { + "internalType": "uint256", + "name": "status", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "recipientContext", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + } + ], + "name": "getNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + } + ], + "name": "getRelay", + "outputs": [ + { + "internalType": "uint256", + "name": "totalStake", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unstakeDelay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unstakeTime", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "owner", + "type": "address" + }, + { + "internalType": "enum IRelayHub.RelayState", + "name": "state", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "relayedCallStipend", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + } + ], + "name": "maxPossibleCharge", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "unsignedTx", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "penalizeIllegalTransaction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "unsignedTx1", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature1", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "unsignedTx2", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature2", + "type": "bytes" + } + ], + "name": "penalizeRepeatedNonce", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "string", + "name": "url", + "type": "string" + } + ], + "name": "registerRelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + } + ], + "name": "relayCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + } + ], + "name": "removeRelayByOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "relayedCallStipend", + "type": "uint256" + } + ], + "name": "requiredGas", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayaddr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "unstakeDelay", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + } + ], + "name": "unstake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "dest", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/IRelayHub.sol", + "exportedSymbols": { + "IRelayHub": [ + 1128 + ] + }, + "id": 1129, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 852, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:4" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 853, + "nodeType": "StructuredDocumentation", + "src": "58:329:4", + "text": " @dev Interface for `RelayHub`, the core contract of the GSN. Users should not need to interact with this contract\n directly.\n See the https://github.com/OpenZeppelin/openzeppelin-gsn-helpers[OpenZeppelin GSN helpers] for more information on\n how to deploy an instance of `RelayHub` on your local test network." + }, + "fullyImplemented": false, + "id": 1128, + "linearizedBaseContracts": [ + 1128 + ], + "name": "IRelayHub", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 854, + "nodeType": "StructuredDocumentation", + "src": "439:528:4", + "text": " @dev Adds stake to a relay and sets its `unstakeDelay`. If the relay does not exist, it is created, and the caller\n of this function becomes its owner. If the relay already exists, only the owner can call this function. A relay\n cannot be its own owner.\n All Ether in this function call will be added to the relay's stake.\n Its unstake delay will be assigned to `unstakeDelay`, but the new value must be greater or equal to the current one.\n Emits a {Staked} event." + }, + "functionSelector": "adc9772e", + "id": 861, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "stake", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "mutability": "mutable", + "name": "relayaddr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 861, + "src": "987:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 855, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "987:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 858, + "mutability": "mutable", + "name": "unstakeDelay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 861, + "src": "1006:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1006:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "986:41:4" + }, + "returnParameters": { + "id": 860, + "nodeType": "ParameterList", + "parameters": [], + "src": "1044:0:4" + }, + "scope": 1128, + "src": "972:73:4", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 862, + "nodeType": "StructuredDocumentation", + "src": "1051:82:4", + "text": " @dev Emitted when a relay's stake or unstakeDelay are increased" + }, + "id": 870, + "name": "Staked", + "nodeType": "EventDefinition", + "parameters": { + "id": 869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 864, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 870, + "src": "1151:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1151:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 866, + "indexed": false, + "mutability": "mutable", + "name": "stake", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 870, + "src": "1174:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 865, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1174:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 868, + "indexed": false, + "mutability": "mutable", + "name": "unstakeDelay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 870, + "src": "1189:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1189:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1150:60:4" + }, + "src": "1138:73:4" + }, + { + "body": null, + "documentation": { + "id": 871, + "nodeType": "StructuredDocumentation", + "src": "1217:386:4", + "text": " @dev Registers the caller as a relay.\n The relay must be staked for, and not be a contract (i.e. this function must be called directly from an EOA).\n This function can be called multiple times, emitting new {RelayAdded} events. Note that the received\n `transactionFee` is not enforced by {relayCall}.\n Emits a {RelayAdded} event." + }, + "functionSelector": "1166073a", + "id": 878, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "registerRelay", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 873, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 878, + "src": "1631:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 872, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1631:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 875, + "mutability": "mutable", + "name": "url", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 878, + "src": "1655:19:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 874, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1655:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1630:45:4" + }, + "returnParameters": { + "id": 877, + "nodeType": "ParameterList", + "parameters": [], + "src": "1684:0:4" + }, + "scope": 1128, + "src": "1608:77:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 879, + "nodeType": "StructuredDocumentation", + "src": "1691:201:4", + "text": " @dev Emitted when a relay is registered or re-registerd. Looking at these events (and filtering out\n {RelayRemoved} events) lets a client discover the list of available relays." + }, + "id": 893, + "name": "RelayAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 881, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 893, + "src": "1914:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 880, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1914:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 883, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 893, + "src": "1937:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 882, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1937:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 885, + "indexed": false, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 893, + "src": "1960:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1960:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 887, + "indexed": false, + "mutability": "mutable", + "name": "stake", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 893, + "src": "1984:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 886, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1984:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 889, + "indexed": false, + "mutability": "mutable", + "name": "unstakeDelay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 893, + "src": "1999:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1999:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 891, + "indexed": false, + "mutability": "mutable", + "name": "url", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 893, + "src": "2021:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 890, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2021:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1913:119:4" + }, + "src": "1897:136:4" + }, + { + "body": null, + "documentation": { + "id": 894, + "nodeType": "StructuredDocumentation", + "src": "2039:297:4", + "text": " @dev Removes (deregisters) a relay. Unregistered (but staked for) relays can also be removed.\n Can only be called by the owner of the relay. After the relay's `unstakeDelay` has elapsed, {unstake} will be\n callable.\n Emits a {RelayRemoved} event." + }, + "functionSelector": "c3e712f2", + "id": 899, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeRelayByOwner", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 896, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 899, + "src": "2369:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2369:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2368:15:4" + }, + "returnParameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [], + "src": "2392:0:4" + }, + "scope": 1128, + "src": "2341:52:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 900, + "nodeType": "StructuredDocumentation", + "src": "2399:128:4", + "text": " @dev Emitted when a relay is removed (deregistered). `unstakeTime` is the time when unstake will be callable." + }, + "id": 906, + "name": "RelayRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 902, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 906, + "src": "2551:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2551:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 904, + "indexed": false, + "mutability": "mutable", + "name": "unstakeTime", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 906, + "src": "2574:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2574:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2550:44:4" + }, + "src": "2532:63:4" + }, + { + "body": null, + "documentation": { + "id": 907, + "nodeType": "StructuredDocumentation", + "src": "2601:251:4", + "text": "Deletes the relay from the system, and gives back its stake to the owner.\n Can only be called by the relay owner, after `unstakeDelay` has elapsed since {removeRelayByOwner} was called.\n Emits an {Unstaked} event." + }, + "functionSelector": "f2888dbb", + "id": 912, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "unstake", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 909, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 912, + "src": "2874:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2874:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2873:15:4" + }, + "returnParameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [], + "src": "2897:0:4" + }, + "scope": 1128, + "src": "2857:41:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 913, + "nodeType": "StructuredDocumentation", + "src": "2904:91:4", + "text": " @dev Emitted when a relay is unstaked for, including the returned stake." + }, + "id": 919, + "name": "Unstaked", + "nodeType": "EventDefinition", + "parameters": { + "id": 918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 915, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 919, + "src": "3015:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 914, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3015:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 917, + "indexed": false, + "mutability": "mutable", + "name": "stake", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 919, + "src": "3038:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 916, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3038:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3014:38:4" + }, + "src": "3000:53:4" + }, + { + "canonicalName": "IRelayHub.RelayState", + "id": 924, + "members": [ + { + "id": 920, + "name": "Unknown", + "nodeType": "EnumValue", + "src": "3117:7:4" + }, + { + "id": 921, + "name": "Staked", + "nodeType": "EnumValue", + "src": "3202:6:4" + }, + { + "id": 922, + "name": "Registered", + "nodeType": "EnumValue", + "src": "3277:10:4" + }, + { + "id": 923, + "name": "Removed", + "nodeType": "EnumValue", + "src": "3365:7:4" + } + ], + "name": "RelayState", + "nodeType": "EnumDefinition", + "src": "3091:430:4" + }, + { + "body": null, + "documentation": { + "id": 925, + "nodeType": "StructuredDocumentation", + "src": "3527:164:4", + "text": " @dev Returns a relay's status. Note that relays can be deleted when unstaked or penalized, causing this function\n to return an empty entry." + }, + "functionSelector": "8d851460", + "id": 940, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRelay", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 927, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 940, + "src": "3714:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 926, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3714:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3713:15:4" + }, + "returnParameters": { + "id": 939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 930, + "mutability": "mutable", + "name": "totalStake", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 940, + "src": "3752:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3752:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 932, + "mutability": "mutable", + "name": "unstakeDelay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 940, + "src": "3772:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3772:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 934, + "mutability": "mutable", + "name": "unstakeTime", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 940, + "src": "3794:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 933, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3794:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 936, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 940, + "src": "3815:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3815:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 938, + "mutability": "mutable", + "name": "state", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 940, + "src": "3838:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RelayState_$924", + "typeString": "enum IRelayHub.RelayState" + }, + "typeName": { + "contractScope": null, + "id": 937, + "name": "RelayState", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 924, + "src": "3838:10:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RelayState_$924", + "typeString": "enum IRelayHub.RelayState" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3751:104:4" + }, + "scope": 1128, + "src": "3696:160:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 941, + "nodeType": "StructuredDocumentation", + "src": "3889:252:4", + "text": " @dev Deposits Ether for a contract, so that it can receive (and pay for) relayed transactions.\n Unused balance can only be withdrawn by the contract itself, by calling {withdraw}.\n Emits a {Deposited} event." + }, + "functionSelector": "aa67c919", + "id": 946, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "depositFor", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 943, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 946, + "src": "4166:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4166:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4165:16:4" + }, + "returnParameters": { + "id": 945, + "nodeType": "ParameterList", + "parameters": [], + "src": "4198:0:4" + }, + "scope": 1128, + "src": "4146:53:4", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 947, + "nodeType": "StructuredDocumentation", + "src": "4205:110:4", + "text": " @dev Emitted when {depositFor} is called, including the amount and account that was funded." + }, + "id": 955, + "name": "Deposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 949, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 955, + "src": "4336:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4336:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 951, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 955, + "src": "4363:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 950, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4363:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 953, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 955, + "src": "4385:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4385:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4335:65:4" + }, + "src": "4320:81:4" + }, + { + "body": null, + "documentation": { + "id": 956, + "nodeType": "StructuredDocumentation", + "src": "4407:123:4", + "text": " @dev Returns an account's deposits. These can be either a contracts's funds, or a relay owner's revenue." + }, + "functionSelector": "70a08231", + "id": 963, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 958, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 963, + "src": "4554:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4554:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4553:16:4" + }, + "returnParameters": { + "id": 962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 961, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 963, + "src": "4593:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4593:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4592:9:4" + }, + "scope": 1128, + "src": "4535:67:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 964, + "nodeType": "StructuredDocumentation", + "src": "4608:226:4", + "text": " Withdraws from an account's balance, sending it back to it. Relay owners call this to retrieve their revenue, and\n contracts can use it to reduce their funding.\n Emits a {Withdrawn} event." + }, + "functionSelector": "00f714ce", + "id": 971, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 966, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 971, + "src": "4857:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 965, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4857:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 968, + "mutability": "mutable", + "name": "dest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 971, + "src": "4873:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 967, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4873:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4856:38:4" + }, + "returnParameters": { + "id": 970, + "nodeType": "ParameterList", + "parameters": [], + "src": "4903:0:4" + }, + "scope": 1128, + "src": "4839:65:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 972, + "nodeType": "StructuredDocumentation", + "src": "4910:80:4", + "text": " @dev Emitted when an account withdraws funds from `RelayHub`." + }, + "id": 980, + "name": "Withdrawn", + "nodeType": "EventDefinition", + "parameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 974, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 980, + "src": "5011:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5011:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 976, + "indexed": true, + "mutability": "mutable", + "name": "dest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 980, + "src": "5036:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5036:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 978, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 980, + "src": "5058:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5058:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5010:63:4" + }, + "src": "4995:79:4" + }, + { + "body": null, + "documentation": { + "id": 981, + "nodeType": "StructuredDocumentation", + "src": "5097:513:4", + "text": " @dev Checks if the `RelayHub` will accept a relayed operation.\n Multiple things must be true for this to happen:\n - all arguments must be signed for by the sender (`from`)\n - the sender's nonce must be the current one\n - the recipient must accept this transaction (via {acceptRelayedCall})\n Returns a `PreconditionCheck` value (`OK` when the transaction can be relayed), or a recipient-specific error\n code if it returns one in {acceptRelayedCall}." + }, + "functionSelector": "2b601747", + "id": 1008, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "canRelay", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 983, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5642:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 982, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5642:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 985, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5665:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5665:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 987, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5687:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5687:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 989, + "mutability": "mutable", + "name": "encodedFunction", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5707:30:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 988, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5707:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 991, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5747:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 993, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5779:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5779:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 995, + "mutability": "mutable", + "name": "gasLimit", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5805:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5805:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 997, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5831:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5831:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 999, + "mutability": "mutable", + "name": "signature", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5854:24:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 998, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5854:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1001, + "mutability": "mutable", + "name": "approvalData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5888:27:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1000, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5888:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5632:289:4" + }, + "returnParameters": { + "id": 1007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1004, + "mutability": "mutable", + "name": "status", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5945:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5945:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1006, + "mutability": "mutable", + "name": "recipientContext", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1008, + "src": "5961:29:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1005, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5961:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5944:47:4" + }, + "scope": 1128, + "src": "5615:377:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "canonicalName": "IRelayHub.PreconditionCheck", + "id": 1014, + "members": [ + { + "id": 1009, + "name": "OK", + "nodeType": "EnumValue", + "src": "6136:2:4" + }, + { + "id": 1010, + "name": "WrongSignature", + "nodeType": "EnumValue", + "src": "6218:14:4" + }, + { + "id": 1011, + "name": "WrongNonce", + "nodeType": "EnumValue", + "src": "6316:10:4" + }, + { + "id": 1012, + "name": "AcceptRelayedCallReverted", + "nodeType": "EnumValue", + "src": "6410:25:4" + }, + { + "id": 1013, + "name": "InvalidRecipientStatusCode", + "nodeType": "EnumValue", + "src": "6504:26:4" + } + ], + "name": "PreconditionCheck", + "nodeType": "EnumDefinition", + "src": "6103:494:4" + }, + { + "body": null, + "documentation": { + "id": 1015, + "nodeType": "StructuredDocumentation", + "src": "6603:1584:4", + "text": " @dev Relays a transaction.\n For this to succeed, multiple conditions must be met:\n - {canRelay} must `return PreconditionCheck.OK`\n - the sender must be a registered relay\n - the transaction's gas price must be larger or equal to the one that was requested by the sender\n - the transaction must have enough gas to not run out of gas if all internal transactions (calls to the\n recipient) use all gas available to them\n - the recipient must have enough balance to pay the relay for the worst-case scenario (i.e. when all gas is\n spent)\n If all conditions are met, the call will be relayed and the recipient charged. {preRelayedCall}, the encoded\n function and {postRelayedCall} will be called in that order.\n Parameters:\n - `from`: the client originating the request\n - `to`: the target {IRelayRecipient} contract\n - `encodedFunction`: the function call to relay, including data\n - `transactionFee`: fee (%) the relay takes over actual gas cost\n - `gasPrice`: gas price the client is willing to pay\n - `gasLimit`: gas to forward when calling the encoded function\n - `nonce`: client's nonce\n - `signature`: client's signature over all previous params, plus the relay and RelayHub addresses\n - `approvalData`: dapp-specific data forwared to {acceptRelayedCall}. This value is *not* verified by the\n `RelayHub`, but it still can be used for e.g. a signature.\n Emits a {TransactionRelayed} event." + }, + "functionSelector": "405cec67", + "id": 1036, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "relayCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1017, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8220:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1016, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8220:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1019, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8242:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8242:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1021, + "mutability": "mutable", + "name": "encodedFunction", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8262:30:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1020, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8262:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1023, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8302:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1025, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8334:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8334:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1027, + "mutability": "mutable", + "name": "gasLimit", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8360:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8360:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1029, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8386:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1028, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1031, + "mutability": "mutable", + "name": "signature", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8409:24:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1030, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8409:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "mutability": "mutable", + "name": "approvalData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1036, + "src": "8443:27:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1032, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8443:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8210:266:4" + }, + "returnParameters": { + "id": 1035, + "nodeType": "ParameterList", + "parameters": [], + "src": "8485:0:4" + }, + "scope": 1128, + "src": "8192:294:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 1037, + "nodeType": "StructuredDocumentation", + "src": "8492:480:4", + "text": " @dev Emitted when an attempt to relay a call failed.\n This can happen due to incorrect {relayCall} arguments, or the recipient not accepting the relayed call. The\n actual relayed call was not executed, and the recipient not charged.\n The `reason` parameter contains an error code: values 1-10 correspond to `PreconditionCheck` entries, and values\n over 10 are custom recipient error codes returned from {acceptRelayedCall}." + }, + "id": 1049, + "name": "CanRelayFailed", + "nodeType": "EventDefinition", + "parameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1039, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1049, + "src": "8998:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1038, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8998:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1049, + "src": "9021:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9021:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1049, + "src": "9043:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9043:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "indexed": false, + "mutability": "mutable", + "name": "selector", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1049, + "src": "9063:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1044, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9063:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1047, + "indexed": false, + "mutability": "mutable", + "name": "reason", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1049, + "src": "9080:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1046, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9080:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8997:98:4" + }, + "src": "8977:119:4" + }, + { + "anonymous": false, + "documentation": { + "id": 1050, + "nodeType": "StructuredDocumentation", + "src": "9102:368:4", + "text": " @dev Emitted when a transaction is relayed.\n Useful when monitoring a relay's operation and relayed calls to a contract\n Note that the actual encoded function might be reverted: this is indicated in the `status` parameter.\n `charge` is the Ether value deducted from the recipient's balance, paid to the relay's owner." + }, + "id": 1064, + "name": "TransactionRelayed", + "nodeType": "EventDefinition", + "parameters": { + "id": 1063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1052, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1064, + "src": "9500:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9500:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1054, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1064, + "src": "9523:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9523:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1056, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1064, + "src": "9545:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1055, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9545:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1058, + "indexed": false, + "mutability": "mutable", + "name": "selector", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1064, + "src": "9565:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1057, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9565:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1060, + "indexed": false, + "mutability": "mutable", + "name": "status", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1064, + "src": "9582:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RelayCallStatus_$1070", + "typeString": "enum IRelayHub.RelayCallStatus" + }, + "typeName": { + "contractScope": null, + "id": 1059, + "name": "RelayCallStatus", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1070, + "src": "9582:15:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RelayCallStatus_$1070", + "typeString": "enum IRelayHub.RelayCallStatus" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1062, + "indexed": false, + "mutability": "mutable", + "name": "charge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1064, + "src": "9606:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9606:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9499:122:4" + }, + "src": "9475:147:4" + }, + { + "canonicalName": "IRelayHub.RelayCallStatus", + "id": 1070, + "members": [ + { + "id": 1065, + "name": "OK", + "nodeType": "EnumValue", + "src": "9718:2:4" + }, + { + "id": 1066, + "name": "RelayedCallFailed", + "nodeType": "EnumValue", + "src": "9850:17:4" + }, + { + "id": 1067, + "name": "PreRelayedFailed", + "nodeType": "EnumValue", + "src": "9943:16:4" + }, + { + "id": 1068, + "name": "PostRelayedFailed", + "nodeType": "EnumValue", + "src": "10043:17:4" + }, + { + "id": 1069, + "name": "RecipientBalanceChanged", + "nodeType": "EnumValue", + "src": "10153:23:4" + } + ], + "name": "RelayCallStatus", + "nodeType": "EnumDefinition", + "src": "9687:580:4" + }, + { + "body": null, + "documentation": { + "id": 1071, + "nodeType": "StructuredDocumentation", + "src": "10273:177:4", + "text": " @dev Returns how much gas should be forwarded to a call to {relayCall}, in order to relay a transaction that will\n spend up to `relayedCallStipend` gas." + }, + "functionSelector": "6a7d84a4", + "id": 1078, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "requiredGas", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1073, + "mutability": "mutable", + "name": "relayedCallStipend", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1078, + "src": "10476:26:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10476:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10475:28:4" + }, + "returnParameters": { + "id": 1077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1076, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1078, + "src": "10527:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1075, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10526:9:4" + }, + "scope": 1128, + "src": "10455:81:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1079, + "nodeType": "StructuredDocumentation", + "src": "10542:121:4", + "text": " @dev Returns the maximum recipient charge, given the amount of gas forwarded, gas price and relay fee." + }, + "functionSelector": "a863f8f9", + "id": 1090, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "maxPossibleCharge", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1081, + "mutability": "mutable", + "name": "relayedCallStipend", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1090, + "src": "10695:26:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10695:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1083, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1090, + "src": "10723:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1082, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10723:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1085, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1090, + "src": "10741:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10741:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10694:70:4" + }, + "returnParameters": { + "id": 1089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1088, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1090, + "src": "10788:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10788:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10787:9:4" + }, + "scope": 1128, + "src": "10668:129:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1091, + "nodeType": "StructuredDocumentation", + "src": "11093:297:4", + "text": " @dev Penalize a relay that signed two transactions using the same nonce (making only the first one valid) and\n different data (gas price, gas limit, etc. may be different).\n The (unsigned) transaction data and signature for both transactions must be provided." + }, + "functionSelector": "a8cd9572", + "id": 1102, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "penalizeRepeatedNonce", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1093, + "mutability": "mutable", + "name": "unsignedTx1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1102, + "src": "11426:26:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1092, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11426:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1095, + "mutability": "mutable", + "name": "signature1", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1102, + "src": "11454:25:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1094, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11454:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1097, + "mutability": "mutable", + "name": "unsignedTx2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1102, + "src": "11481:26:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1096, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11481:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1099, + "mutability": "mutable", + "name": "signature2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1102, + "src": "11509:25:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1098, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11509:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11425:110:4" + }, + "returnParameters": { + "id": 1101, + "nodeType": "ParameterList", + "parameters": [], + "src": "11544:0:4" + }, + "scope": 1128, + "src": "11395:150:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1103, + "nodeType": "StructuredDocumentation", + "src": "11551:130:4", + "text": " @dev Penalize a relay that sent a transaction that didn't target ``RelayHub``'s {registerRelay} or {relayCall}." + }, + "functionSelector": "39002432", + "id": 1110, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "penalizeIllegalTransaction", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1105, + "mutability": "mutable", + "name": "unsignedTx", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1110, + "src": "11722:25:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1104, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11722:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1107, + "mutability": "mutable", + "name": "signature", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1110, + "src": "11749:24:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11749:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11721:53:4" + }, + "returnParameters": { + "id": 1109, + "nodeType": "ParameterList", + "parameters": [], + "src": "11783:0:4" + }, + "scope": 1128, + "src": "11686:98:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 1111, + "nodeType": "StructuredDocumentation", + "src": "11790:58:4", + "text": " @dev Emitted when a relay is penalized." + }, + "id": 1119, + "name": "Penalized", + "nodeType": "EventDefinition", + "parameters": { + "id": 1118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1113, + "indexed": true, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1119, + "src": "11869:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11869:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1115, + "indexed": false, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1119, + "src": "11892:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11892:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1117, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1119, + "src": "11908:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11868:55:4" + }, + "src": "11853:71:4" + }, + { + "body": null, + "documentation": { + "id": 1120, + "nodeType": "StructuredDocumentation", + "src": "11930:65:4", + "text": " @dev Returns an account's nonce in `RelayHub`." + }, + "functionSelector": "2d0335ab", + "id": 1127, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNonce", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1122, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1127, + "src": "12018:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12018:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12017:14:4" + }, + "returnParameters": { + "id": 1126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1125, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1127, + "src": "12055:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12055:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12054:9:4" + }, + "scope": 1128, + "src": "12000:64:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1129, + "src": "388:11678:4" + } + ], + "src": "33:12035:4" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IRelayRecipient.json b/node_modules/@openzeppelin/contracts/build/contracts/IRelayRecipient.json new file mode 100644 index 0000000..e655e90 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IRelayRecipient.json @@ -0,0 +1,842 @@ +{ + "fileName": "IRelayRecipient.sol", + "contractName": "IRelayRecipient", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Base interface for a contract that will be called via the GSN from {IRelayHub}.\n *\n * TIP: You don't need to write an implementation yourself! Inherit from {GSNRecipient} instead.\n */\ninterface IRelayRecipient {\n /**\n * @dev Returns the address of the {IRelayHub} instance this recipient interacts with.\n */\n function getHubAddr() external view returns (address);\n\n /**\n * @dev Called by {IRelayHub} to validate if this recipient accepts being charged for a relayed call. Note that the\n * recipient will be charged regardless of the execution result of the relayed call (i.e. if it reverts or not).\n *\n * The relay request was originated by `from` and will be served by `relay`. `encodedFunction` is the relayed call\n * calldata, so its first four bytes are the function selector. The relayed call will be forwarded `gasLimit` gas,\n * and the transaction executed with a gas price of at least `gasPrice`. ``relay``'s fee is `transactionFee`, and the\n * recipient will be charged at most `maxPossibleCharge` (in wei). `nonce` is the sender's (`from`) nonce for\n * replay attack protection in {IRelayHub}, and `approvalData` is a optional parameter that can be used to hold a signature\n * over all or some of the previous values.\n *\n * Returns a tuple, where the first value is used to indicate approval (0) or rejection (custom non-zero error code,\n * values 1 to 10 are reserved) and the second one is data to be passed to the other {IRelayRecipient} functions.\n *\n * {acceptRelayedCall} is called with 50k gas: if it runs out during execution, the request will be considered\n * rejected. A regular revert will also trigger a rejection.\n */\n function acceptRelayedCall(\n address relay,\n address from,\n bytes calldata encodedFunction,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256 gasLimit,\n uint256 nonce,\n bytes calldata approvalData,\n uint256 maxPossibleCharge\n )\n external\n view\n returns (uint256, bytes memory);\n\n /**\n * @dev Called by {IRelayHub} on approved relay call requests, before the relayed call is executed. This allows to e.g.\n * pre-charge the sender of the transaction.\n *\n * `context` is the second value returned in the tuple by {acceptRelayedCall}.\n *\n * Returns a value to be passed to {postRelayedCall}.\n *\n * {preRelayedCall} is called with 100k gas: if it runs out during exection or otherwise reverts, the relayed call\n * will not be executed, but the recipient will still be charged for the transaction's cost.\n */\n function preRelayedCall(bytes calldata context) external returns (bytes32);\n\n /**\n * @dev Called by {IRelayHub} on approved relay call requests, after the relayed call is executed. This allows to e.g.\n * charge the user for the relayed call costs, return any overcharges from {preRelayedCall}, or perform\n * contract-specific bookkeeping.\n *\n * `context` is the second value returned in the tuple by {acceptRelayedCall}. `success` is the execution status of\n * the relayed call. `actualCharge` is an estimate of how much the recipient will be charged for the transaction,\n * not including any gas used by {postRelayedCall} itself. `preRetVal` is {preRelayedCall}'s return value.\n *\n *\n * {postRelayedCall} is called with 100k gas: if it runs out during execution or otherwise reverts, the relayed call\n * and the call to {preRelayedCall} will be reverted retroactively, but the recipient will still be charged for the\n * transaction's cost.\n */\n function postRelayedCall(bytes calldata context, bool success, uint256 actualCharge, bytes32 preRetVal) external;\n}\n", + "sourcePath": "contracts/GSN/IRelayRecipient.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "maxPossibleCharge", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/IRelayRecipient.sol", + "exportedSymbols": { + "IRelayRecipient": [ + 1184 + ] + }, + "id": 1185, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1130, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:5" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1131, + "nodeType": "StructuredDocumentation", + "src": "58:195:5", + "text": " @dev Base interface for a contract that will be called via the GSN from {IRelayHub}.\n TIP: You don't need to write an implementation yourself! Inherit from {GSNRecipient} instead." + }, + "fullyImplemented": false, + "id": 1184, + "linearizedBaseContracts": [ + 1184 + ], + "name": "IRelayRecipient", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 1132, + "nodeType": "StructuredDocumentation", + "src": "286:102:5", + "text": " @dev Returns the address of the {IRelayHub} instance this recipient interacts with." + }, + "functionSelector": "74e861d6", + "id": 1137, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getHubAddr", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1133, + "nodeType": "ParameterList", + "parameters": [], + "src": "412:2:5" + }, + "returnParameters": { + "id": 1136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1135, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1137, + "src": "438:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "438:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "437:9:5" + }, + "scope": 1184, + "src": "393:54:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1138, + "nodeType": "StructuredDocumentation", + "src": "453:1338:5", + "text": " @dev Called by {IRelayHub} to validate if this recipient accepts being charged for a relayed call. Note that the\n recipient will be charged regardless of the execution result of the relayed call (i.e. if it reverts or not).\n The relay request was originated by `from` and will be served by `relay`. `encodedFunction` is the relayed call\n calldata, so its first four bytes are the function selector. The relayed call will be forwarded `gasLimit` gas,\n and the transaction executed with a gas price of at least `gasPrice`. ``relay``'s fee is `transactionFee`, and the\n recipient will be charged at most `maxPossibleCharge` (in wei). `nonce` is the sender's (`from`) nonce for\n replay attack protection in {IRelayHub}, and `approvalData` is a optional parameter that can be used to hold a signature\n over all or some of the previous values.\n Returns a tuple, where the first value is used to indicate approval (0) or rejection (custom non-zero error code,\n values 1 to 10 are reserved) and the second one is data to be passed to the other {IRelayRecipient} functions.\n {acceptRelayedCall} is called with 50k gas: if it runs out during execution, the request will be considered\n rejected. A regular revert will also trigger a rejection." + }, + "functionSelector": "83947ea0", + "id": 1163, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "acceptRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1140, + "mutability": "mutable", + "name": "relay", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "1832:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1832:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1142, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "1855:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1855:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1144, + "mutability": "mutable", + "name": "encodedFunction", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "1877:30:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1143, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1877:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1146, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "1917:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1145, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1917:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1148, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "1949:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1949:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1150, + "mutability": "mutable", + "name": "gasLimit", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "1975:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1152, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "2001:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1151, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2001:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1154, + "mutability": "mutable", + "name": "approvalData", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "2024:27:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1153, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2024:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1156, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "2061:25:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2061:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1822:270:5" + }, + "returnParameters": { + "id": 1162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1159, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "2140:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2140:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1161, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1163, + "src": "2149:12:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1160, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2149:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2139:23:5" + }, + "scope": 1184, + "src": "1796:367:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1164, + "nodeType": "StructuredDocumentation", + "src": "2169:562:5", + "text": " @dev Called by {IRelayHub} on approved relay call requests, before the relayed call is executed. This allows to e.g.\n pre-charge the sender of the transaction.\n `context` is the second value returned in the tuple by {acceptRelayedCall}.\n Returns a value to be passed to {postRelayedCall}.\n {preRelayedCall} is called with 100k gas: if it runs out during exection or otherwise reverts, the relayed call\n will not be executed, but the recipient will still be charged for the transaction's cost." + }, + "functionSelector": "80274db7", + "id": 1171, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1166, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1171, + "src": "2760:22:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1165, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2760:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2759:24:5" + }, + "returnParameters": { + "id": 1170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1169, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1171, + "src": "2802:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1168, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2802:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2801:9:5" + }, + "scope": 1184, + "src": "2736:75:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1172, + "nodeType": "StructuredDocumentation", + "src": "2817:918:5", + "text": " @dev Called by {IRelayHub} on approved relay call requests, after the relayed call is executed. This allows to e.g.\n charge the user for the relayed call costs, return any overcharges from {preRelayedCall}, or perform\n contract-specific bookkeeping.\n `context` is the second value returned in the tuple by {acceptRelayedCall}. `success` is the execution status of\n the relayed call. `actualCharge` is an estimate of how much the recipient will be charged for the transaction,\n not including any gas used by {postRelayedCall} itself. `preRetVal` is {preRelayedCall}'s return value.\n {postRelayedCall} is called with 100k gas: if it runs out during execution or otherwise reverts, the relayed call\n and the call to {preRelayedCall} will be reverted retroactively, but the recipient will still be charged for the\n transaction's cost." + }, + "functionSelector": "e06e0e22", + "id": 1183, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1174, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1183, + "src": "3765:22:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1173, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3765:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1176, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1183, + "src": "3789:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1175, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3789:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1178, + "mutability": "mutable", + "name": "actualCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1183, + "src": "3803:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3803:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1180, + "mutability": "mutable", + "name": "preRetVal", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1183, + "src": "3825:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1179, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3825:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3764:79:5" + }, + "returnParameters": { + "id": 1182, + "nodeType": "ParameterList", + "parameters": [], + "src": "3852:0:5" + }, + "scope": 1184, + "src": "3740:113:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1185, + "src": "254:3601:5" + } + ], + "src": "33:3823:5" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsale.json new file mode 100644 index 0000000..33e817f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsale.json @@ -0,0 +1,2040 @@ +{ + "fileName": "IncreasingPriceCrowdsale.sol", + "contractName": "IncreasingPriceCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../validation/TimedCrowdsale.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @title IncreasingPriceCrowdsale\n * @dev Extension of Crowdsale contract that increases the price of tokens linearly in time.\n * Note that what should be provided to the constructor is the initial and final _rates_, that is,\n * the amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate.\n */\ncontract IncreasingPriceCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n uint256 private _initialRate;\n uint256 private _finalRate;\n\n /**\n * @dev Constructor, takes initial and final rates of tokens received per wei contributed.\n * @param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale\n * @param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale\n */\n constructor (uint256 initialRate, uint256 finalRate) public {\n require(finalRate > 0, \"IncreasingPriceCrowdsale: final rate is 0\");\n // solhint-disable-next-line max-line-length\n require(initialRate > finalRate, \"IncreasingPriceCrowdsale: initial rate is not greater than final rate\");\n _initialRate = initialRate;\n _finalRate = finalRate;\n }\n\n /**\n * The base rate function is overridden to revert, since this crowdsale doesn't use it, and\n * all calls to it are a mistake.\n */\n function rate() public view returns (uint256) {\n revert(\"IncreasingPriceCrowdsale: rate() called\");\n }\n\n /**\n * @return the initial rate of the crowdsale.\n */\n function initialRate() public view returns (uint256) {\n return _initialRate;\n }\n\n /**\n * @return the final rate of the crowdsale.\n */\n function finalRate() public view returns (uint256) {\n return _finalRate;\n }\n\n /**\n * @dev Returns the rate of tokens per wei at the present time.\n * Note that, as price _increases_ with time, the rate _decreases_.\n * @return The number of tokens a buyer gets per wei at a given time\n */\n function getCurrentRate() public view returns (uint256) {\n if (!isOpen()) {\n return 0;\n }\n\n // solhint-disable-next-line not-rely-on-time\n uint256 elapsedTime = block.timestamp.sub(openingTime());\n uint256 timeRange = closingTime().sub(openingTime());\n uint256 rateRange = _initialRate.sub(_finalRate);\n return _initialRate.sub(elapsedTime.mul(rateRange).div(timeRange));\n }\n\n /**\n * @dev Overrides parent method taking into account variable rate.\n * @param weiAmount The value in wei to be converted into tokens\n * @return The number of tokens _weiAmount wei will buy at present time\n */\n function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) {\n uint256 currentRate = getCurrentRate();\n return currentRate.mul(weiAmount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/price/IncreasingPriceCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "initialRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalRate", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/price/IncreasingPriceCrowdsale.sol", + "exportedSymbols": { + "IncreasingPriceCrowdsale": [ + 2722 + ] + }, + "id": 2723, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2587, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:20" + }, + { + "absolutePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 2588, + "nodeType": "ImportDirective", + "scope": 2723, + "sourceUnit": 3088, + "src": "25:42:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2589, + "nodeType": "ImportDirective", + "scope": 2723, + "sourceUnit": 5300, + "src": "68:33:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2590, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3087, + "src": "480:14:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$3087", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 2591, + "nodeType": "InheritanceSpecifier", + "src": "480:14:20" + } + ], + "contractDependencies": [ + 26, + 2119, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title IncreasingPriceCrowdsale\n@dev Extension of Crowdsale contract that increases the price of tokens linearly in time.\nNote that what should be provided to the constructor is the initial and final _rates_, that is,\nthe amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate.", + "fullyImplemented": false, + "id": 2722, + "linearizedBaseContracts": [ + 2722, + 3087, + 2119, + 13820, + 26 + ], + "name": "IncreasingPriceCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2594, + "libraryName": { + "contractScope": null, + "id": 2592, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "507:8:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "501:27:20", + "typeName": { + "id": 2593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2596, + "name": "_initialRate", + "nodeType": "VariableDeclaration", + "scope": 2722, + "src": "534:28:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2598, + "name": "_finalRate", + "nodeType": "VariableDeclaration", + "scope": 2722, + "src": "568:26:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "568:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2627, + "nodeType": "Block", + "src": "956:320:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2606, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2602, + "src": "974:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "986:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "974:13:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e6372656173696e67507269636543726f776473616c653a2066696e616c20726174652069732030", + "id": 2609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "989:43:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_46cf4271dba25f8e1b4bdf0fae0c9afc4823562bd26a9d570381dff0a20b399d", + "typeString": "literal_string \"IncreasingPriceCrowdsale: final rate is 0\"" + }, + "value": "IncreasingPriceCrowdsale: final rate is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_46cf4271dba25f8e1b4bdf0fae0c9afc4823562bd26a9d570381dff0a20b399d", + "typeString": "literal_string \"IncreasingPriceCrowdsale: final rate is 0\"" + } + ], + "id": 2605, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "966:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "966:67:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2611, + "nodeType": "ExpressionStatement", + "src": "966:67:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2613, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2600, + "src": "1104:11:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2614, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2602, + "src": "1118:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1104:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e6372656173696e67507269636543726f776473616c653a20696e697469616c2072617465206973206e6f742067726561746572207468616e2066696e616c2072617465", + "id": 2616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1129:71:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_166e8b0be7f543e840436bc6b50309b0e41bf747759734b6557351d99216a0ec", + "typeString": "literal_string \"IncreasingPriceCrowdsale: initial rate is not greater than final rate\"" + }, + "value": "IncreasingPriceCrowdsale: initial rate is not greater than final rate" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_166e8b0be7f543e840436bc6b50309b0e41bf747759734b6557351d99216a0ec", + "typeString": "literal_string \"IncreasingPriceCrowdsale: initial rate is not greater than final rate\"" + } + ], + "id": 2612, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1096:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1096:105:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2618, + "nodeType": "ExpressionStatement", + "src": "1096:105:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2619, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "1211:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2620, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2600, + "src": "1226:11:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1211:26:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2622, + "nodeType": "ExpressionStatement", + "src": "1211:26:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2623, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "1247:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2624, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2602, + "src": "1260:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1247:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2626, + "nodeType": "ExpressionStatement", + "src": "1247:22:20" + } + ] + }, + "documentation": "@dev Constructor, takes initial and final rates of tokens received per wei contributed.\n@param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale\n@param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale", + "id": 2628, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2600, + "name": "initialRate", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "909:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "909:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2602, + "name": "finalRate", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "930:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2601, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "930:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "908:40:20" + }, + "returnParameters": { + "id": 2604, + "nodeType": "ParameterList", + "parameters": [], + "src": "956:0:20" + }, + "scope": 2722, + "src": "896:380:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2637, + "nodeType": "Block", + "src": "1478:66:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "496e6372656173696e67507269636543726f776473616c653a207261746528292063616c6c6564", + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1495:41:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_215577fab47bae86dfd334b935149275b8becd8d8f17ab407777c9e7ba20be7e", + "typeString": "literal_string \"IncreasingPriceCrowdsale: rate() called\"" + }, + "value": "IncreasingPriceCrowdsale: rate() called" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_215577fab47bae86dfd334b935149275b8becd8d8f17ab407777c9e7ba20be7e", + "typeString": "literal_string \"IncreasingPriceCrowdsale: rate() called\"" + } + ], + "id": 2633, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13948, + 13949 + ], + "referencedDeclaration": 13949, + "src": "1488:6:20", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 2635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1488:49:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2636, + "nodeType": "ExpressionStatement", + "src": "1488:49:20" + } + ] + }, + "documentation": "The base rate function is overridden to revert, since this crowdsale doesn't use it, and\nall calls to it are a mistake.", + "id": 2638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2629, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:2:20" + }, + "returnParameters": { + "id": 2632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2631, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2638, + "src": "1469:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2630, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1469:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1468:9:20" + }, + "scope": 2722, + "src": "1432:112:20", + "stateMutability": "view", + "superFunction": 1959, + "visibility": "public" + }, + { + "body": { + "id": 2645, + "nodeType": "Block", + "src": "1669:36:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2643, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "1686:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2642, + "id": 2644, + "nodeType": "Return", + "src": "1679:19:20" + } + ] + }, + "documentation": "@return the initial rate of the crowdsale.", + "id": 2646, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2639, + "nodeType": "ParameterList", + "parameters": [], + "src": "1636:2:20" + }, + "returnParameters": { + "id": 2642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2641, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2646, + "src": "1660:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1660:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1659:9:20" + }, + "scope": 2722, + "src": "1616:89:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2653, + "nodeType": "Block", + "src": "1826:34:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2651, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "1843:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2650, + "id": 2652, + "nodeType": "Return", + "src": "1836:17:20" + } + ] + }, + "documentation": "@return the final rate of the crowdsale.", + "id": 2654, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2647, + "nodeType": "ParameterList", + "parameters": [], + "src": "1793:2:20" + }, + "returnParameters": { + "id": 2650, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2649, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2654, + "src": "1817:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1817:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1816:9:20" + }, + "scope": 2722, + "src": "1775:85:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2702, + "nodeType": "Block", + "src": "2151:381:20", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 2661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2165:9:20", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2659, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3029, + "src": "2166:6:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2166:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2665, + "nodeType": "IfStatement", + "src": "2161:48:20", + "trueBody": { + "id": 2664, + "nodeType": "Block", + "src": "2176:33:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2197:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2658, + "id": 2663, + "nodeType": "Return", + "src": "2190:8:20" + } + ] + } + }, + { + "assignments": [ + 2667 + ], + "declarations": [ + { + "constant": false, + "id": 2667, + "name": "elapsedTime", + "nodeType": "VariableDeclaration", + "scope": 2702, + "src": "2273:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2666, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2273:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2674, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2671, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3005, + "src": "2315:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2315:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2668, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13933, + "src": "2295:5:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2295:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "2295:19:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2295:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2273:56:20" + }, + { + "assignments": [ + 2676 + ], + "declarations": [ + { + "constant": false, + "id": 2676, + "name": "timeRange", + "nodeType": "VariableDeclaration", + "scope": 2702, + "src": "2339:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2339:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2683, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2680, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3005, + "src": "2377:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2377:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2677, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3013, + "src": "2359:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2359:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "2359:17:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2359:32:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2339:52:20" + }, + { + "assignments": [ + 2685 + ], + "declarations": [ + { + "constant": false, + "id": 2685, + "name": "rateRange", + "nodeType": "VariableDeclaration", + "scope": 2702, + "src": "2401:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2684, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2401:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2690, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2688, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "2438:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2686, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "2421:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "2421:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2421:28:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2401:48:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2698, + "name": "timeRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2676, + "src": "2514:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2695, + "name": "rateRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2685, + "src": "2499:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2693, + "name": "elapsedTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2483:11:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 5216, + "src": "2483:15:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2483:26:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 5232, + "src": "2483:30:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2483:41:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2691, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "2466:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "2466:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2466:59:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2658, + "id": 2701, + "nodeType": "Return", + "src": "2459:66:20" + } + ] + }, + "documentation": "@dev Returns the rate of tokens per wei at the present time.\nNote that, as price _increases_ with time, the rate _decreases_.\n@return The number of tokens a buyer gets per wei at a given time", + "id": 2703, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCurrentRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2655, + "nodeType": "ParameterList", + "parameters": [], + "src": "2118:2:20" + }, + "returnParameters": { + "id": 2658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2657, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2703, + "src": "2142:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2656, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2142:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2141:9:20" + }, + "scope": 2722, + "src": "2095:437:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2720, + "nodeType": "Block", + "src": "2846:98:20", + "statements": [ + { + "assignments": [ + 2711 + ], + "declarations": [ + { + "constant": false, + "id": 2711, + "name": "currentRate", + "nodeType": "VariableDeclaration", + "scope": 2720, + "src": "2856:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2856:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2714, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2712, + "name": "getCurrentRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2703, + "src": "2878:14:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2878:16:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2856:38:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2717, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2705, + "src": "2927:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2715, + "name": "currentRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2711, + "src": "2911:11:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 5216, + "src": "2911:15:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2911:26:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2709, + "id": 2719, + "nodeType": "Return", + "src": "2904:33:20" + } + ] + }, + "documentation": "@dev Overrides parent method taking into account variable rate.\n@param weiAmount The value in wei to be converted into tokens\n@return The number of tokens _weiAmount wei will buy at present time", + "id": 2721, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getTokenAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2705, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "2795:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2795:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2794:19:20" + }, + "returnParameters": { + "id": 2709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2708, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2721, + "src": "2837:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2707, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2837:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2836:9:20" + }, + "scope": 2722, + "src": "2770:174:20", + "stateMutability": "view", + "superFunction": 2107, + "visibility": "internal" + } + ], + "scope": 2723, + "src": "443:2503:20" + } + ], + "src": "0:2947:20" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsaleImpl.json new file mode 100644 index 0000000..26ac5c2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IncreasingPriceCrowdsaleImpl.json @@ -0,0 +1,730 @@ +{ + "fileName": "IncreasingPriceCrowdsaleImpl.sol", + "contractName": "IncreasingPriceCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../crowdsale/price/IncreasingPriceCrowdsale.sol\";\nimport \"../math/SafeMath.sol\";\n\ncontract IncreasingPriceCrowdsaleImpl is IncreasingPriceCrowdsale {\n constructor (\n uint256 openingTime,\n uint256 closingTime,\n address payable wallet,\n IERC20 token,\n uint256 initialRate,\n uint256 finalRate\n )\n public\n Crowdsale(initialRate, wallet, token)\n TimedCrowdsale(openingTime, closingTime)\n IncreasingPriceCrowdsale(initialRate, finalRate)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/IncreasingPriceCrowdsaleImpl.sol", + "sourceMap": "115:496:83:-;;;187:422;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:422:83;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;187:422:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:11;530:9;458:11;471;407;420:6;428:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;986:1:20;974:9;:13;966:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1118:9;1104:11;:23;1096:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1226:11;1211:12;:26;;;;1260:9;1247:10;:22;;;;896:380;;187:422:83;;;;;;115:496;;;;;;", + "deployedSourceMap": "115:496:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;115:496:83;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1775:85:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1775:85:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1432:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1432:112:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1590:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1616:89:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1616:89:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1436::24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;2095:437:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2095:437:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3106:76:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;1775:85:20:-;1817:7;1843:10;;1836:17;;1775:85;:::o;1432:112::-;1469:7;1488:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3568:85:13;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;1590:89::-;1634:7;1660:12;;1653:19;;1590:89;:::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;1616:89:20:-;1660:7;1686:12;;1679:19;;1616:89;:::o;1436::24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;2095:437:20:-;2142:7;2166:8;:6;:8::i;:::-;2161:48;;2197:1;2190:8;;;;2161:48;2273:19;2295:34;2315:13;:11;:13::i;:::-;2295:15;:19;;:34;;;;:::i;:::-;2273:56;;2339:17;2359:32;2377:13;:11;:13::i;:::-;2359;:11;:13::i;:::-;:17;;:32;;;;:::i;:::-;2339:52;;2401:17;2421:28;2438:10;;2421:12;;:16;;:28;;;;:::i;:::-;2401:48;;2466:59;2483:41;2514:9;2483:26;2499:9;2483:11;:15;;:26;;;;:::i;:::-;:30;;:41;;;;:::i;:::-;2466:12;;:16;;:59;;;;:::i;:::-;2459:66;;;;;2095:437;;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;2770:174:20:-;2837:7;2856:19;2878:16;:14;:16::i;:::-;2856:38;;2911:26;2927:9;2911:11;:15;;:26;;;;:::i;:::-;2904:33;;;2770:174;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;1274:134:45:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;2159:459::-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;6157:137::-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;3718:338::-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3889:28:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalRate", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/IncreasingPriceCrowdsaleImpl.sol", + "exportedSymbols": { + "IncreasingPriceCrowdsaleImpl": [ + 7224 + ] + }, + "id": 7225, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7190, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:83" + }, + { + "absolutePath": "contracts/crowdsale/price/IncreasingPriceCrowdsale.sol", + "file": "../crowdsale/price/IncreasingPriceCrowdsale.sol", + "id": 7191, + "nodeType": "ImportDirective", + "scope": 7225, + "sourceUnit": 2723, + "src": "25:57:83", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 7192, + "nodeType": "ImportDirective", + "scope": 7225, + "sourceUnit": 5300, + "src": "83:30:83", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7193, + "name": "IncreasingPriceCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2722, + "src": "156:24:83", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncreasingPriceCrowdsale_$2722", + "typeString": "contract IncreasingPriceCrowdsale" + } + }, + "id": 7194, + "nodeType": "InheritanceSpecifier", + "src": "156:24:83" + } + ], + "contractDependencies": [ + 26, + 2119, + 2722, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7224, + "linearizedBaseContracts": [ + 7224, + 2722, + 3087, + 2119, + 13820, + 26 + ], + "name": "IncreasingPriceCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7222, + "nodeType": "Block", + "src": "545:64:83", + "statements": [] + }, + "documentation": null, + "id": 7223, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7209, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7204, + "src": "407:11:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7210, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7200, + "src": "420:6:83", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7211, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7202, + "src": "428:5:83", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 7212, + "modifierName": { + "argumentTypes": null, + "id": 7208, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "397:9:83", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "397:37:83" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7214, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7196, + "src": "458:11:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7215, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7198, + "src": "471:11:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7216, + "modifierName": { + "argumentTypes": null, + "id": 7213, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "443:14:83", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "443:40:83" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7218, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7204, + "src": "517:11:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7219, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7206, + "src": "530:9:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7220, + "modifierName": { + "argumentTypes": null, + "id": 7217, + "name": "IncreasingPriceCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2722, + "src": "492:24:83", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IncreasingPriceCrowdsale_$2722_$", + "typeString": "type(contract IncreasingPriceCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "492:48:83" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7196, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 7223, + "src": "209:19:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "209:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7198, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 7223, + "src": "238:19:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "238:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7200, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7223, + "src": "267:22:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "267:15:83", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7202, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7223, + "src": "299:12:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 7201, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "299:6:83", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7204, + "name": "initialRate", + "nodeType": "VariableDeclaration", + "scope": 7223, + "src": "321:19:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "321:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7206, + "name": "finalRate", + "nodeType": "VariableDeclaration", + "scope": 7223, + "src": "350:17:83", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "350:7:83", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "199:174:83" + }, + "returnParameters": { + "id": 7221, + "nodeType": "ParameterList", + "parameters": [], + "src": "545:0:83" + }, + "scope": 7224, + "src": "187:422:83", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7225, + "src": "115:496:83" + } + ], + "src": "0:612:83" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051620015c8380380620015c8833981810160405260c081101561003557600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508181878785888860016000806101000a81548160ff0219169083151502179055506000831161010f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610196576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620015a36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561021d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806200157f6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505042821015610303576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180620014a76033913960400191505060405180910390fd5b81811161035c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806200151f6037913960400191505060405180910390fd5b81600481905550806005819055505050600081116103c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620015566029913960400191505060405180910390fd5b80821161041f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180620014da6045913960600191505060405180910390fd5b8160068190555080600781905550505050505050505061106280620004456000396000f3fe6080604052600436106100a75760003560e01c8063521eb27311610064578063521eb273146101c35780639e51051f1461021a578063b7a8807c14610245578063ec8ac4d814610270578063f7fb07b0146102b4578063fc0c546a146102df576100a7565b80631515bc2b146100b957806321106109146100e85780632c4e722e146101135780634042b66f1461013e57806347535d7b146101695780634b6753bc14610198575b6100b76100b2610336565b61033e565b005b3480156100c557600080fd5b506100ce6104c9565b604051808215151515815260200191505060405180910390f35b3480156100f457600080fd5b506100fd6104d5565b6040518082815260200191505060405180910390f35b34801561011f57600080fd5b506101286104df565b6040518082815260200191505060405180910390f35b34801561014a57600080fd5b50610153610532565b6040518082815260200191505060405180910390f35b34801561017557600080fd5b5061017e61053c565b604051808215151515815260200191505060405180910390f35b3480156101a457600080fd5b506101ad610557565b6040518082815260200191505060405180910390f35b3480156101cf57600080fd5b506101d8610561565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022657600080fd5b5061022f61058b565b6040518082815260200191505060405180910390f35b34801561025157600080fd5b5061025a610595565b6040518082815260200191505060405180910390f35b6102b26004803603602081101561028657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061033e565b005b3480156102c057600080fd5b506102c961059f565b6040518082815260200191505060405180910390f35b3480156102eb57600080fd5b506102f4610656565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166103bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506103e8828261067f565b60006103f382610707565b905061040a8260035461072f90919063ffffffff16565b60038190555061041a83826107b7565b8273ffffffffffffffffffffffffffffffffffffffff16610439610336565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361049883836107c5565b6104a06107c9565b6104aa8383610834565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600754905090565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610f926027913960400191505060405180910390fd5b6000600354905090565b6000600454421015801561055257506005544211155b905090565b6000600554905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600654905090565b6000600454905090565b60006105a961053c565b6105b65760009050610653565b60006105d26105c3610595565b4261083890919063ffffffff16565b905060006105f76105e1610595565b6105e9610557565b61083890919063ffffffff16565b9050600061061260075460065461083890919063ffffffff16565b905061064d61063c8361062e848761088290919063ffffffff16565b61090890919063ffffffff16565b60065461083890919063ffffffff16565b93505050505b90565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61068761053c565b6106f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6107038282610952565b5050565b60008061071261059f565b9050610727838261088290919063ffffffff16565b915050919050565b6000808284019050838110156107ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6107c18282610a53565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610831573d6000803e3d6000fd5b50565b5050565b600061087a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610aa4565b905092915050565b6000808314156108955760009050610902565b60008284029050828482816108a657fe5b04146108fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fb96021913960400191505060405180910390fd5b809150505b92915050565b600061094a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b64565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610fda602a913960400191505060405180910390fd5b6000811415610a4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b610aa08282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2a9092919063ffffffff16565b5050565b6000838311158290610b51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b16578082015181840152602081019050610afb565b50505050905090810190601f168015610b435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290610c10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bd5578082015181840152602081019050610bba565b50505050905090810190601f168015610c025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c1c57fe5b049050809150509392505050565b610cf6838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cfb565b505050565b610d1a8273ffffffffffffffffffffffffffffffffffffffff16610f46565b610d8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610ddb5780518252602082019150602081019050602083039250610db8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e3d576040519150601f19603f3d011682016040523d82523d6000602084013e610e42565b606091505b509150915081610eba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610f4057808060200190516020811015610ed957600080fd5b8101908080519060200190929190505050610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611004602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610f8857506000801b8214155b9250505091905056fe496e6372656173696e67507269636543726f776473616c653a207261746528292063616c6c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820b3e6e5181bda0001333168f2eb5d9fafa6e99859db4b8ebcb3dc04a4612846ed64736f6c6343000511003254696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d65496e6372656173696e67507269636543726f776473616c653a20696e697469616c2072617465206973206e6f742067726561746572207468616e2066696e616c207261746554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d65496e6372656173696e67507269636543726f776473616c653a2066696e616c2072617465206973203043726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100a75760003560e01c8063521eb27311610064578063521eb273146101c35780639e51051f1461021a578063b7a8807c14610245578063ec8ac4d814610270578063f7fb07b0146102b4578063fc0c546a146102df576100a7565b80631515bc2b146100b957806321106109146100e85780632c4e722e146101135780634042b66f1461013e57806347535d7b146101695780634b6753bc14610198575b6100b76100b2610336565b61033e565b005b3480156100c557600080fd5b506100ce6104c9565b604051808215151515815260200191505060405180910390f35b3480156100f457600080fd5b506100fd6104d5565b6040518082815260200191505060405180910390f35b34801561011f57600080fd5b506101286104df565b6040518082815260200191505060405180910390f35b34801561014a57600080fd5b50610153610532565b6040518082815260200191505060405180910390f35b34801561017557600080fd5b5061017e61053c565b604051808215151515815260200191505060405180910390f35b3480156101a457600080fd5b506101ad610557565b6040518082815260200191505060405180910390f35b3480156101cf57600080fd5b506101d8610561565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022657600080fd5b5061022f61058b565b6040518082815260200191505060405180910390f35b34801561025157600080fd5b5061025a610595565b6040518082815260200191505060405180910390f35b6102b26004803603602081101561028657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061033e565b005b3480156102c057600080fd5b506102c961059f565b6040518082815260200191505060405180910390f35b3480156102eb57600080fd5b506102f4610656565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166103bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506103e8828261067f565b60006103f382610707565b905061040a8260035461072f90919063ffffffff16565b60038190555061041a83826107b7565b8273ffffffffffffffffffffffffffffffffffffffff16610439610336565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361049883836107c5565b6104a06107c9565b6104aa8383610834565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600754905090565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610f926027913960400191505060405180910390fd5b6000600354905090565b6000600454421015801561055257506005544211155b905090565b6000600554905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600654905090565b6000600454905090565b60006105a961053c565b6105b65760009050610653565b60006105d26105c3610595565b4261083890919063ffffffff16565b905060006105f76105e1610595565b6105e9610557565b61083890919063ffffffff16565b9050600061061260075460065461083890919063ffffffff16565b905061064d61063c8361062e848761088290919063ffffffff16565b61090890919063ffffffff16565b60065461083890919063ffffffff16565b93505050505b90565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61068761053c565b6106f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6107038282610952565b5050565b60008061071261059f565b9050610727838261088290919063ffffffff16565b915050919050565b6000808284019050838110156107ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6107c18282610a53565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610831573d6000803e3d6000fd5b50565b5050565b600061087a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610aa4565b905092915050565b6000808314156108955760009050610902565b60008284029050828482816108a657fe5b04146108fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610fb96021913960400191505060405180910390fd5b809150505b92915050565b600061094a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b64565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610fda602a913960400191505060405180910390fd5b6000811415610a4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b610aa08282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2a9092919063ffffffff16565b5050565b6000838311158290610b51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b16578082015181840152602081019050610afb565b50505050905090810190601f168015610b435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290610c10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bd5578082015181840152602081019050610bba565b50505050905090810190601f168015610c025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c1c57fe5b049050809150509392505050565b610cf6838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610cfb565b505050565b610d1a8273ffffffffffffffffffffffffffffffffffffffff16610f46565b610d8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610ddb5780518252602082019150602081019050602083039250610db8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e3d576040519150601f19603f3d011682016040523d82523d6000602084013e610e42565b606091505b509150915081610eba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610f4057808060200190516020811015610ed957600080fd5b8101908080519060200190929190505050610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611004602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610f8857506000801b8214155b9250505091905056fe496e6372656173696e67507269636543726f776473616c653a207261746528292063616c6c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820b3e6e5181bda0001333168f2eb5d9fafa6e99859db4b8ebcb3dc04a4612846ed64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsale.json new file mode 100644 index 0000000..93c9e1c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsale.json @@ -0,0 +1,1667 @@ +{ + "fileName": "IndividuallyCappedCrowdsale.sol", + "contractName": "IndividuallyCappedCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../Crowdsale.sol\";\nimport \"../../access/roles/CapperRole.sol\";\n\n/**\n * @title IndividuallyCappedCrowdsale\n * @dev Crowdsale with per-beneficiary caps.\n */\ncontract IndividuallyCappedCrowdsale is Crowdsale, CapperRole {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _contributions;\n mapping(address => uint256) private _caps;\n\n /**\n * @dev Sets a specific beneficiary's maximum contribution.\n * @param beneficiary Address to be capped\n * @param cap Wei limit for individual contribution\n */\n function setCap(address beneficiary, uint256 cap) external onlyCapper {\n _caps[beneficiary] = cap;\n }\n\n /**\n * @dev Returns the cap of a specific beneficiary.\n * @param beneficiary Address whose cap is to be checked\n * @return Current cap for individual beneficiary\n */\n function getCap(address beneficiary) public view returns (uint256) {\n return _caps[beneficiary];\n }\n\n /**\n * @dev Returns the amount contributed so far by a specific beneficiary.\n * @param beneficiary Address of contributor\n * @return Beneficiary contribution so far\n */\n function getContribution(address beneficiary) public view returns (uint256) {\n return _contributions[beneficiary];\n }\n\n /**\n * @dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap.\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n super._preValidatePurchase(beneficiary, weiAmount);\n // solhint-disable-next-line max-line-length\n require(_contributions[beneficiary].add(weiAmount) <= _caps[beneficiary], \"IndividuallyCappedCrowdsale: beneficiary's cap exceeded\");\n }\n\n /**\n * @dev Extend parent behavior to update beneficiary contributions.\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal {\n super._updatePurchasingState(beneficiary, weiAmount);\n _contributions[beneficiary] = _contributions[beneficiary].add(weiAmount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "getCap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "getContribution", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCapper", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "name": "setCap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "exportedSymbols": { + "IndividuallyCappedCrowdsale": [ + 2912 + ] + }, + "id": 2913, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2798, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:22" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2799, + "nodeType": "ImportDirective", + "scope": 2913, + "sourceUnit": 5300, + "src": "25:33:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 2800, + "nodeType": "ImportDirective", + "scope": 2913, + "sourceUnit": 2120, + "src": "59:26:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/roles/CapperRole.sol", + "file": "../../access/roles/CapperRole.sol", + "id": 2801, + "nodeType": "ImportDirective", + "scope": 2913, + "sourceUnit": 1302, + "src": "86:43:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2802, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "262:9:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2803, + "nodeType": "InheritanceSpecifier", + "src": "262:9:22" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2804, + "name": "CapperRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1301, + "src": "273:10:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CapperRole_$1301", + "typeString": "contract CapperRole" + } + }, + "id": 2805, + "nodeType": "InheritanceSpecifier", + "src": "273:10:22" + } + ], + "contractDependencies": [ + 26, + 1301, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": "@title IndividuallyCappedCrowdsale\n@dev Crowdsale with per-beneficiary caps.", + "fullyImplemented": false, + "id": 2912, + "linearizedBaseContracts": [ + 2912, + 1301, + 2119, + 13820, + 26 + ], + "name": "IndividuallyCappedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2808, + "libraryName": { + "contractScope": null, + "id": 2806, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "296:8:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "290:27:22", + "typeName": { + "id": 2807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "309:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2812, + "name": "_contributions", + "nodeType": "VariableDeclaration", + "scope": 2912, + "src": "323:50:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 2811, + "keyType": { + "id": 2809, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "331:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "323:27:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 2810, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "342:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2816, + "name": "_caps", + "nodeType": "VariableDeclaration", + "scope": 2912, + "src": "379:41:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 2815, + "keyType": { + "id": 2813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "387:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "379:27:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 2814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "398:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2831, + "nodeType": "Block", + "src": "680:41:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2825, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2816, + "src": "690:5:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2827, + "indexExpression": { + "argumentTypes": null, + "id": 2826, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "696:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "690:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2828, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "711:3:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "690:24:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2830, + "nodeType": "ExpressionStatement", + "src": "690:24:22" + } + ] + }, + "documentation": "@dev Sets a specific beneficiary's maximum contribution.\n@param beneficiary Address to be capped\n@param cap Wei limit for individual contribution", + "id": 2832, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2823, + "modifierName": { + "argumentTypes": null, + "id": 2822, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "669:10:22", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "669:10:22" + } + ], + "name": "setCap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2818, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "626:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2820, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "647:11:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "647:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:34:22" + }, + "returnParameters": { + "id": 2824, + "nodeType": "ParameterList", + "parameters": [], + "src": "680:0:22" + }, + "scope": 2912, + "src": "610:111:22", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2843, + "nodeType": "Block", + "src": "980:42:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2839, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2816, + "src": "997:5:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2841, + "indexExpression": { + "argumentTypes": null, + "id": 2840, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2834, + "src": "1003:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "997:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2838, + "id": 2842, + "nodeType": "Return", + "src": "990:25:22" + } + ] + }, + "documentation": "@dev Returns the cap of a specific beneficiary.\n@param beneficiary Address whose cap is to be checked\n@return Current cap for individual beneficiary", + "id": 2844, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2834, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2844, + "src": "929:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "929:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "928:21:22" + }, + "returnParameters": { + "id": 2838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2837, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2844, + "src": "971:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "970:9:22" + }, + "scope": 2912, + "src": "913:109:22", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2855, + "nodeType": "Block", + "src": "1293:51:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2851, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "1310:14:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2853, + "indexExpression": { + "argumentTypes": null, + "id": 2852, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "1325:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1310:27:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2850, + "id": 2854, + "nodeType": "Return", + "src": "1303:34:22" + } + ] + }, + "documentation": "@dev Returns the amount contributed so far by a specific beneficiary.\n@param beneficiary Address of contributor\n@return Beneficiary contribution so far", + "id": 2856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getContribution", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2847, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2846, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2856, + "src": "1242:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1242:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1241:21:22" + }, + "returnParameters": { + "id": 2850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2849, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2856, + "src": "1284:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2848, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1284:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1283:9:22" + }, + "scope": 2912, + "src": "1217:127:22", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2884, + "nodeType": "Block", + "src": "1638:262:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2866, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "1675:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2867, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2860, + "src": "1688:9:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2863, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14036, + "src": "1648:5:22", + "typeDescriptions": { + "typeIdentifier": "t_super$_IndividuallyCappedCrowdsale_$2912", + "typeString": "contract super IndividuallyCappedCrowdsale" + } + }, + "id": 2865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 2050, + "src": "1648:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 2868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:50:22", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2869, + "nodeType": "ExpressionStatement", + "src": "1648:50:22" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2875, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2860, + "src": "1801:9:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2871, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "1769:14:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2873, + "indexExpression": { + "argumentTypes": null, + "id": 2872, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "1784:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1769:27:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5139, + "src": "1769:31:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1769:42:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2877, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2816, + "src": "1815:5:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2879, + "indexExpression": { + "argumentTypes": null, + "id": 2878, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2858, + "src": "1821:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1815:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1769:64:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e646976696475616c6c7943617070656443726f776473616c653a2062656e6566696369617279277320636170206578636565646564", + "id": 2881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1835:57:22", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d745a780982d4d6a34964211cd456fcfed21fc8adf57fd2f36cb57cfa66cf2ff", + "typeString": "literal_string \"IndividuallyCappedCrowdsale: beneficiary's cap exceeded\"" + }, + "value": "IndividuallyCappedCrowdsale: beneficiary's cap exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d745a780982d4d6a34964211cd456fcfed21fc8adf57fd2f36cb57cfa66cf2ff", + "typeString": "literal_string \"IndividuallyCappedCrowdsale: beneficiary's cap exceeded\"" + } + ], + "id": 2870, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1761:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1761:132:22", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2883, + "nodeType": "ExpressionStatement", + "src": "1761:132:22" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 2885, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2858, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2885, + "src": "1584:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1584:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2860, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2885, + "src": "1605:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1605:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1583:40:22" + }, + "returnParameters": { + "id": 2862, + "nodeType": "ParameterList", + "parameters": [], + "src": "1638:0:22" + }, + "scope": 2912, + "src": "1554:346:22", + "stateMutability": "view", + "superFunction": 2050, + "visibility": "internal" + }, + { + "body": { + "id": 2910, + "nodeType": "Block", + "src": "2167:151:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2895, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "2206:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2896, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2889, + "src": "2219:9:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2892, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14036, + "src": "2177:5:22", + "typeDescriptions": { + "typeIdentifier": "t_super$_IndividuallyCappedCrowdsale_$2912", + "typeString": "contract super IndividuallyCappedCrowdsale" + } + }, + "id": 2894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_updatePurchasingState", + "nodeType": "MemberAccess", + "referencedDeclaration": 2094, + "src": "2177:28:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2177:52:22", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2898, + "nodeType": "ExpressionStatement", + "src": "2177:52:22" + }, + { + "expression": { + "argumentTypes": null, + "id": 2908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2899, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "2239:14:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2901, + "indexExpression": { + "argumentTypes": null, + "id": 2900, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "2254:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2239:27:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2906, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2889, + "src": "2301:9:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2902, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "2269:14:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2904, + "indexExpression": { + "argumentTypes": null, + "id": 2903, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "2284:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2269:27:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5139, + "src": "2269:31:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2269:42:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2239:72:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2909, + "nodeType": "ExpressionStatement", + "src": "2239:72:22" + } + ] + }, + "documentation": "@dev Extend parent behavior to update beneficiary contributions.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 2911, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updatePurchasingState", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2887, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2911, + "src": "2118:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2886, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2118:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2889, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2911, + "src": "2139:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2139:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2117:40:22" + }, + "returnParameters": { + "id": 2891, + "nodeType": "ParameterList", + "parameters": [], + "src": "2167:0:22" + }, + "scope": 2912, + "src": "2086:232:22", + "stateMutability": "nonpayable", + "superFunction": 2094, + "visibility": "internal" + } + ], + "scope": 2913, + "src": "222:2098:22" + } + ], + "src": "0:2321:22" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsaleImpl.json new file mode 100644 index 0000000..c82bca2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/IndividuallyCappedCrowdsaleImpl.json @@ -0,0 +1,609 @@ +{ + "fileName": "IndividuallyCappedCrowdsaleImpl.sol", + "contractName": "IndividuallyCappedCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/validation/IndividuallyCappedCrowdsale.sol\";\nimport \"./CapperRoleMock.sol\";\n\ncontract IndividuallyCappedCrowdsaleImpl is IndividuallyCappedCrowdsale, CapperRoleMock {\n constructor (uint256 rate, address payable wallet, IERC20 token) public Crowdsale(rate, wallet, token) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol", + "sourceMap": "159:263:84:-;;;253:167;8:9:-1;5:2;;;30:1;27;20:12;5:2;253:167:84;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;253:167:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;335:4;341:6;349:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;318:24:7;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;253:167:84;;;159:263;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:7:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;159:263:84:-;;;;;;;", + "deployedSourceMap": "159:263:84:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;159:263:84;1217:127:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1217:127:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1217:127:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;494:107:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;494:107:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;111:85:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;111:85:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;111:85:50;;;;;;;;;;;;;;;;;;;:::i;:::-;;3568::13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;703:77:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;703:77:7;;;:::i;:::-;;610:111:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:111:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;610:111:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;607:90:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;607:90:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;913:109:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;913:109:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;913:109:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;202:113:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;202:113:50;;;:::i;:::-;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;1217:127:22:-;1284:7;1310:14;:27;1325:11;1310:27;;;;;;;;;;;;;;;;1303:34;;1217:127;;;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;494:107:7:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;111:85:50:-;167:22;181:7;167:13;:22::i;:::-;111:85;:::o;3568::13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;3258:87::-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;703:77:7:-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;610:111:22:-;395:22:7;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:3:22;690:5;:18;696:11;690:18;;;;;;;;;;;;;;;:24;;;;610:111;;:::o;607:90:7:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;913:109:22:-;971:7;997:5;:18;1003:11;997:18;;;;;;;;;;;;;;;;990:25;;913:109;;;:::o;202:113:50:-;395:22:7;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113:50:o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;1554:346:22:-;1648:50;1675:11;1688:9;1648:26;:50::i;:::-;1815:5;:18;1821:11;1815:18;;;;;;;;;;;;;;;;1769:42;1801:9;1769:14;:27;1784:11;1769:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;:64;;1761:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1554:346;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;2086:232:22:-;2177:52;2206:11;2219:9;2177:28;:52::i;:::-;2269:42;2301:9;2269:14;:27;2284:11;2269:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;2239:14;:27;2254:11;2239:27;;;;;;;;;;;;;;;:72;;;;2086:232;;:::o;7565:78:13:-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;394:94:50:-;453:28;473:7;453:19;:28::i;:::-;394:94;:::o;786:119:7:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;6964:145::-;;;:::o;911:127:7:-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;510:180:6:-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o;2666:1095:126:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CapperRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "getCap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "getContribution", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCapper", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyCapperMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + } + ], + "name": "setCap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol", + "exportedSymbols": { + "IndividuallyCappedCrowdsaleImpl": [ + 7249 + ] + }, + "id": 7250, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7226, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:84" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 7227, + "nodeType": "ImportDirective", + "scope": 7250, + "sourceUnit": 10217, + "src": "25:35:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "file": "../crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "id": 7228, + "nodeType": "ImportDirective", + "scope": 7250, + "sourceUnit": 2913, + "src": "61:65:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/mocks/CapperRoleMock.sol", + "file": "./CapperRoleMock.sol", + "id": 7229, + "nodeType": "ImportDirective", + "scope": 7250, + "sourceUnit": 5472, + "src": "127:30:84", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7230, + "name": "IndividuallyCappedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2912, + "src": "203:27:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IndividuallyCappedCrowdsale_$2912", + "typeString": "contract IndividuallyCappedCrowdsale" + } + }, + "id": 7231, + "nodeType": "InheritanceSpecifier", + "src": "203:27:84" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7232, + "name": "CapperRoleMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5471, + "src": "232:14:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CapperRoleMock_$5471", + "typeString": "contract CapperRoleMock" + } + }, + "id": 7233, + "nodeType": "InheritanceSpecifier", + "src": "232:14:84" + } + ], + "contractDependencies": [ + 26, + 1301, + 2119, + 2912, + 5471, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7249, + "linearizedBaseContracts": [ + 7249, + 5471, + 2912, + 1301, + 2119, + 13820, + 26 + ], + "name": "IndividuallyCappedCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7247, + "nodeType": "Block", + "src": "356:64:84", + "statements": [] + }, + "documentation": null, + "id": 7248, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7242, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7235, + "src": "335:4:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7243, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7237, + "src": "341:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7244, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7239, + "src": "349:5:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 7245, + "modifierName": { + "argumentTypes": null, + "id": 7241, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "325:9:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "325:30:84" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7235, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "266:12:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7234, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "266:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7237, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "280:22:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7236, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "280:15:84", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7239, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "304:12:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 7238, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "304:6:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "265:52:84" + }, + "returnParameters": { + "id": 7246, + "nodeType": "ParameterList", + "parameters": [], + "src": "356:0:84" + }, + "scope": 7249, + "src": "253:167:84", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7250, + "src": "159:263:84" + } + ], + "src": "0:423:84" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001aad38038062001aad833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082828260016000806101000a81548160ff02191690831515021790555060008311620000f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018062001a886025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062001a426024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002ac620002a0620002b560201b60201c565b620002bd60201b60201c565b505050620004e2565b600033905090565b620002d88160046200031e60201b62000efd1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167fa7555c95b69d4f5cc847881feb4ab2883a1921319e34fa2043747b793d65b36e60405160405180910390a250565b6200033082826200040260201b60201c565b15620003a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200048b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001a666022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61155080620004f26000396000f3fe6080604052600436106100c25760003560e01c80635d5576f81161007f578063b3aefb7511610059578063b3aefb7514610363578063d1e07bcb146103c8578063ec8ac4d8146103df578063fc0c546a14610423576100c2565b80635d5576f8146102a057806380ad2cf3146102b75780638dfbcf3614610312576100c2565b806321eff7fc146100d45780632c4e722e1461013957806339564561146101645780633f4a6484146101cd5780634042b66f1461021e578063521eb27314610249575b6100d26100cd61047a565b610482565b005b3480156100e057600080fd5b50610123600480360360208110156100f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b6040518082815260200191505060405180910390f35b34801561014557600080fd5b5061014e610656565b6040518082815260200191505060405180910390f35b34801561017057600080fd5b506101b36004803603602081101561018757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610660565b604051808215151515815260200191505060405180910390f35b3480156101d957600080fd5b5061021c600480360360208110156101f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061067d565b005b34801561022a57600080fd5b50610233610689565b6040518082815260200191505060405180910390f35b34801561025557600080fd5b5061025e610693565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102ac57600080fd5b506102b56106bd565b005b3480156102c357600080fd5b50610310600480360360408110156102da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106cf565b005b34801561031e57600080fd5b506103616004803603602081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077c565b005b34801561036f57600080fd5b506103b26004803603602081101561038657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107ed565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b506103dd610836565b005b610421600480360360208110156103f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610482565b005b34801561042f57600080fd5b5061043861089d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610503576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061052c82826108c6565b6000610537826109bd565b905061054e826003546109db90919063ffffffff16565b60038190555061055e8382610a63565b8273ffffffffffffffffffffffffffffffffffffffff1661057d61047a565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36105dc8383610a71565b6105e4610b14565b6105ee8383610b7f565b505060016000806101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600254905090565b6000610676826004610b8390919063ffffffff16565b9050919050565b61068681610c61565b50565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106cd6106c861047a565b610c61565b565b6106df6106da61047a565b610660565b610734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ec6030913960400191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61078c61078761047a565b610660565b6107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ec6030913960400191505060405180910390fd5b6107ea81610c6d565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61084661084161047a565b610660565b61089b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ec6030913960400191505060405180910390fd5b565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108d08282610cc7565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461096282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109db90919063ffffffff16565b11156109b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061148b6037913960400191505060405180910390fd5b5050565b60006109d460025483610dc890919063ffffffff16565b9050919050565b600080828401905083811015610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610a6d8282610e4e565b5050565b610a7b8282610e9f565b610acd81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109db90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610b7c573d6000803e3d6000fd5b50565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061143f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610c6a81610ea3565b50565b610c81816004610efd90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fa7555c95b69d4f5cc847881feb4ab2883a1921319e34fa2043747b793d65b36e60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611461602a913960400191505060405180910390fd5b6000811415610dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610ddb5760009050610e48565b6000828402905082848281610dec57fe5b0414610e43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061141e6021913960400191505060405180910390fd5b809150505b92915050565b610e9b8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fd89092919063ffffffff16565b5050565b5050565b610eb78160046110a990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f427400d279c506df610224b22ecce89b693fc1865864113f21c8d19c1f0c2a3b60405160405180910390a250565b610f078282610b83565b15610f7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6110a4838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611166565b505050565b6110b38282610b83565b611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113fd6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111858273ffffffffffffffffffffffffffffffffffffffff166113b1565b6111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112465780518252602082019150602081019050602083039250611223565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112a8576040519150601f19603f3d011682016040523d82523d6000602084013e6112ad565b606091505b509150915081611325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156113ab5780806020019051602081101561134457600080fd5b81019080805190602001909291905050506113aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806114c2602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156113f357506000801b8214155b9250505091905056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373496e646976696475616c6c7943617070656443726f776473616c653a2062656e65666963696172792773206361702065786365656465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564436170706572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043617070657220726f6c65a265627a7a72315820d455b6fe861d64934356f8ad117251847b3761770f9c1d9dbbfd026d12f7889564736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100c25760003560e01c80635d5576f81161007f578063b3aefb7511610059578063b3aefb7514610363578063d1e07bcb146103c8578063ec8ac4d8146103df578063fc0c546a14610423576100c2565b80635d5576f8146102a057806380ad2cf3146102b75780638dfbcf3614610312576100c2565b806321eff7fc146100d45780632c4e722e1461013957806339564561146101645780633f4a6484146101cd5780634042b66f1461021e578063521eb27314610249575b6100d26100cd61047a565b610482565b005b3480156100e057600080fd5b50610123600480360360208110156100f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b6040518082815260200191505060405180910390f35b34801561014557600080fd5b5061014e610656565b6040518082815260200191505060405180910390f35b34801561017057600080fd5b506101b36004803603602081101561018757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610660565b604051808215151515815260200191505060405180910390f35b3480156101d957600080fd5b5061021c600480360360208110156101f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061067d565b005b34801561022a57600080fd5b50610233610689565b6040518082815260200191505060405180910390f35b34801561025557600080fd5b5061025e610693565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102ac57600080fd5b506102b56106bd565b005b3480156102c357600080fd5b50610310600480360360408110156102da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106cf565b005b34801561031e57600080fd5b506103616004803603602081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077c565b005b34801561036f57600080fd5b506103b26004803603602081101561038657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107ed565b6040518082815260200191505060405180910390f35b3480156103d457600080fd5b506103dd610836565b005b610421600480360360208110156103f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610482565b005b34801561042f57600080fd5b5061043861089d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610503576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061052c82826108c6565b6000610537826109bd565b905061054e826003546109db90919063ffffffff16565b60038190555061055e8382610a63565b8273ffffffffffffffffffffffffffffffffffffffff1661057d61047a565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36105dc8383610a71565b6105e4610b14565b6105ee8383610b7f565b505060016000806101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600254905090565b6000610676826004610b8390919063ffffffff16565b9050919050565b61068681610c61565b50565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106cd6106c861047a565b610c61565b565b6106df6106da61047a565b610660565b610734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ec6030913960400191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61078c61078761047a565b610660565b6107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ec6030913960400191505060405180910390fd5b6107ea81610c6d565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61084661084161047a565b610660565b61089b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806114ec6030913960400191505060405180910390fd5b565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108d08282610cc7565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461096282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109db90919063ffffffff16565b11156109b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061148b6037913960400191505060405180910390fd5b5050565b60006109d460025483610dc890919063ffffffff16565b9050919050565b600080828401905083811015610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610a6d8282610e4e565b5050565b610a7b8282610e9f565b610acd81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109db90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610b7c573d6000803e3d6000fd5b50565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061143f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610c6a81610ea3565b50565b610c81816004610efd90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fa7555c95b69d4f5cc847881feb4ab2883a1921319e34fa2043747b793d65b36e60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611461602a913960400191505060405180910390fd5b6000811415610dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610ddb5760009050610e48565b6000828402905082848281610dec57fe5b0414610e43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061141e6021913960400191505060405180910390fd5b809150505b92915050565b610e9b8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fd89092919063ffffffff16565b5050565b5050565b610eb78160046110a990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f427400d279c506df610224b22ecce89b693fc1865864113f21c8d19c1f0c2a3b60405160405180910390a250565b610f078282610b83565b15610f7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6110a4838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611166565b505050565b6110b38282610b83565b611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113fd6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111858273ffffffffffffffffffffffffffffffffffffffff166113b1565b6111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112465780518252602082019150602081019050602083039250611223565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112a8576040519150601f19603f3d011682016040523d82523d6000602084013e6112ad565b606091505b509150915081611325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156113ab5780806020019051602081101561134457600080fd5b81019080805190602001909291905050506113aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806114c2602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156113f357506000801b8214155b9250505091905056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373496e646976696475616c6c7943617070656443726f776473616c653a2062656e65666963696172792773206361702065786365656465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564436170706572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652043617070657220726f6c65a265627a7a72315820d455b6fe861d64934356f8ad117251847b3761770f9c1d9dbbfd026d12f7889564736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Math.json b/node_modules/@openzeppelin/contracts/build/contracts/Math.json new file mode 100644 index 0000000..857950d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Math.json @@ -0,0 +1,993 @@ +{ + "fileName": "Math.sol", + "contractName": "Math", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a >= b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow, so we distribute\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\n }\n}\n", + "sourcePath": "contracts/math/Math.sol", + "sourceMap": "132:668:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "132:668:16:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/math/Math.sol", + "exportedSymbols": { + "Math": [ + 2225 + ] + }, + "id": 2226, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2154, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:16" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2155, + "nodeType": "StructuredDocumentation", + "src": "58:73:16", + "text": " @dev Standard math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 2225, + "linearizedBaseContracts": [ + 2225 + ], + "name": "Math", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2172, + "nodeType": "Block", + "src": "282:38:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2165, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2158, + "src": "299:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2166, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2160, + "src": "304:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "299:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2169, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2160, + "src": "312:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "299:14:16", + "trueExpression": { + "argumentTypes": null, + "id": 2168, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2158, + "src": "308:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2164, + "id": 2171, + "nodeType": "Return", + "src": "292:21:16" + } + ] + }, + "documentation": { + "id": 2156, + "nodeType": "StructuredDocumentation", + "src": "151:59:16", + "text": " @dev Returns the largest of two numbers." + }, + "id": 2173, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2161, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2158, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2173, + "src": "228:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2160, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2173, + "src": "239:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "239:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "227:22:16" + }, + "returnParameters": { + "id": 2164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2163, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2173, + "src": "273:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "273:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "272:9:16" + }, + "scope": 2225, + "src": "215:105:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2190, + "nodeType": "Block", + "src": "458:37:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2183, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "475:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2184, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "479:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "475:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 2187, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2178, + "src": "487:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "475:13:16", + "trueExpression": { + "argumentTypes": null, + "id": 2186, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "483:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2182, + "id": 2189, + "nodeType": "Return", + "src": "468:20:16" + } + ] + }, + "documentation": { + "id": 2174, + "nodeType": "StructuredDocumentation", + "src": "326:60:16", + "text": " @dev Returns the smallest of two numbers." + }, + "id": 2191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2176, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2191, + "src": "404:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "404:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2178, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2191, + "src": "415:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "415:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "403:22:16" + }, + "returnParameters": { + "id": 2182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2181, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2191, + "src": "449:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2180, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "449:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "448:9:16" + }, + "scope": 2225, + "src": "391:104:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2223, + "nodeType": "Block", + "src": "679:119:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2201, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "751:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "755:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "751:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2204, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "750:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2205, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "761:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "765:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "761:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2208, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "760:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "750:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2210, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "772:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "776:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "772:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2213, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "780:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "784:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "780:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "772:13:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2217, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "771:15:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "789:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "771:19:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2220, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "770:21:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "750:41:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2200, + "id": 2222, + "nodeType": "Return", + "src": "743:48:16" + } + ] + }, + "documentation": { + "id": 2192, + "nodeType": "StructuredDocumentation", + "src": "501:102:16", + "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero." + }, + "id": 2224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2194, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2224, + "src": "625:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "625:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2196, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2224, + "src": "636:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "636:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "624:22:16" + }, + "returnParameters": { + "id": 2200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2199, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2224, + "src": "670:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2198, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "670:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "669:9:16" + }, + "scope": 2225, + "src": "608:190:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2226, + "src": "132:668:16" + } + ], + "src": "33:768:16" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033ef7abcc6dc6ac7184722a3614536d7abb2efb5c47e5e561ae234ad335b55a664736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033ef7abcc6dc6ac7184722a3614536d7abb2efb5c47e5e561ae234ad335b55a664736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MathMock.json b/node_modules/@openzeppelin/contracts/build/contracts/MathMock.json new file mode 100644 index 0000000..dd0a37f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MathMock.json @@ -0,0 +1,777 @@ +{ + "fileName": "MathMock.sol", + "contractName": "MathMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../math/Math.sol\";\n\ncontract MathMock {\n function max(uint256 a, uint256 b) public pure returns (uint256) {\n return Math.max(a, b);\n }\n\n function min(uint256 a, uint256 b) public pure returns (uint256) {\n return Math.min(a, b);\n }\n\n function average(uint256 a, uint256 b) public pure returns (uint256) {\n return Math.average(a, b);\n }\n}\n", + "sourcePath": "contracts/mocks/MathMock.sol", + "sourceMap": "86:355:52:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "86:355:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;328:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;110:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;328:111;388:7;414:18;427:1;430;414:12;:18::i;:::-;407:25;;328:111;;;;:::o;110:103::-;166:7;192:14;201:1;204;192:8;:14::i;:::-;185:21;;110:103;;;;:::o;219:::-;275:7;301:14;310:1;313;301:8;:14::i;:::-;294:21;;219:103;;;;:::o;608:190:17:-;670:7;789:1;784;780;:5;;;;;;776:1;772;:5;;;;;;:13;771:19;;;;;;765:1;761;:5;;;;;;755:1;751;:5;;;;;;750:17;:41;743:48;;608:190;;;;:::o;215:105::-;273:7;304:1;299;:6;;:14;;312:1;299:14;;;308:1;299:14;292:21;;215:105;;;;:::o;391:104::-;449:7;479:1;475;:5;:13;;487:1;475:13;;;483:1;475:13;468:20;;391:104;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "average", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "max", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "min", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/MathMock.sol", + "exportedSymbols": { + "MathMock": [ + 5031 + ] + }, + "id": 5032, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4981, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:52" + }, + { + "absolutePath": "contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 4982, + "nodeType": "ImportDirective", + "scope": 5032, + "sourceUnit": 2614, + "src": "58:26:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5031, + "linearizedBaseContracts": [ + 5031 + ], + "name": "MathMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4997, + "nodeType": "Block", + "src": "175:38:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4993, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4984, + "src": "201:1:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4994, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4986, + "src": "204:1:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4991, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "192:4:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2613_$", + "typeString": "type(library Math)" + } + }, + "id": 4992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "referencedDeclaration": 2561, + "src": "192:8:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 4995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "192:14:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4990, + "id": 4996, + "nodeType": "Return", + "src": "185:21:52" + } + ] + }, + "documentation": null, + "functionSelector": "6d5433e6", + "id": 4998, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4984, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4998, + "src": "123:9:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "123:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4986, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4998, + "src": "134:9:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4985, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "134:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "122:22:52" + }, + "returnParameters": { + "id": 4990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4989, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4998, + "src": "166:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "166:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "165:9:52" + }, + "scope": 5031, + "src": "110:103:52", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5013, + "nodeType": "Block", + "src": "284:38:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5009, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5000, + "src": "310:1:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5010, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5002, + "src": "313:1:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5007, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "301:4:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2613_$", + "typeString": "type(library Math)" + } + }, + "id": 5008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 2579, + "src": "301:8:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "301:14:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5006, + "id": 5012, + "nodeType": "Return", + "src": "294:21:52" + } + ] + }, + "documentation": null, + "functionSelector": "7ae2b5c7", + "id": 5014, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5000, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5014, + "src": "232:9:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "232:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5002, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5014, + "src": "243:9:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "243:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "231:22:52" + }, + "returnParameters": { + "id": 5006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5005, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5014, + "src": "275:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "275:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "274:9:52" + }, + "scope": 5031, + "src": "219:103:52", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5029, + "nodeType": "Block", + "src": "397:42:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5025, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5016, + "src": "427:1:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5026, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5018, + "src": "430:1:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5023, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "414:4:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$2613_$", + "typeString": "type(library Math)" + } + }, + "id": 5024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "average", + "nodeType": "MemberAccess", + "referencedDeclaration": 2612, + "src": "414:12:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "414:18:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5022, + "id": 5028, + "nodeType": "Return", + "src": "407:25:52" + } + ] + }, + "documentation": null, + "functionSelector": "2b7423ab", + "id": 5030, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5016, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5030, + "src": "345:9:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5015, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "345:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5018, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5030, + "src": "356:9:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "356:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "344:22:52" + }, + "returnParameters": { + "id": 5022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5021, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5030, + "src": "388:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "388:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "387:9:52" + }, + "scope": 5031, + "src": "328:111:52", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5032, + "src": "86:355:52" + } + ], + "src": "33:409:52" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610211806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632b7423ab146100465780636d5433e6146100925780637ae2b5c7146100de575b600080fd5b61007c6004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019092919050505061012a565b6040518082815260200191505060405180910390f35b6100c8600480360360408110156100a857600080fd5b81019080803590602001909291908035906020019092919050505061013e565b6040518082815260200191505060405180910390f35b610114600480360360408110156100f457600080fd5b810190808035906020019092919080359060200190929190505050610152565b6040518082815260200191505060405180910390f35b60006101368383610166565b905092915050565b600061014a83836101a8565b905092915050565b600061015e83836101c2565b905092915050565b6000600280838161017357fe5b066002858161017e57fe5b06018161018757fe5b046002838161019257fe5b046002858161019d57fe5b040101905092915050565b6000818310156101b857816101ba565b825b905092915050565b60008183106101d157816101d3565b825b90509291505056fea2646970667358221220a9251172ec558e900d316388ce9dd4a0aa15da187378b55403c516166d4bbddb64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632b7423ab146100465780636d5433e6146100925780637ae2b5c7146100de575b600080fd5b61007c6004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019092919050505061012a565b6040518082815260200191505060405180910390f35b6100c8600480360360408110156100a857600080fd5b81019080803590602001909291908035906020019092919050505061013e565b6040518082815260200191505060405180910390f35b610114600480360360408110156100f457600080fd5b810190808035906020019092919080359060200190929190505050610152565b6040518082815260200191505060405180910390f35b60006101368383610166565b905092915050565b600061014a83836101a8565b905092915050565b600061015e83836101c2565b905092915050565b6000600280838161017357fe5b066002858161017e57fe5b06018161018757fe5b046002838161019257fe5b046002858161019d57fe5b040101905092915050565b6000818310156101b857816101ba565b825b905092915050565b60008183106101d157816101d3565b825b90509291505056fea2646970667358221220a9251172ec558e900d316388ce9dd4a0aa15da187378b55403c516166d4bbddb64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MerkleProof.json b/node_modules/@openzeppelin/contracts/build/contracts/MerkleProof.json new file mode 100644 index 0000000..4fdb190 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MerkleProof.json @@ -0,0 +1,944 @@ +{ + "fileName": "MerkleProof.sol", + "contractName": "MerkleProof", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev These functions deal with verification of Merkle trees (hash trees),\n */\nlibrary MerkleProof {\n /**\n * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n * defined by `root`. For this, a `proof` must be provided, containing\n * sibling hashes on the branch from the leaf to the root of the tree. Each\n * pair of leaves and each pair of pre-images are assumed to be sorted.\n */\n function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {\n bytes32 computedHash = leaf;\n\n for (uint256 i = 0; i < proof.length; i++) {\n bytes32 proofElement = proof[i];\n\n if (computedHash <= proofElement) {\n // Hash(current computed hash + current element of the proof)\n computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\n } else {\n // Hash(current element of the proof + current computed hash)\n computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\n }\n }\n\n // Check if the computed hash (root) is equal to the provided root\n return computedHash == root;\n }\n}\n", + "sourcePath": "contracts/cryptography/MerkleProof.sol", + "sourceMap": "143:1135:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "143:1135:9:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/cryptography/MerkleProof.sol", + "exportedSymbols": { + "MerkleProof": [ + 1745 + ] + }, + "id": 1746, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1676, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:9" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1677, + "nodeType": "StructuredDocumentation", + "src": "58:84:9", + "text": " @dev These functions deal with verification of Merkle trees (hash trees)," + }, + "fullyImplemented": true, + "id": 1745, + "linearizedBaseContracts": [ + 1745 + ], + "name": "MerkleProof", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1743, + "nodeType": "Block", + "src": "594:682:9", + "statements": [ + { + "assignments": [ + 1691 + ], + "declarations": [ + { + "constant": false, + "id": 1691, + "mutability": "mutable", + "name": "computedHash", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1743, + "src": "604:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1690, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "604:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1693, + "initialValue": { + "argumentTypes": null, + "id": 1692, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "627:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "604:27:9" + }, + { + "body": { + "id": 1737, + "nodeType": "Block", + "src": "685:472:9", + "statements": [ + { + "assignments": [ + 1706 + ], + "declarations": [ + { + "constant": false, + "id": 1706, + "mutability": "mutable", + "name": "proofElement", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1737, + "src": "699:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1705, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "699:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1710, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1707, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1681, + "src": "722:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1709, + "indexExpression": { + "argumentTypes": null, + "id": 1708, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1695, + "src": "728:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "722:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "699:31:9" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1711, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "749:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1712, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "765:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "749:28:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1735, + "nodeType": "Block", + "src": "966:181:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1725, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "1062:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1729, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "1104:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1730, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "1118:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1727, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1087:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1087:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1087:44:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1726, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1077:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1077:55:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1062:70:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "1062:70:9" + } + ] + }, + "id": 1736, + "nodeType": "IfStatement", + "src": "745:402:9", + "trueBody": { + "id": 1724, + "nodeType": "Block", + "src": "779:181:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1714, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "875:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1718, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "917:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1719, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "931:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1716, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "900:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "900:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "900:44:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1715, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "890:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "890:55:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "875:70:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "875:70:9" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1698, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1695, + "src": "662:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1699, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1681, + "src": "666:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "666:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "662:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1738, + "initializationExpression": { + "assignments": [ + 1695 + ], + "declarations": [ + { + "constant": false, + "id": 1695, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1738, + "src": "647:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "647:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1697, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "659:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "647:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "680:3:9", + "subExpression": { + "argumentTypes": null, + "id": 1702, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1695, + "src": "680:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1704, + "nodeType": "ExpressionStatement", + "src": "680:3:9" + }, + "nodeType": "ForStatement", + "src": "642:515:9" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1739, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "1249:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1740, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1683, + "src": "1265:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1249:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1689, + "id": 1742, + "nodeType": "Return", + "src": "1242:27:9" + } + ] + }, + "documentation": { + "id": 1678, + "nodeType": "StructuredDocumentation", + "src": "169:323:9", + "text": " @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n defined by `root`. For this, a `proof` must be provided, containing\n sibling hashes on the branch from the leaf to the root of the tree. Each\n pair of leaves and each pair of pre-images are assumed to be sorted." + }, + "id": 1744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1681, + "mutability": "mutable", + "name": "proof", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1744, + "src": "513:22:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 1679, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "513:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1680, + "length": null, + "nodeType": "ArrayTypeName", + "src": "513:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1683, + "mutability": "mutable", + "name": "root", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1744, + "src": "537:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1682, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "537:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1685, + "mutability": "mutable", + "name": "leaf", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1744, + "src": "551:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1684, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "551:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "512:52:9" + }, + "returnParameters": { + "id": 1689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1688, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1744, + "src": "588:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1687, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "588:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "587:6:9" + }, + "scope": 1745, + "src": "497:779:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1746, + "src": "143:1135:9" + } + ], + "src": "33:1246:9" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e2c388c9b4dd682eb1f2ab2c1fba3c899cfb98d5eddcef1e8cd39a05c5d201c164736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e2c388c9b4dd682eb1f2ab2c1fba3c899cfb98d5eddcef1e8cd39a05c5d201c164736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MerkleProofWrapper.json b/node_modules/@openzeppelin/contracts/build/contracts/MerkleProofWrapper.json new file mode 100644 index 0000000..0bd37ea --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MerkleProofWrapper.json @@ -0,0 +1,386 @@ +{ + "fileName": "MerkleProofWrapper.sol", + "contractName": "MerkleProofWrapper", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport { MerkleProof } from \"../cryptography/MerkleProof.sol\";\n\ncontract MerkleProofWrapper {\n function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) public pure returns (bool) {\n return MerkleProof.verify(proof, root, leaf);\n }\n}\n", + "sourcePath": "contracts/mocks/MerkleProofWrapper.sol", + "sourceMap": "122:192:53:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "122:192:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;156:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;245:4;268:37;287:5;294:4;300;268:18;:37::i;:::-;261:44;;156:156;;;;;:::o;497:779:9:-;588:4;604:20;627:4;604:27;;647:9;659:1;647:13;;642:515;666:5;:12;662:1;:16;642:515;;;699:20;722:5;728:1;722:8;;;;;;;;;;;;;;699:31;;765:12;749;:28;745:402;;917:12;931;900:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:55;;;;;;875:70;;745:402;;;1104:12;1118;1087:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1077:55;;;;;;1062:70;;745:402;642:515;680:3;;;;;;;642:515;;;;1265:4;1249:12;:20;1242:27;;;497:779;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "leaf", + "type": "bytes32" + } + ], + "name": "verify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/MerkleProofWrapper.sol", + "exportedSymbols": { + "MerkleProofWrapper": [ + 5056 + ] + }, + "id": 5057, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5033, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:53" + }, + { + "absolutePath": "contracts/cryptography/MerkleProof.sol", + "file": "../cryptography/MerkleProof.sol", + "id": 5035, + "nodeType": "ImportDirective", + "scope": 5057, + "sourceUnit": 1732, + "src": "58:62:53", + "symbolAliases": [ + { + "foreign": { + "argumentTypes": null, + "id": 5034, + "name": "MerkleProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": null, + "src": "67:11:53", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + }, + "local": null + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5056, + "linearizedBaseContracts": [ + 5056 + ], + "name": "MerkleProofWrapper", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5054, + "nodeType": "Block", + "src": "251:61:53", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5049, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5038, + "src": "287:5:53", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 5050, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5040, + "src": "294:4:53", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5051, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5042, + "src": "300:4:53", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 5047, + "name": "MerkleProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1731, + "src": "268:11:53", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleProof_$1731_$", + "typeString": "type(library MerkleProof)" + } + }, + "id": 5048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 1730, + "src": "268:18:53", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32[] memory,bytes32,bytes32) pure returns (bool)" + } + }, + "id": 5052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "268:37:53", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5046, + "id": 5053, + "nodeType": "Return", + "src": "261:44:53" + } + ] + }, + "documentation": null, + "functionSelector": "5a9a49c7", + "id": 5055, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5038, + "mutability": "mutable", + "name": "proof", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5055, + "src": "172:22:53", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 5036, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "172:7:53", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5037, + "length": null, + "nodeType": "ArrayTypeName", + "src": "172:9:53", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5040, + "mutability": "mutable", + "name": "root", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5055, + "src": "196:12:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5039, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "196:7:53", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5042, + "mutability": "mutable", + "name": "leaf", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5055, + "src": "210:12:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5041, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "210:7:53", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "171:52:53" + }, + "returnParameters": { + "id": 5046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5045, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5055, + "src": "245:4:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "245:4:53", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "244:6:53" + }, + "scope": 5056, + "src": "156:156:53", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5057, + "src": "122:192:53" + } + ], + "src": "33:282:53" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610218806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635a9a49c714610030575b600080fd5b6100fa6004803603606081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184602083028401116401000000008311171561009757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919080359060200190929190505050610114565b604051808215151515815260200191505060405180910390f35b600061012184848461012a565b90509392505050565b60008082905060008090505b85518110156101d457600086828151811061014d57fe5b6020026020010151905080831161019457828160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506101c6565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b508080600101915050610136565b50838114915050939250505056fea2646970667358221220faf5bd71ae61e942dd84c9a8baa6df0f13363e24b6e80fdf4cefad425a2ea8ff64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635a9a49c714610030575b600080fd5b6100fa6004803603606081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184602083028401116401000000008311171561009757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919080359060200190929190505050610114565b604051808215151515815260200191505060405180910390f35b600061012184848461012a565b90509392505050565b60008082905060008090505b85518110156101d457600086828151811061014d57fe5b6020026020010151905080831161019457828160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506101c6565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b508080600101915050610136565b50838114915050939250505056fea2646970667358221220faf5bd71ae61e942dd84c9a8baa6df0f13363e24b6e80fdf4cefad425a2ea8ff64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsale.json new file mode 100644 index 0000000..42781a2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsale.json @@ -0,0 +1,547 @@ +{ + "fileName": "MintedCrowdsale.sol", + "contractName": "MintedCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Crowdsale.sol\";\nimport \"../../token/ERC20/ERC20Mintable.sol\";\n\n/**\n * @title MintedCrowdsale\n * @dev Extension of Crowdsale contract whose tokens are minted in each purchase.\n * Token ownership should be transferred to MintedCrowdsale for minting.\n */\ncontract MintedCrowdsale is Crowdsale {\n /**\n * @dev Overrides delivery by minting tokens upon purchase.\n * @param beneficiary Token purchaser\n * @param tokenAmount Number of tokens to be minted\n */\n function _deliverTokens(address beneficiary, uint256 tokenAmount) internal {\n // Potentially dangerous assumption about the type of the token.\n require(\n ERC20Mintable(address(token())).mint(beneficiary, tokenAmount),\n \"MintedCrowdsale: minting failed\"\n );\n }\n}\n", + "sourcePath": "contracts/crowdsale/emission/MintedCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/emission/MintedCrowdsale.sol", + "exportedSymbols": { + "MintedCrowdsale": [ + 2585 + ] + }, + "id": 2586, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2558, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:19" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 2559, + "nodeType": "ImportDirective", + "scope": 2586, + "sourceUnit": 2120, + "src": "25:26:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "file": "../../token/ERC20/ERC20Mintable.sol", + "id": 2560, + "nodeType": "ImportDirective", + "scope": 2586, + "sourceUnit": 10046, + "src": "52:45:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2561, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "316:9:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2562, + "nodeType": "InheritanceSpecifier", + "src": "316:9:19" + } + ], + "contractDependencies": [ + 26, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": "@title MintedCrowdsale\n@dev Extension of Crowdsale contract whose tokens are minted in each purchase.\nToken ownership should be transferred to MintedCrowdsale for minting.", + "fullyImplemented": false, + "id": 2585, + "linearizedBaseContracts": [ + 2585, + 2119, + 13820, + 26 + ], + "name": "MintedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2583, + "nodeType": "Block", + "src": "585:234:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2577, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "726:11:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2578, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2566, + "src": "739:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2572, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "711:5:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$10216_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "711:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + ], + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "703:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "703:16:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2570, + "name": "ERC20Mintable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10045, + "src": "689:13:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$10045_$", + "typeString": "type(contract ERC20Mintable)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "689:31:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 10044, + "src": "689:36:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "689:62:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d696e74656443726f776473616c653a206d696e74696e67206661696c6564", + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "769:33:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d0eac45d7b8513926ae2e01dfc6ebd8082fa88af4d89904f45e3d97f75d97ab5", + "typeString": "literal_string \"MintedCrowdsale: minting failed\"" + }, + "value": "MintedCrowdsale: minting failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d0eac45d7b8513926ae2e01dfc6ebd8082fa88af4d89904f45e3d97f75d97ab5", + "typeString": "literal_string \"MintedCrowdsale: minting failed\"" + } + ], + "id": 2569, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "668:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "668:144:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2582, + "nodeType": "ExpressionStatement", + "src": "668:144:19" + } + ] + }, + "documentation": "@dev Overrides delivery by minting tokens upon purchase.\n@param beneficiary Token purchaser\n@param tokenAmount Number of tokens to be minted", + "id": 2584, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2564, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2584, + "src": "534:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2563, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2566, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 2584, + "src": "555:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "555:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:42:19" + }, + "returnParameters": { + "id": 2568, + "nodeType": "ParameterList", + "parameters": [], + "src": "585:0:19" + }, + "scope": 2585, + "src": "510:309:19", + "stateMutability": "nonpayable", + "superFunction": 2073, + "visibility": "internal" + } + ], + "scope": 2586, + "src": "288:533:19" + } + ], + "src": "0:822:19" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsaleImpl.json new file mode 100644 index 0000000..ec30529 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MintedCrowdsaleImpl.json @@ -0,0 +1,419 @@ +{ + "fileName": "MintedCrowdsaleImpl.sol", + "contractName": "MintedCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/ERC20Mintable.sol\";\nimport \"../crowdsale/emission/MintedCrowdsale.sol\";\n\ncontract MintedCrowdsaleImpl is MintedCrowdsale {\n constructor (uint256 rate, address payable wallet, ERC20Mintable token) public Crowdsale(rate, wallet, token) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/MintedCrowdsaleImpl.sol", + "sourceMap": "121:230:87:-;;;175:174;8:9:-1;5:2;;;30:1;27;20:12;5:2;175:174:87;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;175:174:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:4;270:6;278:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;175:174:87;;;121:230;;;;;;", + "deployedSourceMap": "121:230:87:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;121:230:87;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3910:605;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;3430:75::-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;3258:87::-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;3106:76::-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;5057:376::-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;7358:120::-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;510:309:19:-;711:7;:5;:7::i;:::-;689:36;;;726:11;739;689:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;689:62:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;689:62:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;689:62:19;;;;;;;;;;;;;;;;668:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;510:309;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract ERC20Mintable", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/MintedCrowdsaleImpl.sol", + "exportedSymbols": { + "MintedCrowdsaleImpl": [ + 7348 + ] + }, + "id": 7349, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7328, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:87" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 7329, + "nodeType": "ImportDirective", + "scope": 7349, + "sourceUnit": 10046, + "src": "25:42:87", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/emission/MintedCrowdsale.sol", + "file": "../crowdsale/emission/MintedCrowdsale.sol", + "id": 7330, + "nodeType": "ImportDirective", + "scope": 7349, + "sourceUnit": 2586, + "src": "68:51:87", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7331, + "name": "MintedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2585, + "src": "153:15:87", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MintedCrowdsale_$2585", + "typeString": "contract MintedCrowdsale" + } + }, + "id": 7332, + "nodeType": "InheritanceSpecifier", + "src": "153:15:87" + } + ], + "contractDependencies": [ + 26, + 2119, + 2585, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7348, + "linearizedBaseContracts": [ + 7348, + 2585, + 2119, + 13820, + 26 + ], + "name": "MintedCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7346, + "nodeType": "Block", + "src": "285:64:87", + "statements": [] + }, + "documentation": null, + "id": 7347, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7341, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7334, + "src": "264:4:87", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7342, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7336, + "src": "270:6:87", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7343, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7338, + "src": "278:5:87", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + } + ], + "id": 7344, + "modifierName": { + "argumentTypes": null, + "id": 7340, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "254:9:87", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "254:30:87" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7334, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "188:12:87", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "188:7:87", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7336, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "202:22:87", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "202:15:87", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7338, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7347, + "src": "226:19:87", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 7337, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "226:13:87", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "187:59:87" + }, + "returnParameters": { + "id": 7345, + "nodeType": "ParameterList", + "parameters": [], + "src": "285:0:87" + }, + "scope": 7348, + "src": "175:174:87", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7349, + "src": "121:230:87" + } + ], + "src": "0:352:87" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051610ae9380380610ae98339818101604052606081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082828260016000806101000a81548160ff021916908315150217905550600083116100eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610ac46025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156101f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610aa06024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505061080b806102956000396000f3fe60806040526004361061004a5760003560e01c80632c4e722e1461005c5780634042b66f14610087578063521eb273146100b2578063ec8ac4d814610109578063fc0c546a1461014d575b61005a6100556101a4565b6101ac565b005b34801561006857600080fd5b50610071610337565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c610341565b6040518082815260200191505060405180910390f35b3480156100be57600080fd5b506100c761034b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61014b6004803603602081101561011f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ac565b005b34801561015957600080fd5b50610162610375565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff1661022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610256828261039e565b60006102618261049f565b9050610278826003546104bd90919063ffffffff16565b6003819055506102888382610545565b8273ffffffffffffffffffffffffffffffffffffffff166102a76101a4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103068383610553565b61030e610557565b61031883836105c2565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806107ad602a913960400191505060405180910390fd5b600081141561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60006104b6600254836105c690919063ffffffff16565b9050919050565b60008082840190508381101561053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61054f828261064c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105bf573d6000803e3d6000fd5b50565b5050565b6000808314156105d95760009050610646565b60008284029050828482816105ea57fe5b0414610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061078c6021913960400191505060405180910390fd5b809150505b92915050565b610654610375565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050506040513d602081101561070457600080fd5b8101908080519060200190929190505050610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e74656443726f776473616c653a206d696e74696e67206661696c65640081525060200191505060405180910390fd5b505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373a265627a7a7231582017e46234de0b7d01d332bf8b9aa0347550f088b1ed88e16d53076f9ff672740264736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c80632c4e722e1461005c5780634042b66f14610087578063521eb273146100b2578063ec8ac4d814610109578063fc0c546a1461014d575b61005a6100556101a4565b6101ac565b005b34801561006857600080fd5b50610071610337565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c610341565b6040518082815260200191505060405180910390f35b3480156100be57600080fd5b506100c761034b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61014b6004803603602081101561011f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ac565b005b34801561015957600080fd5b50610162610375565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff1661022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610256828261039e565b60006102618261049f565b9050610278826003546104bd90919063ffffffff16565b6003819055506102888382610545565b8273ffffffffffffffffffffffffffffffffffffffff166102a76101a4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36103068383610553565b61030e610557565b61031883836105c2565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6000600354905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806107ad602a913960400191505060405180910390fd5b600081141561049b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60006104b6600254836105c690919063ffffffff16565b9050919050565b60008082840190508381101561053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61054f828261064c565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156105bf573d6000803e3d6000fd5b50565b5050565b6000808314156105d95760009050610646565b60008284029050828482816105ea57fe5b0414610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061078c6021913960400191505060405180910390fd5b809150505b92915050565b610654610375565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050506040513d602081101561070457600080fd5b8101908080519060200190929190505050610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e74656443726f776473616c653a206d696e74696e67206661696c65640081525060200191505060405180910390fd5b505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373a265627a7a7231582017e46234de0b7d01d332bf8b9aa0347550f088b1ed88e16d53076f9ff672740264736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MinterRole.json b/node_modules/@openzeppelin/contracts/build/contracts/MinterRole.json new file mode 100644 index 0000000..f954852 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MinterRole.json @@ -0,0 +1,1356 @@ +{ + "fileName": "MinterRole.sol", + "contractName": "MinterRole", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../Roles.sol\";\n\ncontract MinterRole is Context {\n using Roles for Roles.Role;\n\n event MinterAdded(address indexed account);\n event MinterRemoved(address indexed account);\n\n Roles.Role private _minters;\n\n constructor () internal {\n _addMinter(_msgSender());\n }\n\n modifier onlyMinter() {\n require(isMinter(_msgSender()), \"MinterRole: caller does not have the Minter role\");\n _;\n }\n\n function isMinter(address account) public view returns (bool) {\n return _minters.has(account);\n }\n\n function addMinter(address account) public onlyMinter {\n _addMinter(account);\n }\n\n function renounceMinter() public {\n _removeMinter(_msgSender());\n }\n\n function _addMinter(address account) internal {\n _minters.add(account);\n emit MinterAdded(account);\n }\n\n function _removeMinter(address account) internal {\n _minters.remove(account);\n emit MinterRemoved(account);\n }\n}\n", + "sourcePath": "contracts/access/roles/MinterRole.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/roles/MinterRole.sol", + "exportedSymbols": { + "MinterRole": [ + 1408 + ] + }, + "id": 1409, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1303, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 1304, + "nodeType": "ImportDirective", + "scope": 1409, + "sourceUnit": 27, + "src": "25:31:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 1305, + "nodeType": "ImportDirective", + "scope": 1409, + "sourceUnit": 1195, + "src": "57:22:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1306, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "104:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1307, + "nodeType": "InheritanceSpecifier", + "src": "104:7:8" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1408, + "linearizedBaseContracts": [ + 1408, + 26 + ], + "name": "MinterRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1310, + "libraryName": { + "contractScope": null, + "id": 1308, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "124:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "118:27:8", + "typeName": { + "contractScope": null, + "id": 1309, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "134:10:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1314, + "name": "MinterAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1312, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "169:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "169:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "168:25:8" + }, + "src": "151:43:8" + }, + { + "anonymous": false, + "documentation": null, + "id": 1318, + "name": "MinterRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 1317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1318, + "src": "219:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "219:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "218:25:8" + }, + "src": "199:45:8" + }, + { + "constant": false, + "id": 1320, + "name": "_minters", + "nodeType": "VariableDeclaration", + "scope": 1408, + "src": "250:27:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1319, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "250:10:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1328, + "nodeType": "Block", + "src": "308:41:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1324, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "329:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:12:8", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1323, + "name": "_addMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "318:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "318:24:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1327, + "nodeType": "ExpressionStatement", + "src": "318:24:8" + } + ] + }, + "documentation": null, + "id": 1329, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1321, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:2:8" + }, + "returnParameters": { + "id": 1322, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:0:8" + }, + "scope": 1408, + "src": "284:65:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1340, + "nodeType": "Block", + "src": "377:111:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1333, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "404:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "404:12:8", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1332, + "name": "isMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1354, + "src": "395:8:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "395:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65", + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "419:50:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_79ecb50133735b20228dea9d08fe36a462bbc1350f591a146908848db91104cd", + "typeString": "literal_string \"MinterRole: caller does not have the Minter role\"" + }, + "value": "MinterRole: caller does not have the Minter role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_79ecb50133735b20228dea9d08fe36a462bbc1350f591a146908848db91104cd", + "typeString": "literal_string \"MinterRole: caller does not have the Minter role\"" + } + ], + "id": 1331, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "387:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "387:83:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1338, + "nodeType": "ExpressionStatement", + "src": "387:83:8" + }, + { + "id": 1339, + "nodeType": "PlaceholderStatement", + "src": "480:1:8" + } + ] + }, + "documentation": null, + "id": 1341, + "name": "onlyMinter", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1330, + "nodeType": "ParameterList", + "parameters": [], + "src": "374:2:8" + }, + "src": "355:133:8", + "visibility": "internal" + }, + { + "body": { + "id": 1353, + "nodeType": "Block", + "src": "556:45:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1350, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1343, + "src": "586:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1348, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "573:8:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1349, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "573:12:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "573:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1347, + "id": 1352, + "nodeType": "Return", + "src": "566:28:8" + } + ] + }, + "documentation": null, + "id": 1354, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1343, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1354, + "src": "512:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "511:17:8" + }, + "returnParameters": { + "id": 1347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1354, + "src": "550:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1345, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "550:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "549:6:8" + }, + "scope": 1408, + "src": "494:107:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1365, + "nodeType": "Block", + "src": "661:36:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1362, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1356, + "src": "682:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1361, + "name": "_addMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "671:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "671:19:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1364, + "nodeType": "ExpressionStatement", + "src": "671:19:8" + } + ] + }, + "documentation": null, + "id": 1366, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1359, + "modifierName": { + "argumentTypes": null, + "id": 1358, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "650:10:8", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "650:10:8" + } + ], + "name": "addMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1356, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1366, + "src": "626:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:17:8" + }, + "returnParameters": { + "id": 1360, + "nodeType": "ParameterList", + "parameters": [], + "src": "661:0:8" + }, + "scope": 1408, + "src": "607:90:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1374, + "nodeType": "Block", + "src": "736:44:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1370, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "760:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:12:8", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1369, + "name": "_removeMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1407, + "src": "746:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "746:27:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1373, + "nodeType": "ExpressionStatement", + "src": "746:27:8" + } + ] + }, + "documentation": null, + "id": 1375, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1367, + "nodeType": "ParameterList", + "parameters": [], + "src": "726:2:8" + }, + "returnParameters": { + "id": 1368, + "nodeType": "ParameterList", + "parameters": [], + "src": "736:0:8" + }, + "scope": 1408, + "src": "703:77:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1390, + "nodeType": "Block", + "src": "832:73:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1383, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "855:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1380, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "842:8:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "842:12:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:21:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1385, + "nodeType": "ExpressionStatement", + "src": "842:21:8" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1387, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "890:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1386, + "name": "MinterAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "878:11:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "878:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1389, + "nodeType": "EmitStatement", + "src": "873:25:8" + } + ] + }, + "documentation": null, + "id": 1391, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1377, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1391, + "src": "806:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "805:17:8" + }, + "returnParameters": { + "id": 1379, + "nodeType": "ParameterList", + "parameters": [], + "src": "832:0:8" + }, + "scope": 1408, + "src": "786:119:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1406, + "nodeType": "Block", + "src": "960:78:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1399, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "986:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1396, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "970:8:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "970:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:24:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1401, + "nodeType": "ExpressionStatement", + "src": "970:24:8" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1403, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1393, + "src": "1023:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1402, + "name": "MinterRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1318, + "src": "1009:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:22:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1405, + "nodeType": "EmitStatement", + "src": "1004:27:8" + } + ] + }, + "documentation": null, + "id": 1407, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1393, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1407, + "src": "934:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "934:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "933:17:8" + }, + "returnParameters": { + "id": 1395, + "nodeType": "ParameterList", + "parameters": [], + "src": "960:0:8" + }, + "scope": 1408, + "src": "911:127:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1409, + "src": "81:959:8" + } + ], + "src": "0:1041:8" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/MinterRoleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/MinterRoleMock.json new file mode 100644 index 0000000..18d174e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/MinterRoleMock.json @@ -0,0 +1,492 @@ +{ + "fileName": "MinterRoleMock.sol", + "contractName": "MinterRoleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/MinterRole.sol\";\n\ncontract MinterRoleMock is MinterRole {\n function removeMinter(address account) public {\n _removeMinter(account);\n }\n\n function onlyMinterMock() public view onlyMinter {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Causes a compilation error if super._removeMinter is not internal\n function _removeMinter(address account) internal {\n super._removeMinter(account);\n }\n}\n", + "sourcePath": "contracts/mocks/MinterRoleMock.sol", + "sourceMap": "67:423:88:-;;;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;67:423:88;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;67:423:88:-;;;;;;;", + "deployedSourceMap": "67:423:88:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67:423:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;111:85;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;111:85:88;;;;;;;;;;;;;;;;;;;:::i;:::-;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;494:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;202:113:88;;;:::i;:::-;;111:85;167:22;181:7;167:13;:22::i;:::-;111:85;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;494:107::-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;202:113:88:-;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113:88:o;394:94::-;453:28;473:7;453:19;:28::i;:::-;394:94;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;911:127:8:-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyMinterMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/MinterRoleMock.sol", + "exportedSymbols": { + "MinterRoleMock": [ + 7382 + ] + }, + "id": 7383, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7350, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:88" + }, + { + "absolutePath": "contracts/access/roles/MinterRole.sol", + "file": "../access/roles/MinterRole.sol", + "id": 7351, + "nodeType": "ImportDirective", + "scope": 7383, + "sourceUnit": 1409, + "src": "25:40:88", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7352, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1408, + "src": "94:10:88", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$1408", + "typeString": "contract MinterRole" + } + }, + "id": 7353, + "nodeType": "InheritanceSpecifier", + "src": "94:10:88" + } + ], + "contractDependencies": [ + 26, + 1408 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7382, + "linearizedBaseContracts": [ + 7382, + 1408, + 26 + ], + "name": "MinterRoleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7362, + "nodeType": "Block", + "src": "157:39:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7359, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7355, + "src": "181:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7358, + "name": "_removeMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7381 + ], + "referencedDeclaration": 7381, + "src": "167:13:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 7360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "167:22:88", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7361, + "nodeType": "ExpressionStatement", + "src": "167:22:88" + } + ] + }, + "documentation": null, + "id": 7363, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7355, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7363, + "src": "133:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "133:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "132:17:88" + }, + "returnParameters": { + "id": 7357, + "nodeType": "ParameterList", + "parameters": [], + "src": "157:0:88" + }, + "scope": 7382, + "src": "111:85:88", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 7368, + "nodeType": "Block", + "src": "251:64:88", + "statements": [] + }, + "documentation": null, + "id": 7369, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 7366, + "modifierName": { + "argumentTypes": null, + "id": 7365, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "240:10:88", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "240:10:88" + } + ], + "name": "onlyMinterMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7364, + "nodeType": "ParameterList", + "parameters": [], + "src": "225:2:88" + }, + "returnParameters": { + "id": 7367, + "nodeType": "ParameterList", + "parameters": [], + "src": "251:0:88" + }, + "scope": 7382, + "src": "202:113:88", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 7380, + "nodeType": "Block", + "src": "443:45:88", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7377, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7371, + "src": "473:7:88", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 7374, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14128, + "src": "453:5:88", + "typeDescriptions": { + "typeIdentifier": "t_super$_MinterRoleMock_$7382", + "typeString": "contract super MinterRoleMock" + } + }, + "id": 7376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_removeMinter", + "nodeType": "MemberAccess", + "referencedDeclaration": 1407, + "src": "453:19:88", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 7378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "453:28:88", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7379, + "nodeType": "ExpressionStatement", + "src": "453:28:88" + } + ] + }, + "documentation": null, + "id": 7381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7371, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7381, + "src": "417:15:88", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:88", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:17:88" + }, + "returnParameters": { + "id": 7373, + "nodeType": "ParameterList", + "parameters": [], + "src": "443:0:88" + }, + "scope": 7382, + "src": "394:94:88", + "stateMutability": "nonpayable", + "superFunction": 1407, + "visibility": "internal" + } + ], + "scope": 7383, + "src": "67:423:88" + } + ], + "src": "0:491:88" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b61040d1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108a66022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61064d806102596000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633092afd51461005c578063983b2d56146100a057806398650275146100e4578063aa271e1a146100ee578063b5dba35b1461014a575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b005b6100e2600480360360208110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610160565b005b6100ec6101d1565b005b6101306004803603602081101561010457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101e3565b604051808215151515815260200191505060405180910390f35b610152610200565b005b61015d81610267565b50565b61017061016b610273565b6101e3565b6101c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b6101ce8161027b565b50565b6101e16101dc610273565b610267565b565b60006101f98260006102d590919063ffffffff16565b9050919050565b61021061020b610273565b6101e3565b610265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b565b610270816103b3565b50565b600033905090565b61028f81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105f76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61041782826102d5565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f282826102d5565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105d66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a7231582017098fc62685a5e43151314a5cca36d94cc7b4cc4b06bfcf12f4ed7ba290068064736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633092afd51461005c578063983b2d56146100a057806398650275146100e4578063aa271e1a146100ee578063b5dba35b1461014a575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b005b6100e2600480360360208110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610160565b005b6100ec6101d1565b005b6101306004803603602081101561010457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101e3565b604051808215151515815260200191505060405180910390f35b610152610200565b005b61015d81610267565b50565b61017061016b610273565b6101e3565b6101c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b6101ce8161027b565b50565b6101e16101dc610273565b610267565b565b60006101f98260006102d590919063ffffffff16565b9050919050565b61021061020b610273565b6101e3565b610265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b565b610270816103b3565b50565b600033905090565b61028f81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105f76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61041782826102d5565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f282826102d5565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105d66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a7231582017098fc62685a5e43151314a5cca36d94cc7b4cc4b06bfcf12f4ed7ba290068064736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Ownable.json b/node_modules/@openzeppelin/contracts/build/contracts/Ownable.json new file mode 100644 index 0000000..c026c74 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Ownable.json @@ -0,0 +1,1447 @@ +{ + "fileName": "Ownable.sol", + "contractName": "Ownable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\ncontract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n address msgSender = _msgSender();\n _owner = msgSender;\n emit OwnershipTransferred(address(0), msgSender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n", + "sourcePath": "contracts/access/Ownable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/Ownable.sol", + "exportedSymbols": { + "Ownable": [ + 1576 + ] + }, + "id": 1577, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1469, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:7" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 1470, + "nodeType": "ImportDirective", + "scope": 1577, + "sourceUnit": 23, + "src": "58:28:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1472, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "602:7:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 1473, + "nodeType": "InheritanceSpecifier", + "src": "602:7:7" + } + ], + "contractDependencies": [ + 22 + ], + "contractKind": "contract", + "documentation": { + "id": 1471, + "nodeType": "StructuredDocumentation", + "src": "87:494:7", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 1576, + "linearizedBaseContracts": [ + 1576, + 22 + ], + "name": "Ownable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1475, + "mutability": "mutable", + "name": "_owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1576, + "src": "616:22:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1474, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "616:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 1481, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 1480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1477, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1481, + "src": "672:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "672:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1479, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1481, + "src": "703:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "703:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:57:7" + }, + "src": "645:84:7" + }, + { + "body": { + "id": 1502, + "nodeType": "Block", + "src": "855:135:7", + "statements": [ + { + "assignments": [ + 1486 + ], + "declarations": [ + { + "constant": false, + "id": 1486, + "mutability": "mutable", + "name": "msgSender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1502, + "src": "865:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "865:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1489, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1487, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "885:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "885:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "865:32:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1490, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "907:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1491, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "916:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "907:18:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1493, + "nodeType": "ExpressionStatement", + "src": "907:18:7" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "969:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "961:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "961:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "961:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1499, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "973:9:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1494, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "940:20:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "940:43:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1501, + "nodeType": "EmitStatement", + "src": "935:48:7" + } + ] + }, + "documentation": { + "id": 1482, + "nodeType": "StructuredDocumentation", + "src": "735:91:7", + "text": " @dev Initializes the contract setting the deployer as the initial owner." + }, + "id": 1503, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1483, + "nodeType": "ParameterList", + "parameters": [], + "src": "843:2:7" + }, + "returnParameters": { + "id": 1484, + "nodeType": "ParameterList", + "parameters": [], + "src": "855:0:7" + }, + "scope": 1576, + "src": "831:159:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1511, + "nodeType": "Block", + "src": "1113:30:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1509, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "1130:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1508, + "id": 1510, + "nodeType": "Return", + "src": "1123:13:7" + } + ] + }, + "documentation": { + "id": 1504, + "nodeType": "StructuredDocumentation", + "src": "996:65:7", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 1512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1505, + "nodeType": "ParameterList", + "parameters": [], + "src": "1080:2:7" + }, + "returnParameters": { + "id": 1508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1507, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "1104:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1104:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1103:9:7" + }, + "scope": 1576, + "src": "1066:77:7", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1524, + "nodeType": "Block", + "src": "1252:95:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1516, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "1270:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1517, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1280:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1280:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1270:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1294:34:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + }, + "value": "Ownable: caller is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "id": 1515, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1262:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1262:67:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1522, + "nodeType": "ExpressionStatement", + "src": "1262:67:7" + }, + { + "id": 1523, + "nodeType": "PlaceholderStatement", + "src": "1339:1:7" + } + ] + }, + "documentation": { + "id": 1513, + "nodeType": "StructuredDocumentation", + "src": "1149:77:7", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 1525, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 1514, + "nodeType": "ParameterList", + "parameters": [], + "src": "1249:2:7" + }, + "src": "1231:116:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1546, + "nodeType": "Block", + "src": "1743:91:7", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1532, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "1779:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1795:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1787:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1787:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1787:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1531, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "1758:20:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1758:40:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1538, + "nodeType": "EmitStatement", + "src": "1753:45:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1539, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "1808:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1825:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1817:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1817:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1817:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1808:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1545, + "nodeType": "ExpressionStatement", + "src": "1808:19:7" + } + ] + }, + "documentation": { + "id": 1526, + "nodeType": "StructuredDocumentation", + "src": "1353:331:7", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 1547, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1529, + "modifierName": { + "argumentTypes": null, + "id": 1528, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "1733:9:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1733:9:7" + } + ], + "name": "renounceOwnership", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1527, + "nodeType": "ParameterList", + "parameters": [], + "src": "1715:2:7" + }, + "returnParameters": { + "id": 1530, + "nodeType": "ParameterList", + "parameters": [], + "src": "1743:0:7" + }, + "scope": 1576, + "src": "1689:145:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1574, + "nodeType": "Block", + "src": "2053:170:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1556, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1550, + "src": "2071:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2091:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2083:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1557, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2083:7:7", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2083:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2071:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "id": 1562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2095:40:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + }, + "value": "Ownable: new owner is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "id": 1555, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2063:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2063:73:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1564, + "nodeType": "ExpressionStatement", + "src": "2063:73:7" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1566, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "2172:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1567, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1550, + "src": "2180:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1565, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "2151:20:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2151:38:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1569, + "nodeType": "EmitStatement", + "src": "2146:43:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1570, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "2199:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1571, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1550, + "src": "2208:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2199:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1573, + "nodeType": "ExpressionStatement", + "src": "2199:17:7" + } + ] + }, + "documentation": { + "id": 1548, + "nodeType": "StructuredDocumentation", + "src": "1840:138:7", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 1575, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1553, + "modifierName": { + "argumentTypes": null, + "id": 1552, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "2043:9:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2043:9:7" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1550, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1575, + "src": "2010:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2009:18:7" + }, + "returnParameters": { + "id": 1554, + "nodeType": "ParameterList", + "parameters": [], + "src": "2053:0:7" + }, + "scope": 1576, + "src": "1983:240:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 1577, + "src": "582:1643:7" + } + ], + "src": "33:2193:7" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/OwnableInterfaceId.json b/node_modules/@openzeppelin/contracts/build/contracts/OwnableInterfaceId.json new file mode 100644 index 0000000..757d1df --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/OwnableInterfaceId.json @@ -0,0 +1,430 @@ +{ + "fileName": "OwnableInterfaceId.sol", + "contractName": "OwnableInterfaceId", + "source": "pragma solidity ^0.5.0;\n\nimport \"../ownership/Ownable.sol\";\n\n/**\n * @title Ownable interface id calculator.\n * @dev See the EIP165 specification for more information:\n * https://eips.ethereum.org/EIPS/eip-165#specification\n */\ncontract OwnableInterfaceId {\n function getInterfaceId() public pure returns (bytes4) {\n Ownable i;\n return i.owner.selector ^ i.isOwner.selector ^ i.renounceOwnership.selector ^ i.transferOwnership.selector;\n }\n}\n", + "sourcePath": "contracts/mocks/OwnableInterfaceId.sol", + "sourceMap": "227:233:89:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;227:233:89;;;;;;;", + "deployedSourceMap": "227:233:89:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;227:233:89;;;;;;;;;;;;;;;;;;;261:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;308:6;326:9;423:1;:19;;;:28;;;;392:1;:19;;;:28;;;;371:1;:9;;;:18;;;;352:1;:7;;;:16;;;;:37;:68;:99;345:106;;;261:197;:::o", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "getInterfaceId", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/OwnableInterfaceId.sol", + "exportedSymbols": { + "OwnableInterfaceId": [ + 7411 + ] + }, + "id": 7412, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7384, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:89" + }, + { + "absolutePath": "contracts/ownership/Ownable.sol", + "file": "../ownership/Ownable.sol", + "id": 7385, + "nodeType": "ImportDirective", + "scope": 7412, + "sourceUnit": 8706, + "src": "25:34:89", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Ownable interface id calculator.\n@dev See the EIP165 specification for more information:\nhttps://eips.ethereum.org/EIPS/eip-165#specification", + "fullyImplemented": true, + "id": 7411, + "linearizedBaseContracts": [ + 7411 + ], + "name": "OwnableInterfaceId", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7409, + "nodeType": "Block", + "src": "316:142:89", + "statements": [ + { + "assignments": [ + 7391 + ], + "declarations": [ + { + "constant": false, + "id": 7391, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 7409, + "src": "326:9:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$8705", + "typeString": "contract Ownable" + }, + "typeName": { + "contractScope": null, + "id": 7390, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8705, + "src": "326:7:89", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$8705", + "typeString": "contract Ownable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 7392, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "326:9:89" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7393, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7391, + "src": "352:1:89", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$8705", + "typeString": "contract Ownable" + } + }, + "id": 7394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8628, + "src": "352:7:89", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 7395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "352:16:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7396, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7391, + "src": "371:1:89", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$8705", + "typeString": "contract Ownable" + } + }, + "id": 7397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 8649, + "src": "371:9:89", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", + "typeString": "function () view external returns (bool)" + } + }, + "id": 7398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "371:18:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "352:37:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7400, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7391, + "src": "392:1:89", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$8705", + "typeString": "contract Ownable" + } + }, + "id": 7401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "renounceOwnership", + "nodeType": "MemberAccess", + "referencedDeclaration": 8668, + "src": "392:19:89", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 7402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "392:28:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "352:68:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7404, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7391, + "src": "423:1:89", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$8705", + "typeString": "contract Ownable" + } + }, + "id": 7405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferOwnership", + "nodeType": "MemberAccess", + "referencedDeclaration": 8680, + "src": "423:19:89", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 7406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "423:28:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "352:99:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 7389, + "id": 7408, + "nodeType": "Return", + "src": "345:106:89" + } + ] + }, + "documentation": null, + "id": 7410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getInterfaceId", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7386, + "nodeType": "ParameterList", + "parameters": [], + "src": "284:2:89" + }, + "returnParameters": { + "id": 7389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7388, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7410, + "src": "308:6:89", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7387, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "308:6:89", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "307:8:89" + }, + "scope": 7411, + "src": "261:197:89", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7412, + "src": "227:233:89" + } + ], + "src": "0:461:89" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610151806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636b9241fc14610030575b600080fd5b61003861008c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000808073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b905060e01b8173ffffffffffffffffffffffffffffffffffffffff1663715018a6905060e01b8273ffffffffffffffffffffffffffffffffffffffff16638f32d59b905060e01b8373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b905060e01b1818189150509056fea265627a7a7231582083b8217788880cd2c312e189987dd5729ff3c0de08084de29d8d7e5166db818464736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636b9241fc14610030575b600080fd5b61003861008c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000808073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b905060e01b8173ffffffffffffffffffffffffffffffffffffffff1663715018a6905060e01b8273ffffffffffffffffffffffffffffffffffffffff16638f32d59b905060e01b8373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b905060e01b1818189150509056fea265627a7a7231582083b8217788880cd2c312e189987dd5729ff3c0de08084de29d8d7e5166db818464736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/OwnableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/OwnableMock.json new file mode 100644 index 0000000..b1fa428 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/OwnableMock.json @@ -0,0 +1,150 @@ +{ + "fileName": "OwnableMock.sol", + "contractName": "OwnableMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../access/Ownable.sol\";\n\ncontract OwnableMock is Ownable { }\n", + "sourcePath": "contracts/mocks/OwnableMock.sol", + "sourceMap": "91:35:54:-:0;;;;;;;;;;;;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;91:35:54;;768:104:0;821:15;855:10;848:17;;768:104;:::o;91:35:54:-;;;;;;;", + "deployedSourceMap": "91:35:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:145:7;;;:::i;:::-;;1066:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1983:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1689:145;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;1066:77::-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;1983:240::-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/OwnableMock.sol", + "exportedSymbols": { + "OwnableMock": [ + 5062 + ] + }, + "id": 5063, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5058, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:54" + }, + { + "absolutePath": "contracts/access/Ownable.sol", + "file": "../access/Ownable.sol", + "id": 5059, + "nodeType": "ImportDirective", + "scope": 5063, + "sourceUnit": 1563, + "src": "58:31:54", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5060, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1562, + "src": "115:7:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$1562", + "typeString": "contract Ownable" + } + }, + "id": 5061, + "nodeType": "InheritanceSpecifier", + "src": "115:7:54" + } + ], + "contractDependencies": [ + 26, + 1562 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5062, + "linearizedBaseContracts": [ + 5062, + 1562, + 26 + ], + "name": "OwnableMock", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 5063, + "src": "91:35:54" + } + ], + "src": "33:94:54" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b610500806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b1461009a575b600080fd5b61004e6100de565b005b610058610266565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100dc600480360360208110156100b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061028f565b005b6100e661049c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146101a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61029761049c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610358576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156103de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806104a56026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220554dbe445de47f60d4e2377a923ee1210150759f60a014381c54dc73e3ee916864736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b1461009a575b600080fd5b61004e6100de565b005b610058610266565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100dc600480360360208110156100b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061028f565b005b6100e661049c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146101a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61029761049c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610358576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156103de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806104a56026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220554dbe445de47f60d4e2377a923ee1210150759f60a014381c54dc73e3ee916864736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Pausable.json b/node_modules/@openzeppelin/contracts/build/contracts/Pausable.json new file mode 100644 index 0000000..abb715a --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Pausable.json @@ -0,0 +1,1055 @@ +{ + "fileName": "Pausable.sol", + "contractName": "Pausable", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\ncontract Pausable is Context {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n constructor () internal {\n _paused = false;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n require(!_paused, \"Pausable: paused\");\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n require(_paused, \"Pausable: not paused\");\n _;\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n}\n", + "sourcePath": "contracts/utils/Pausable.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/utils/Pausable.sol", + "exportedSymbols": { + "Pausable": [ + 13997 + ] + }, + "id": 13998, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13909, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:110" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 13910, + "nodeType": "ImportDirective", + "scope": 13998, + "sourceUnit": 23, + "src": "58:28:110", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 13912, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "549:7:110", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 13913, + "nodeType": "InheritanceSpecifier", + "src": "549:7:110" + } + ], + "contractDependencies": [ + 22 + ], + "contractKind": "contract", + "documentation": { + "id": 13911, + "nodeType": "StructuredDocumentation", + "src": "88:439:110", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 13997, + "linearizedBaseContracts": [ + 13997, + 22 + ], + "name": "Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 13914, + "nodeType": "StructuredDocumentation", + "src": "563:73:110", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "id": 13918, + "name": "Paused", + "nodeType": "EventDefinition", + "parameters": { + "id": 13917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13916, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13918, + "src": "654:15:110", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "654:7:110", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "653:17:110" + }, + "src": "641:30:110" + }, + { + "anonymous": false, + "documentation": { + "id": 13919, + "nodeType": "StructuredDocumentation", + "src": "677:70:110", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "id": 13923, + "name": "Unpaused", + "nodeType": "EventDefinition", + "parameters": { + "id": 13922, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13921, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13923, + "src": "767:15:110", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "767:7:110", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "766:17:110" + }, + "src": "752:32:110" + }, + { + "constant": false, + "id": 13925, + "mutability": "mutable", + "name": "_paused", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13997, + "src": "790:20:110", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13924, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "790:4:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 13933, + "nodeType": "Block", + "src": "913:32:110", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 13931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 13929, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13925, + "src": "923:7:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 13930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "933:5:110", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "923:15:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13932, + "nodeType": "ExpressionStatement", + "src": "923:15:110" + } + ] + }, + "documentation": { + "id": 13926, + "nodeType": "StructuredDocumentation", + "src": "817:67:110", + "text": " @dev Initializes the contract in unpaused state." + }, + "id": 13934, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13927, + "nodeType": "ParameterList", + "parameters": [], + "src": "901:2:110" + }, + "returnParameters": { + "id": 13928, + "nodeType": "ParameterList", + "parameters": [], + "src": "913:0:110" + }, + "scope": 13997, + "src": "889:56:110", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13942, + "nodeType": "Block", + "src": "1085:31:110", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 13940, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13925, + "src": "1102:7:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13939, + "id": 13941, + "nodeType": "Return", + "src": "1095:14:110" + } + ] + }, + "documentation": { + "id": 13935, + "nodeType": "StructuredDocumentation", + "src": "951:84:110", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 13943, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13936, + "nodeType": "ParameterList", + "parameters": [], + "src": "1055:2:110" + }, + "returnParameters": { + "id": 13939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13938, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13943, + "src": "1079:4:110", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13937, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1079:4:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1078:6:110" + }, + "scope": 13997, + "src": "1040:76:110", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 13953, + "nodeType": "Block", + "src": "1327:65:110", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1345:8:110", + "subExpression": { + "argumentTypes": null, + "id": 13947, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13925, + "src": "1346:7:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061757361626c653a20706175736564", + "id": 13949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1355:18:110", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a", + "typeString": "literal_string \"Pausable: paused\"" + }, + "value": "Pausable: paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a", + "typeString": "literal_string \"Pausable: paused\"" + } + ], + "id": 13946, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1337:7:110", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1337:37:110", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13951, + "nodeType": "ExpressionStatement", + "src": "1337:37:110" + }, + { + "id": 13952, + "nodeType": "PlaceholderStatement", + "src": "1384:1:110" + } + ] + }, + "documentation": { + "id": 13944, + "nodeType": "StructuredDocumentation", + "src": "1122:175:110", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 13954, + "name": "whenNotPaused", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 13945, + "nodeType": "ParameterList", + "parameters": [], + "src": "1324:2:110" + }, + "src": "1302:90:110", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13963, + "nodeType": "Block", + "src": "1592:68:110", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 13958, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13925, + "src": "1610:7:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061757361626c653a206e6f7420706175736564", + "id": 13959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1619:22:110", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a", + "typeString": "literal_string \"Pausable: not paused\"" + }, + "value": "Pausable: not paused" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a", + "typeString": "literal_string \"Pausable: not paused\"" + } + ], + "id": 13957, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1602:7:110", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1602:40:110", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13961, + "nodeType": "ExpressionStatement", + "src": "1602:40:110" + }, + { + "id": 13962, + "nodeType": "PlaceholderStatement", + "src": "1652:1:110" + } + ] + }, + "documentation": { + "id": 13955, + "nodeType": "StructuredDocumentation", + "src": "1398:167:110", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 13964, + "name": "whenPaused", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 13956, + "nodeType": "ParameterList", + "parameters": [], + "src": "1589:2:110" + }, + "src": "1570:90:110", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13979, + "nodeType": "Block", + "src": "1844:66:110", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 13972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 13970, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13925, + "src": "1854:7:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 13971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1864:4:110", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1854:14:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13973, + "nodeType": "ExpressionStatement", + "src": "1854:14:110" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13975, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "1890:10:110", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 13976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1890:12:110", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 13974, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13918, + "src": "1883:6:110", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1883:20:110", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13978, + "nodeType": "EmitStatement", + "src": "1878:25:110" + } + ] + }, + "documentation": { + "id": 13965, + "nodeType": "StructuredDocumentation", + "src": "1666:124:110", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 13980, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 13968, + "modifierName": { + "argumentTypes": null, + "id": 13967, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13954, + "src": "1830:13:110", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1830:13:110" + } + ], + "name": "_pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13966, + "nodeType": "ParameterList", + "parameters": [], + "src": "1810:2:110" + }, + "returnParameters": { + "id": 13969, + "nodeType": "ParameterList", + "parameters": [], + "src": "1844:0:110" + }, + "scope": 13997, + "src": "1795:115:110", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13995, + "nodeType": "Block", + "src": "2090:69:110", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 13988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 13986, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13925, + "src": "2100:7:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 13987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2110:5:110", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2100:15:110", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13989, + "nodeType": "ExpressionStatement", + "src": "2100:15:110" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13991, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2139:10:110", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 13992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2139:12:110", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 13990, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13923, + "src": "2130:8:110", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 13993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2130:22:110", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13994, + "nodeType": "EmitStatement", + "src": "2125:27:110" + } + ] + }, + "documentation": { + "id": 13981, + "nodeType": "StructuredDocumentation", + "src": "1916:121:110", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 13996, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 13984, + "modifierName": { + "argumentTypes": null, + "id": 13983, + "name": "whenPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13964, + "src": "2079:10:110", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2079:10:110" + } + ], + "name": "_unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 13982, + "nodeType": "ParameterList", + "parameters": [], + "src": "2059:2:110" + }, + "returnParameters": { + "id": 13985, + "nodeType": "ParameterList", + "parameters": [], + "src": "2090:0:110" + }, + "scope": 13997, + "src": "2042:117:110", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 13998, + "src": "528:1633:110" + } + ], + "src": "33:2129:110" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsale.json new file mode 100644 index 0000000..acea679 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsale.json @@ -0,0 +1,568 @@ +{ + "fileName": "PausableCrowdsale.sol", + "contractName": "PausableCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Crowdsale.sol\";\nimport \"../../lifecycle/Pausable.sol\";\n\n/**\n * @title PausableCrowdsale\n * @dev Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role.\n */\ncontract PausableCrowdsale is Crowdsale, Pausable {\n /**\n * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\n * Use super to concatenate validations.\n * Adds the validation that the crowdsale must not be paused.\n * @param _beneficiary Address performing the token purchase\n * @param _weiAmount Value in wei involved in the purchase\n */\n function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal view whenNotPaused {\n return super._preValidatePurchase(_beneficiary, _weiAmount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/validation/PausableCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/validation/PausableCrowdsale.sol", + "exportedSymbols": { + "PausableCrowdsale": [ + 2937 + ] + }, + "id": 2938, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2914, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:23" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 2915, + "nodeType": "ImportDirective", + "scope": 2938, + "sourceUnit": 2120, + "src": "25:26:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 2916, + "nodeType": "ImportDirective", + "scope": 2938, + "sourceUnit": 5044, + "src": "52:38:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2917, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "261:9:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2918, + "nodeType": "InheritanceSpecifier", + "src": "261:9:23" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2919, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5043, + "src": "272:8:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$5043", + "typeString": "contract Pausable" + } + }, + "id": 2920, + "nodeType": "InheritanceSpecifier", + "src": "272:8:23" + } + ], + "contractDependencies": [ + 26, + 1515, + 2119, + 5043, + 13820 + ], + "contractKind": "contract", + "documentation": "@title PausableCrowdsale\n@dev Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role.", + "fullyImplemented": false, + "id": 2937, + "linearizedBaseContracts": [ + 2937, + 5043, + 1515, + 2119, + 13820, + 26 + ], + "name": "PausableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2935, + "nodeType": "Block", + "src": "758:76:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2931, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2922, + "src": "802:12:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2932, + "name": "_weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2924, + "src": "816:10:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2929, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14040, + "src": "775:5:23", + "typeDescriptions": { + "typeIdentifier": "t_super$_PausableCrowdsale_$2937", + "typeString": "contract super PausableCrowdsale" + } + }, + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 2050, + "src": "775:26:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 2933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "775:52:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "functionReturnParameters": 2928, + "id": 2934, + "nodeType": "Return", + "src": "768:59:23" + } + ] + }, + "documentation": "@dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\nUse super to concatenate validations.\nAdds the validation that the crowdsale must not be paused.\n@param _beneficiary Address performing the token purchase\n@param _weiAmount Value in wei involved in the purchase", + "id": 2936, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2927, + "modifierName": { + "argumentTypes": null, + "id": 2926, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4999, + "src": "744:13:23", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "744:13:23" + } + ], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2922, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2936, + "src": "688:20:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "688:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2924, + "name": "_weiAmount", + "nodeType": "VariableDeclaration", + "scope": 2936, + "src": "710:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2923, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "710:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "687:42:23" + }, + "returnParameters": { + "id": 2928, + "nodeType": "ParameterList", + "parameters": [], + "src": "758:0:23" + }, + "scope": 2937, + "src": "658:176:23", + "stateMutability": "view", + "superFunction": 2050, + "visibility": "internal" + } + ], + "scope": 2938, + "src": "231:605:23" + } + ], + "src": "0:837:23" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsaleImpl.json new file mode 100644 index 0000000..d0123b6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PausableCrowdsaleImpl.json @@ -0,0 +1,553 @@ +{ + "fileName": "PausableCrowdsaleImpl.sol", + "contractName": "PausableCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../crowdsale/validation/PausableCrowdsale.sol\";\n\ncontract PausableCrowdsaleImpl is PausableCrowdsale {\n constructor (uint256 _rate, address payable _wallet, ERC20 _token) public Crowdsale(_rate, _wallet, _token) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/PausableCrowdsaleImpl.sol", + "sourceMap": "117:232:91:-;;;175:172;8:9:-1;5:2;;;30:1;27;20:12;5:2;175:172:91;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;175:172:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:5;266:7;275:6;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;318:24:9;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;1023:5:43;1013:7;;:15;;;;;;;;;;;;;;;;;;175:172:91;;;117:232;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:9:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;117:232:91:-;;;;;;;", + "deployedSourceMap": "117:232:91:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;117:232:91;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1892:117:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1892:117:43;;;:::i;:::-;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;494:107:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;494:107:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1130:76:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1130:76:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;703:77:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;703:77:9;;;:::i;:::-;;607:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;607:90:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;1687:115:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1687:115:43;;;:::i;:::-;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;3430:75::-;3467:7;3493:5;;3486:12;;3430:75;:::o;1892:117:43:-;395:22:9;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1550:7:43;;;;;;;;;;;1542:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:5;1950:7;;:15;;;;;;;;;;;;;;;;;;1980:22;1989:12;:10;:12::i;:::-;1980:22;;;;;;;;;;;;;;;;;;;;;;1892:117::o;3568:85:13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;494:107:9:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;1130:76:43:-;1169:4;1192:7;;;;;;;;;;;1185:14;;1130:76;:::o;703:77:9:-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;607:90::-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;1687:115:43:-;395:22:9;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1359:7:43;;;;;;;;;;;1358:8;1350:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1756:4;1746:7;;:14;;;;;;;;;;;;;;;;;;1775:20;1782:12;:10;:12::i;:::-;1775:20;;;;;;;;;;;;;;;;;;;;;;1687:115::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;658:176:23:-;1359:7:43;;;;;;;;;;;1358:8;1350:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:52:23;802:12;816:10;775:26;:52::i;:::-;658:176;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;911:127:9:-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;786:119::-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;510:180:6:-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "_wallet", + "type": "address" + }, + { + "internalType": "contract ERC20", + "name": "_token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/PausableCrowdsaleImpl.sol", + "exportedSymbols": { + "PausableCrowdsaleImpl": [ + 7439 + ] + }, + "id": 7440, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7419, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:91" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 7420, + "nodeType": "ImportDirective", + "scope": 7440, + "sourceUnit": 9867, + "src": "25:34:91", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/validation/PausableCrowdsale.sol", + "file": "../crowdsale/validation/PausableCrowdsale.sol", + "id": 7421, + "nodeType": "ImportDirective", + "scope": 7440, + "sourceUnit": 2938, + "src": "60:55:91", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7422, + "name": "PausableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2937, + "src": "151:17:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PausableCrowdsale_$2937", + "typeString": "contract PausableCrowdsale" + } + }, + "id": 7423, + "nodeType": "InheritanceSpecifier", + "src": "151:17:91" + } + ], + "contractDependencies": [ + 26, + 1515, + 2119, + 2937, + 5043, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7439, + "linearizedBaseContracts": [ + 7439, + 2937, + 5043, + 1515, + 2119, + 13820, + 26 + ], + "name": "PausableCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7437, + "nodeType": "Block", + "src": "283:64:91", + "statements": [] + }, + "documentation": null, + "id": 7438, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7432, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7425, + "src": "259:5:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7433, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7427, + "src": "266:7:91", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7434, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7429, + "src": "275:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + } + ], + "id": 7435, + "modifierName": { + "argumentTypes": null, + "id": 7431, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "249:9:91", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "249:33:91" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7425, + "name": "_rate", + "nodeType": "VariableDeclaration", + "scope": 7438, + "src": "188:13:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "188:7:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7427, + "name": "_wallet", + "nodeType": "VariableDeclaration", + "scope": 7438, + "src": "203:23:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "203:15:91", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7429, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 7438, + "src": "228:12:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + }, + "typeName": { + "contractScope": null, + "id": 7428, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9866, + "src": "228:5:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "187:54:91" + }, + "returnParameters": { + "id": 7436, + "nodeType": "ParameterList", + "parameters": [], + "src": "283:0:91" + }, + "scope": 7439, + "src": "175:172:91", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7440, + "src": "117:232:91" + } + ], + "src": "0:350:91" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200196838038062001968833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082828260016000806101000a81548160ff02191690831515021790555060008311620000f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000178576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620019436025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000200576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180620018fd6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002ac620002a0620002d060201b60201c565b620002d860201b60201c565b6000600560006101000a81548160ff021916908315150217905550505050620004fd565b600033905090565b620002f38160046200033960201b62000e911790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6200034b82826200041d60201b60201c565b15620003bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620004a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620019216022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113f0806200050d6000396000f3fe60806040526004361061009c5760003560e01c80635c975abb116100645780635c975abb146101db5780636ef8d66d1461020a57806382dc1ec4146102215780638456cb5914610272578063ec8ac4d814610289578063fc0c546a146102cd5761009c565b80632c4e722e146100ae5780633f4ba83a146100d95780634042b66f146100f057806346fbf68e1461011b578063521eb27314610184575b6100ac6100a7610324565b61032c565b005b3480156100ba57600080fd5b506100c36104b7565b6040518082815260200191505060405180910390f35b3480156100e557600080fd5b506100ee6104c1565b005b3480156100fc57600080fd5b5061010561062f565b6040518082815260200191505060405180910390f35b34801561012757600080fd5b5061016a6004803603602081101561013e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610639565b604051808215151515815260200191505060405180910390f35b34801561019057600080fd5b50610199610656565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e757600080fd5b506101f0610680565b604051808215151515815260200191505060405180910390f35b34801561021657600080fd5b5061021f610697565b005b34801561022d57600080fd5b506102706004803603602081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a9565b005b34801561027e57600080fd5b5061028761071a565b005b6102cb6004803603602081101561029f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061032c565b005b3480156102d957600080fd5b506102e2610889565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166103ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506103d682826108b2565b60006103e182610943565b90506103f88260035461096190919063ffffffff16565b60038190555061040883826109e9565b8273ffffffffffffffffffffffffffffffffffffffff16610427610324565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361048683836109f7565b61048e6109fb565b6104988383610a66565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6104d16104cc610324565b610639565b610526576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806112d46030913960400191505060405180910390fd5b600560009054906101000a900460ff166105a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6105ec610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600354905090565b600061064f826004610a6a90919063ffffffff16565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900460ff16905090565b6106a76106a2610324565b610b48565b565b6106b96106b4610324565b610639565b61070e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806112d46030913960400191505060405180910390fd5b61071781610ba2565b50565b61072a610725610324565b610639565b61077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806112d46030913960400191505060405180910390fd5b600560009054906101000a900460ff1615610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610846610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900460ff1615610935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61093f8282610bfc565b5050565b600061095a60025483610cfd90919063ffffffff16565b9050919050565b6000808284019050838110156109df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6109f38282610d83565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610a63573d6000803e3d6000fd5b50565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610af1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113466022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b5c816004610dd490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610bb6816004610e9190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611368602a913960400191505060405180910390fd5b6000811415610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610d105760009050610d7d565b6000828402905082848281610d2157fe5b0414610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113256021913960400191505060405180910390fd5b809150505b92915050565b610dd08282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f6c9092919063ffffffff16565b5050565b610dde8282610a6a565b610e33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113046021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e9b8282610a6a565b15610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611038838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061103d565b505050565b61105c8273ffffffffffffffffffffffffffffffffffffffff16611288565b6110ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061111d57805182526020820191506020810190506020830392506110fa565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461117f576040519150601f19603f3d011682016040523d82523d6000602084013e611184565b606091505b5091509150816111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156112825780806020019051602081101561121b57600080fd5b8101908080519060200190929190505050611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611392602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156112ca57506000801b8214155b9250505091905056fe506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582003a86662d06046e9e65ad8f663ba378cf415c3d285288b35db6bce3aafc3945564736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x60806040526004361061009c5760003560e01c80635c975abb116100645780635c975abb146101db5780636ef8d66d1461020a57806382dc1ec4146102215780638456cb5914610272578063ec8ac4d814610289578063fc0c546a146102cd5761009c565b80632c4e722e146100ae5780633f4ba83a146100d95780634042b66f146100f057806346fbf68e1461011b578063521eb27314610184575b6100ac6100a7610324565b61032c565b005b3480156100ba57600080fd5b506100c36104b7565b6040518082815260200191505060405180910390f35b3480156100e557600080fd5b506100ee6104c1565b005b3480156100fc57600080fd5b5061010561062f565b6040518082815260200191505060405180910390f35b34801561012757600080fd5b5061016a6004803603602081101561013e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610639565b604051808215151515815260200191505060405180910390f35b34801561019057600080fd5b50610199610656565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e757600080fd5b506101f0610680565b604051808215151515815260200191505060405180910390f35b34801561021657600080fd5b5061021f610697565b005b34801561022d57600080fd5b506102706004803603602081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a9565b005b34801561027e57600080fd5b5061028761071a565b005b6102cb6004803603602081101561029f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061032c565b005b3480156102d957600080fd5b506102e2610889565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166103ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506103d682826108b2565b60006103e182610943565b90506103f88260035461096190919063ffffffff16565b60038190555061040883826109e9565b8273ffffffffffffffffffffffffffffffffffffffff16610427610324565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361048683836109f7565b61048e6109fb565b6104988383610a66565b505060016000806101000a81548160ff02191690831515021790555050565b6000600254905090565b6104d16104cc610324565b610639565b610526576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806112d46030913960400191505060405180910390fd5b600560009054906101000a900460ff166105a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6105ec610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600354905090565b600061064f826004610a6a90919063ffffffff16565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900460ff16905090565b6106a76106a2610324565b610b48565b565b6106b96106b4610324565b610639565b61070e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806112d46030913960400191505060405180910390fd5b61071781610ba2565b50565b61072a610725610324565b610639565b61077f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806112d46030913960400191505060405180910390fd5b600560009054906101000a900460ff1615610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610846610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900460ff1615610935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61093f8282610bfc565b5050565b600061095a60025483610cfd90919063ffffffff16565b9050919050565b6000808284019050838110156109df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6109f38282610d83565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610a63573d6000803e3d6000fd5b50565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610af1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806113466022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b5c816004610dd490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610bb6816004610e9190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611368602a913960400191505060405180910390fd5b6000811415610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610d105760009050610d7d565b6000828402905082848281610d2157fe5b0414610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113256021913960400191505060405180910390fd5b809150505b92915050565b610dd08282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f6c9092919063ffffffff16565b5050565b610dde8282610a6a565b610e33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113046021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e9b8282610a6a565b15610f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611038838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061103d565b505050565b61105c8273ffffffffffffffffffffffffffffffffffffffff16611288565b6110ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061111d57805182526020820191506020810190506020830392506110fa565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461117f576040519150601f19603f3d011682016040523d82523d6000602084013e611184565b606091505b5091509150816111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156112825780806020019051602081101561121b57600080fd5b8101908080519060200190929190505050611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611392602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156112ca57506000801b8214155b9250505091905056fe506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582003a86662d06046e9e65ad8f663ba378cf415c3d285288b35db6bce3aafc3945564736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PausableMock.json b/node_modules/@openzeppelin/contracts/build/contracts/PausableMock.json new file mode 100644 index 0000000..1da0589 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PausableMock.json @@ -0,0 +1,728 @@ +{ + "fileName": "PausableMock.sol", + "contractName": "PausableMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/Pausable.sol\";\n\ncontract PausableMock is Pausable {\n bool public drasticMeasureTaken;\n uint256 public count;\n\n constructor () public {\n drasticMeasureTaken = false;\n count = 0;\n }\n\n function normalProcess() external whenNotPaused {\n count++;\n }\n\n function drasticMeasure() external whenPaused {\n drasticMeasureTaken = true;\n }\n\n function pause() external {\n _pause();\n }\n\n function unpause() external {\n _unpause();\n }\n}\n", + "sourcePath": "contracts/mocks/PausableMock.sol", + "sourceMap": "91:482:55:-:0;;;195:85;;;;;;;;;;933:5:97;923:7;;:15;;;;;;;;;;;;;;;;;;249:5:55;227:19;;:27;;;;;;;;;;;;;;;;;;272:1;264:5;:9;;;;91:482;;;;;;", + "deployedSourceMap": "91:482:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;168:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;516:55;;;:::i;:::-;;1040:76:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;131:31:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;459:51;;;:::i;:::-;;364:89;;;:::i;:::-;;286:72;;;:::i;:::-;;168:20;;;;:::o;516:55::-;554:10;:8;:10::i;:::-;516:55::o;1040:76:97:-;1079:4;1102:7;;;;;;;;;;;1095:14;;1040:76;:::o;131:31:55:-;;;;;;;;;;;;;:::o;459:51::-;495:8;:6;:8::i;:::-;459:51::o;364:89::-;1460:7:97;;;;;;;;;;;1452:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;442:4:55::1;420:19;;:26;;;;;;;;;;;;;;;;;;364:89::o:0;286:72::-;1269:7:97;;;;;;;;;;;1268:8;1260:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:5:55::1;;:7;;;;;;;;;;;;;286:72::o:0;1742:117:97:-;1460:7;;;;;;;;;;;1452:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:5:::1;1800:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;1830:22;1839:12;:10;:12::i;:::-;1830:22;;;;;;;;;;;;;;;;;;;;;;1742:117::o:0;1568:115::-;1269:7;;;;;;;;;;;1268:8;1260:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:4:::1;1627:7;::::0;:14:::1;;;;;;;;;;;;;;;;;;1656:20;1663:12;:10;:12::i;:::-;1656:20;;;;;;;;;;;;;;;;;;;;;;1568:115::o:0;768:104:0:-;821:15;855:10;848:17;;768:104;:::o", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "count", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "drasticMeasure", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drasticMeasureTaken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "normalProcess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/PausableMock.sol", + "exportedSymbols": { + "PausableMock": [ + 5117 + ] + }, + "id": 5118, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5064, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:55" + }, + { + "absolutePath": "contracts/utils/Pausable.sol", + "file": "../utils/Pausable.sol", + "id": 5065, + "nodeType": "ImportDirective", + "scope": 5118, + "sourceUnit": 12086, + "src": "58:31:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5066, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12085, + "src": "116:8:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$12085", + "typeString": "contract Pausable" + } + }, + "id": 5067, + "nodeType": "InheritanceSpecifier", + "src": "116:8:55" + } + ], + "contractDependencies": [ + 26, + 12085 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5117, + "linearizedBaseContracts": [ + 5117, + 12085, + 26 + ], + "name": "PausableMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "76657b8e", + "id": 5069, + "mutability": "mutable", + "name": "drasticMeasureTaken", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5117, + "src": "131:31:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5068, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "131:4:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "06661abd", + "id": 5071, + "mutability": "mutable", + "name": "count", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5117, + "src": "168:20:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "168:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 5082, + "nodeType": "Block", + "src": "217:63:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5074, + "name": "drasticMeasureTaken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5069, + "src": "227:19:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "249:5:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "227:27:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5077, + "nodeType": "ExpressionStatement", + "src": "227:27:55" + }, + { + "expression": { + "argumentTypes": null, + "id": 5080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5078, + "name": "count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5071, + "src": "264:5:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "272:1:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "264:9:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5081, + "nodeType": "ExpressionStatement", + "src": "264:9:55" + } + ] + }, + "documentation": null, + "id": 5083, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5072, + "nodeType": "ParameterList", + "parameters": [], + "src": "207:2:55" + }, + "returnParameters": { + "id": 5073, + "nodeType": "ParameterList", + "parameters": [], + "src": "217:0:55" + }, + "scope": 5117, + "src": "195:85:55", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5091, + "nodeType": "Block", + "src": "334:24:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "344:7:55", + "subExpression": { + "argumentTypes": null, + "id": 5088, + "name": "count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5071, + "src": "344:5:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5090, + "nodeType": "ExpressionStatement", + "src": "344:7:55" + } + ] + }, + "documentation": null, + "functionSelector": "e7651d7a", + "id": 5092, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5086, + "modifierName": { + "argumentTypes": null, + "id": 5085, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12042, + "src": "320:13:55", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "320:13:55" + } + ], + "name": "normalProcess", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5084, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:2:55" + }, + "returnParameters": { + "id": 5087, + "nodeType": "ParameterList", + "parameters": [], + "src": "334:0:55" + }, + "scope": 5117, + "src": "286:72:55", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5101, + "nodeType": "Block", + "src": "410:43:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5097, + "name": "drasticMeasureTaken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5069, + "src": "420:19:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "442:4:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "420:26:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5100, + "nodeType": "ExpressionStatement", + "src": "420:26:55" + } + ] + }, + "documentation": null, + "functionSelector": "9958f045", + "id": 5102, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5095, + "modifierName": { + "argumentTypes": null, + "id": 5094, + "name": "whenPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12052, + "src": "399:10:55", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "399:10:55" + } + ], + "name": "drasticMeasure", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5093, + "nodeType": "ParameterList", + "parameters": [], + "src": "387:2:55" + }, + "returnParameters": { + "id": 5096, + "nodeType": "ParameterList", + "parameters": [], + "src": "410:0:55" + }, + "scope": 5117, + "src": "364:89:55", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5108, + "nodeType": "Block", + "src": "485:25:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5105, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12068, + "src": "495:6:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "495:8:55", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5107, + "nodeType": "ExpressionStatement", + "src": "495:8:55" + } + ] + }, + "documentation": null, + "functionSelector": "8456cb59", + "id": 5109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5103, + "nodeType": "ParameterList", + "parameters": [], + "src": "473:2:55" + }, + "returnParameters": { + "id": 5104, + "nodeType": "ParameterList", + "parameters": [], + "src": "485:0:55" + }, + "scope": 5117, + "src": "459:51:55", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5115, + "nodeType": "Block", + "src": "544:27:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5112, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12084, + "src": "554:8:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "554:10:55", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5114, + "nodeType": "ExpressionStatement", + "src": "554:10:55" + } + ] + }, + "documentation": null, + "functionSelector": "3f4ba83a", + "id": 5116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpause", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5110, + "nodeType": "ParameterList", + "parameters": [], + "src": "532:2:55" + }, + "returnParameters": { + "id": 5111, + "nodeType": "ParameterList", + "parameters": [], + "src": "544:0:55" + }, + "scope": 5117, + "src": "516:55:55", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5118, + "src": "91:482:55" + } + ], + "src": "33:541:55" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060008060006101000a81548160ff02191690831515021790555060008060016101000a81548160ff02191690831515021790555060006001819055506104d08061005c6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806376657b8e1161005b57806376657b8e146100cc5780638456cb59146100ee5780639958f045146100f8578063e7651d7a146101025761007d565b806306661abd146100825780633f4ba83a146100a05780635c975abb146100aa575b600080fd5b61008a61010c565b6040518082815260200191505060405180910390f35b6100a8610112565b005b6100b261011c565b604051808215151515815260200191505060405180910390f35b6100d4610132565b604051808215151515815260200191505060405180910390f35b6100f6610145565b005b61010061014f565b005b61010a6101ed565b005b60015481565b61011a610283565b565b60008060009054906101000a900460ff16905090565b600060019054906101000a900460ff1681565b61014d61038a565b565b6000809054906101000a900460ff166101d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6001600060016101000a81548160ff021916908315150217905550565b6000809054906101000a900460ff161561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600160008154809291906001019190505550565b6000809054906101000a900460ff16610304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610347610492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000809054906101000a900460ff161561040c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861044f610492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60003390509056fea2646970667358221220d1a02bfd6418bebe4c7e0346f69de60a0f429c113e7087ff997d3ab3305d63fc64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806376657b8e1161005b57806376657b8e146100cc5780638456cb59146100ee5780639958f045146100f8578063e7651d7a146101025761007d565b806306661abd146100825780633f4ba83a146100a05780635c975abb146100aa575b600080fd5b61008a61010c565b6040518082815260200191505060405180910390f35b6100a8610112565b005b6100b261011c565b604051808215151515815260200191505060405180910390f35b6100d4610132565b604051808215151515815260200191505060405180910390f35b6100f6610145565b005b61010061014f565b005b61010a6101ed565b005b60015481565b61011a610283565b565b60008060009054906101000a900460ff16905090565b600060019054906101000a900460ff1681565b61014d61038a565b565b6000809054906101000a900460ff166101d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6001600060016101000a81548160ff021916908315150217905550565b6000809054906101000a900460ff161561026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600160008154809291906001019190505550565b6000809054906101000a900460ff16610304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610347610492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000809054906101000a900460ff161561040c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861044f610492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60003390509056fea2646970667358221220d1a02bfd6418bebe4c7e0346f69de60a0f429c113e7087ff997d3ab3305d63fc64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PauserRole.json b/node_modules/@openzeppelin/contracts/build/contracts/PauserRole.json new file mode 100644 index 0000000..6983561 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PauserRole.json @@ -0,0 +1,1356 @@ +{ + "fileName": "PauserRole.sol", + "contractName": "PauserRole", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../Roles.sol\";\n\ncontract PauserRole is Context {\n using Roles for Roles.Role;\n\n event PauserAdded(address indexed account);\n event PauserRemoved(address indexed account);\n\n Roles.Role private _pausers;\n\n constructor () internal {\n _addPauser(_msgSender());\n }\n\n modifier onlyPauser() {\n require(isPauser(_msgSender()), \"PauserRole: caller does not have the Pauser role\");\n _;\n }\n\n function isPauser(address account) public view returns (bool) {\n return _pausers.has(account);\n }\n\n function addPauser(address account) public onlyPauser {\n _addPauser(account);\n }\n\n function renouncePauser() public {\n _removePauser(_msgSender());\n }\n\n function _addPauser(address account) internal {\n _pausers.add(account);\n emit PauserAdded(account);\n }\n\n function _removePauser(address account) internal {\n _pausers.remove(account);\n emit PauserRemoved(account);\n }\n}\n", + "sourcePath": "contracts/access/roles/PauserRole.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/roles/PauserRole.sol", + "exportedSymbols": { + "PauserRole": [ + 1515 + ] + }, + "id": 1516, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1410, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 1411, + "nodeType": "ImportDirective", + "scope": 1516, + "sourceUnit": 27, + "src": "25:31:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 1412, + "nodeType": "ImportDirective", + "scope": 1516, + "sourceUnit": 1195, + "src": "57:22:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1413, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "104:7:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1414, + "nodeType": "InheritanceSpecifier", + "src": "104:7:9" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1515, + "linearizedBaseContracts": [ + 1515, + 26 + ], + "name": "PauserRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1417, + "libraryName": { + "contractScope": null, + "id": 1415, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "124:5:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "118:27:9", + "typeName": { + "contractScope": null, + "id": 1416, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "134:10:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1421, + "name": "PauserAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 1420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1419, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1421, + "src": "169:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "169:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "168:25:9" + }, + "src": "151:43:9" + }, + { + "anonymous": false, + "documentation": null, + "id": 1425, + "name": "PauserRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 1424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1423, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1425, + "src": "219:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "219:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "218:25:9" + }, + "src": "199:45:9" + }, + { + "constant": false, + "id": 1427, + "name": "_pausers", + "nodeType": "VariableDeclaration", + "scope": 1515, + "src": "250:27:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1426, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "250:10:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1435, + "nodeType": "Block", + "src": "308:41:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1431, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "329:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:12:9", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1430, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1498, + "src": "318:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "318:24:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1434, + "nodeType": "ExpressionStatement", + "src": "318:24:9" + } + ] + }, + "documentation": null, + "id": 1436, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1428, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:2:9" + }, + "returnParameters": { + "id": 1429, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:0:9" + }, + "scope": 1515, + "src": "284:65:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1447, + "nodeType": "Block", + "src": "377:111:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1440, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "404:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "404:12:9", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1439, + "name": "isPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "395:8:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "395:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c65", + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "419:50:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1f95198cb5985a7636f9555f0b7f8fbd672d4e7c4afcc5669e5aa965835c68a7", + "typeString": "literal_string \"PauserRole: caller does not have the Pauser role\"" + }, + "value": "PauserRole: caller does not have the Pauser role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1f95198cb5985a7636f9555f0b7f8fbd672d4e7c4afcc5669e5aa965835c68a7", + "typeString": "literal_string \"PauserRole: caller does not have the Pauser role\"" + } + ], + "id": 1438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "387:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "387:83:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1445, + "nodeType": "ExpressionStatement", + "src": "387:83:9" + }, + { + "id": 1446, + "nodeType": "PlaceholderStatement", + "src": "480:1:9" + } + ] + }, + "documentation": null, + "id": 1448, + "name": "onlyPauser", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1437, + "nodeType": "ParameterList", + "parameters": [], + "src": "374:2:9" + }, + "src": "355:133:9", + "visibility": "internal" + }, + { + "body": { + "id": 1460, + "nodeType": "Block", + "src": "556:45:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1457, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "586:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1455, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1427, + "src": "573:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "573:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "573:21:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1454, + "id": 1459, + "nodeType": "Return", + "src": "566:28:9" + } + ] + }, + "documentation": null, + "id": 1461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1450, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1461, + "src": "512:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1449, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "511:17:9" + }, + "returnParameters": { + "id": 1454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1453, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1461, + "src": "550:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1452, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "550:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "549:6:9" + }, + "scope": 1515, + "src": "494:107:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1472, + "nodeType": "Block", + "src": "661:36:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1469, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "682:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1468, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1498, + "src": "671:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "671:19:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1471, + "nodeType": "ExpressionStatement", + "src": "671:19:9" + } + ] + }, + "documentation": null, + "id": 1473, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1466, + "modifierName": { + "argumentTypes": null, + "id": 1465, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "650:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "650:10:9" + } + ], + "name": "addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1463, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1473, + "src": "626:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:17:9" + }, + "returnParameters": { + "id": 1467, + "nodeType": "ParameterList", + "parameters": [], + "src": "661:0:9" + }, + "scope": 1515, + "src": "607:90:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1481, + "nodeType": "Block", + "src": "736:44:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1477, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "760:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:12:9", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1476, + "name": "_removePauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "746:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "746:27:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1480, + "nodeType": "ExpressionStatement", + "src": "746:27:9" + } + ] + }, + "documentation": null, + "id": 1482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renouncePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1474, + "nodeType": "ParameterList", + "parameters": [], + "src": "726:2:9" + }, + "returnParameters": { + "id": 1475, + "nodeType": "ParameterList", + "parameters": [], + "src": "736:0:9" + }, + "scope": 1515, + "src": "703:77:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1497, + "nodeType": "Block", + "src": "832:73:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1490, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "855:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1487, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1427, + "src": "842:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1489, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "842:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:21:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "842:21:9" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1494, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "890:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1493, + "name": "PauserAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1421, + "src": "878:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "878:20:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1496, + "nodeType": "EmitStatement", + "src": "873:25:9" + } + ] + }, + "documentation": null, + "id": 1498, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1484, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1498, + "src": "806:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "805:17:9" + }, + "returnParameters": { + "id": 1486, + "nodeType": "ParameterList", + "parameters": [], + "src": "832:0:9" + }, + "scope": 1515, + "src": "786:119:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1513, + "nodeType": "Block", + "src": "960:78:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1506, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1500, + "src": "986:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1503, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1427, + "src": "970:8:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "970:15:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:24:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1508, + "nodeType": "ExpressionStatement", + "src": "970:24:9" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1510, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1500, + "src": "1023:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1509, + "name": "PauserRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1425, + "src": "1009:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:22:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1512, + "nodeType": "EmitStatement", + "src": "1004:27:9" + } + ] + }, + "documentation": null, + "id": 1514, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1500, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1514, + "src": "934:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "934:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "933:17:9" + }, + "returnParameters": { + "id": 1502, + "nodeType": "ParameterList", + "parameters": [], + "src": "960:0:9" + }, + "scope": 1515, + "src": "911:127:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1516, + "src": "81:959:9" + } + ], + "src": "0:1041:9" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PauserRoleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/PauserRoleMock.json new file mode 100644 index 0000000..7ae9e26 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PauserRoleMock.json @@ -0,0 +1,492 @@ +{ + "fileName": "PauserRoleMock.sol", + "contractName": "PauserRoleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/PauserRole.sol\";\n\ncontract PauserRoleMock is PauserRole {\n function removePauser(address account) public {\n _removePauser(account);\n }\n\n function onlyPauserMock() public view onlyPauser {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Causes a compilation error if super._removePauser is not internal\n function _removePauser(address account) internal {\n super._removePauser(account);\n }\n}\n", + "sourcePath": "contracts/mocks/PauserRoleMock.sol", + "sourceMap": "67:423:93:-;;;318:24:9;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;67:423:93;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:9:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;67:423:93:-;;;;;;;", + "deployedSourceMap": "67:423:93:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67:423:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113;;;:::i;:::-;;494:107:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;111:85:93;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;111:85:93;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77:9;;;:::i;:::-;;607:90;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;202:113:93;395:22:9;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113:93:o;494:107:9:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;111:85:93:-;167:22;181:7;167:13;:22::i;:::-;111:85;:::o;703:77:9:-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;607:90::-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;394:94:93:-;453:28;473:7;453:19;:28::i;:::-;394:94;:::o;786:119:9:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyPauserMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/PauserRoleMock.sol", + "exportedSymbols": { + "PauserRoleMock": [ + 7517 + ] + }, + "id": 7518, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7485, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:93" + }, + { + "absolutePath": "contracts/access/roles/PauserRole.sol", + "file": "../access/roles/PauserRole.sol", + "id": 7486, + "nodeType": "ImportDirective", + "scope": 7518, + "sourceUnit": 1516, + "src": "25:40:93", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7487, + "name": "PauserRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1515, + "src": "94:10:93", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PauserRole_$1515", + "typeString": "contract PauserRole" + } + }, + "id": 7488, + "nodeType": "InheritanceSpecifier", + "src": "94:10:93" + } + ], + "contractDependencies": [ + 26, + 1515 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7517, + "linearizedBaseContracts": [ + 7517, + 1515, + 26 + ], + "name": "PauserRoleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7497, + "nodeType": "Block", + "src": "157:39:93", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7494, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7490, + "src": "181:7:93", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7493, + "name": "_removePauser", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7516 + ], + "referencedDeclaration": 7516, + "src": "167:13:93", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 7495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "167:22:93", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7496, + "nodeType": "ExpressionStatement", + "src": "167:22:93" + } + ] + }, + "documentation": null, + "id": 7498, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7490, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7498, + "src": "133:15:93", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "133:7:93", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "132:17:93" + }, + "returnParameters": { + "id": 7492, + "nodeType": "ParameterList", + "parameters": [], + "src": "157:0:93" + }, + "scope": 7517, + "src": "111:85:93", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 7503, + "nodeType": "Block", + "src": "251:64:93", + "statements": [] + }, + "documentation": null, + "id": 7504, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 7501, + "modifierName": { + "argumentTypes": null, + "id": 7500, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "240:10:93", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "240:10:93" + } + ], + "name": "onlyPauserMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7499, + "nodeType": "ParameterList", + "parameters": [], + "src": "225:2:93" + }, + "returnParameters": { + "id": 7502, + "nodeType": "ParameterList", + "parameters": [], + "src": "251:0:93" + }, + "scope": 7517, + "src": "202:113:93", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 7515, + "nodeType": "Block", + "src": "443:45:93", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7512, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7506, + "src": "473:7:93", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 7509, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14136, + "src": "453:5:93", + "typeDescriptions": { + "typeIdentifier": "t_super$_PauserRoleMock_$7517", + "typeString": "contract super PauserRoleMock" + } + }, + "id": 7511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_removePauser", + "nodeType": "MemberAccess", + "referencedDeclaration": 1514, + "src": "453:19:93", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 7513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "453:28:93", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7514, + "nodeType": "ExpressionStatement", + "src": "453:28:93" + } + ] + }, + "documentation": null, + "id": 7516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7506, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7516, + "src": "417:15:93", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:93", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:17:93" + }, + "returnParameters": { + "id": 7508, + "nodeType": "ParameterList", + "parameters": [], + "src": "443:0:93" + }, + "scope": 7517, + "src": "394:94:93", + "stateMutability": "nonpayable", + "superFunction": 1514, + "visibility": "internal" + } + ], + "scope": 7518, + "src": "67:423:93" + } + ], + "src": "0:491:93" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b61040d1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108a66022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61064d806102596000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063329daf901461005c57806346fbf68e146100665780636b2c0f55146100c25780636ef8d66d1461010657806382dc1ec414610110575b600080fd5b610064610154565b005b6100a86004803603602081101561007c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101bb565b604051808215151515815260200191505060405180910390f35b610104600480360360208110156100d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101d8565b005b61010e6101e4565b005b6101526004803603602081101561012657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101f6565b005b61016461015f610267565b6101bb565b6101b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b565b60006101d182600061026f90919063ffffffff16565b9050919050565b6101e18161034d565b50565b6101f46101ef610267565b61034d565b565b610206610201610267565b6101bb565b61025b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b61026481610359565b50565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105f76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610356816103b3565b50565b61036d81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610417828261026f565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f2828261026f565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105d66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a72315820df9e113b44e8080872f8de11caf49c785426477ad25dbb08ab80e47ae3220eac64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063329daf901461005c57806346fbf68e146100665780636b2c0f55146100c25780636ef8d66d1461010657806382dc1ec414610110575b600080fd5b610064610154565b005b6100a86004803603602081101561007c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101bb565b604051808215151515815260200191505060405180910390f35b610104600480360360208110156100d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101d8565b005b61010e6101e4565b005b6101526004803603602081101561012657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101f6565b005b61016461015f610267565b6101bb565b6101b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b565b60006101d182600061026f90919063ffffffff16565b9050919050565b6101e18161034d565b50565b6101f46101ef610267565b61034d565b565b610206610201610267565b6101bb565b61025b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105a66030913960400191505060405180910390fd5b61026481610359565b50565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105f76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610356816103b3565b50565b61036d81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610417828261026f565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f2828261026f565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105d66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a72315820df9e113b44e8080872f8de11caf49c785426477ad25dbb08ab80e47ae3220eac64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PaymentSplitter.json b/node_modules/@openzeppelin/contracts/build/contracts/PaymentSplitter.json new file mode 100644 index 0000000..85fb809 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PaymentSplitter.json @@ -0,0 +1,4159 @@ +{ + "fileName": "PaymentSplitter.sol", + "contractName": "PaymentSplitter", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title PaymentSplitter\n * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware\n * that the Ether will be split in this way, since it is handled transparently by the contract.\n *\n * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each\n * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim\n * an amount proportional to the percentage of total shares they were assigned.\n *\n * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the\n * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release}\n * function.\n */\ncontract PaymentSplitter is Context {\n using SafeMath for uint256;\n\n event PayeeAdded(address account, uint256 shares);\n event PaymentReleased(address to, uint256 amount);\n event PaymentReceived(address from, uint256 amount);\n\n uint256 private _totalShares;\n uint256 private _totalReleased;\n\n mapping(address => uint256) private _shares;\n mapping(address => uint256) private _released;\n address[] private _payees;\n\n /**\n * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at\n * the matching position in the `shares` array.\n *\n * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no\n * duplicates in `payees`.\n */\n constructor (address[] memory payees, uint256[] memory shares) public payable {\n // solhint-disable-next-line max-line-length\n require(payees.length == shares.length, \"PaymentSplitter: payees and shares length mismatch\");\n require(payees.length > 0, \"PaymentSplitter: no payees\");\n\n for (uint256 i = 0; i < payees.length; i++) {\n _addPayee(payees[i], shares[i]);\n }\n }\n\n /**\n * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully\n * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the\n * reliability of the events, and not the actual splitting of Ether.\n *\n * To learn more about this see the Solidity documentation for\n * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback\n * functions].\n */\n receive () external payable virtual {\n emit PaymentReceived(_msgSender(), msg.value);\n }\n\n /**\n * @dev Getter for the total shares held by payees.\n */\n function totalShares() public view returns (uint256) {\n return _totalShares;\n }\n\n /**\n * @dev Getter for the total amount of Ether already released.\n */\n function totalReleased() public view returns (uint256) {\n return _totalReleased;\n }\n\n /**\n * @dev Getter for the amount of shares held by an account.\n */\n function shares(address account) public view returns (uint256) {\n return _shares[account];\n }\n\n /**\n * @dev Getter for the amount of Ether already released to a payee.\n */\n function released(address account) public view returns (uint256) {\n return _released[account];\n }\n\n /**\n * @dev Getter for the address of the payee number `index`.\n */\n function payee(uint256 index) public view returns (address) {\n return _payees[index];\n }\n\n /**\n * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the\n * total shares and their previous withdrawals.\n */\n function release(address payable account) public virtual {\n require(_shares[account] > 0, \"PaymentSplitter: account has no shares\");\n\n uint256 totalReceived = address(this).balance.add(_totalReleased);\n uint256 payment = totalReceived.mul(_shares[account]).div(_totalShares).sub(_released[account]);\n\n require(payment != 0, \"PaymentSplitter: account is not due payment\");\n\n _released[account] = _released[account].add(payment);\n _totalReleased = _totalReleased.add(payment);\n\n account.transfer(payment);\n emit PaymentReleased(account, payment);\n }\n\n /**\n * @dev Add a new payee to the contract.\n * @param account The address of the payee to add.\n * @param shares_ The number of shares owned by the payee.\n */\n function _addPayee(address account, uint256 shares_) private {\n require(account != address(0), \"PaymentSplitter: account is the zero address\");\n require(shares_ > 0, \"PaymentSplitter: shares are 0\");\n require(_shares[account] == 0, \"PaymentSplitter: account already has shares\");\n\n _payees.push(account);\n _shares[account] = shares_;\n _totalShares = _totalShares.add(shares_);\n emit PayeeAdded(account, shares_);\n }\n}\n", + "sourcePath": "contracts/payment/PaymentSplitter.sol", + "sourceMap": "942:4196:68:-:0;;;1734:417;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1900:6;:13;1883:6;:13;:30;1875:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2002:1;1986:6;:13;:17;1978:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:9;2062:1;2050:13;;2045:100;2069:6;:13;2065:1;:17;2045:100;;;2103:31;2113:6;2120:1;2113:9;;;;;;;;;;;;;;2124:6;2131:1;2124:9;;;;;;;;;;;;;;2103;;;:31;;:::i;:::-;2084:3;;;;;;;2045:100;;;;1734:417;;942:4196;;4669:467;4767:1;4748:21;;:7;:21;;;;4740:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:1;4836:7;:11;4828:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4919:1;4899:7;:16;4907:7;4899:16;;;;;;;;;;;;;;;;:21;4891:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:7;4992;4979:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:7;5010;:16;5018:7;5010:16;;;;;;;;;;;;;;;:26;;;;5061:25;5078:7;5061:12;;:16;;;;;;:25;;;;:::i;:::-;5046:12;:40;;;;5101:28;5112:7;5121;5101:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;4669:467;;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;942:4196:68:-;;;;;;;", + "deployedSourceMap": "942:4196:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2714:40;2730:12;:10;:12::i;:::-;2744:9;2714:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;942:4196;;;;;3878:606;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2839:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3586:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3393:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3196:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3017:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;590:104:0;643:15;677:10;670:17;;590:104;:::o;3878:606:68:-;3972:1;3953:7;:16;3961:7;3953:16;;;;;;;;;;;;;;;;:20;3945:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4027:21;4051:41;4077:14;;4059:4;4051:21;;;:25;;:41;;;;:::i;:::-;4027:65;;4102:15;4120:77;4178:9;:18;4188:7;4178:18;;;;;;;;;;;;;;;;4120:53;4160:12;;4120:35;4138:7;:16;4146:7;4138:16;;;;;;;;;;;;;;;;4120:13;:17;;:35;;;;:::i;:::-;:39;;:53;;;;:::i;:::-;:57;;:77;;;;:::i;:::-;4102:95;;4227:1;4216:7;:12;;4208:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4308:31;4331:7;4308:9;:18;4318:7;4308:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;4287:9;:18;4297:7;4287:18;;;;;;;;;;;;;;;:52;;;;4366:27;4385:7;4366:14;;:18;;:27;;;;:::i;:::-;4349:14;:44;;;;4404:7;:16;;:25;4421:7;4404:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:33;4460:7;4469;4444:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;3878:606;;;:::o;2839:89::-;2883:7;2909:12;;2902:19;;2839:89;:::o;3586:98::-;3637:7;3663;3671:5;3663:14;;;;;;;;;;;;;;;;;;;;;;;;;3656:21;;3586:98;;;:::o;3393:107::-;3449:7;3475:9;:18;3485:7;3475:18;;;;;;;;;;;;;;;;3468:25;;3393:107;;;:::o;3196:103::-;3250:7;3276;:16;3284:7;3276:16;;;;;;;;;;;;;;;;3269:23;;3196:103;;;:::o;3017:93::-;3063:7;3089:14;;3082:21;;3017:93;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;2180:459::-;2238:7;2484:1;2479;:6;2475:45;;;2508:1;2501:8;;;;2475:45;2530:9;2546:1;2542;:5;2530:17;;2574:1;2569;2565;:5;;;;;;:10;2557:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:1;2624:8;;;2180:459;;;;;:::o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;1321:134::-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;3713:272::-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;1746:187::-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address[]", + "name": "payees", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "shares", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "name": "PayeeAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PaymentReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PaymentReleased", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "payee", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "account", + "type": "address" + } + ], + "name": "release", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "released", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "shares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalReleased", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "ast": { + "absolutePath": "contracts/payment/PaymentSplitter.sol", + "exportedSymbols": { + "PaymentSplitter": [ + 6452 + ] + }, + "id": 6453, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6152, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:68" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 6153, + "nodeType": "ImportDirective", + "scope": 6453, + "sourceUnit": 23, + "src": "58:28:68", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 6154, + "nodeType": "ImportDirective", + "scope": 6453, + "sourceUnit": 2422, + "src": "87:30:68", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6156, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 22, + "src": "970:7:68", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$22", + "typeString": "contract Context" + } + }, + "id": 6157, + "nodeType": "InheritanceSpecifier", + "src": "970:7:68" + } + ], + "contractDependencies": [ + 22 + ], + "contractKind": "contract", + "documentation": { + "id": 6155, + "nodeType": "StructuredDocumentation", + "src": "119:822:68", + "text": " @title PaymentSplitter\n @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware\n that the Ether will be split in this way, since it is handled transparently by the contract.\n The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each\n account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim\n an amount proportional to the percentage of total shares they were assigned.\n `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the\n accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release}\n function." + }, + "fullyImplemented": true, + "id": 6452, + "linearizedBaseContracts": [ + 6452, + 22 + ], + "name": "PaymentSplitter", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 6160, + "libraryName": { + "contractScope": null, + "id": 6158, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "990:8:68", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "984:27:68", + "typeName": { + "id": 6159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1003:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 6166, + "name": "PayeeAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 6165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6162, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6166, + "src": "1034:15:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1034:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6164, + "indexed": false, + "mutability": "mutable", + "name": "shares", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6166, + "src": "1051:14:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1051:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1033:33:68" + }, + "src": "1017:50:68" + }, + { + "anonymous": false, + "documentation": null, + "id": 6172, + "name": "PaymentReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 6171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6168, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6172, + "src": "1094:10:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1094:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6170, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6172, + "src": "1106:14:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1106:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1093:28:68" + }, + "src": "1072:50:68" + }, + { + "anonymous": false, + "documentation": null, + "id": 6178, + "name": "PaymentReceived", + "nodeType": "EventDefinition", + "parameters": { + "id": 6177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6174, + "indexed": false, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6178, + "src": "1149:12:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1149:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6176, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6178, + "src": "1163:14:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1163:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1148:30:68" + }, + "src": "1127:52:68" + }, + { + "constant": false, + "id": 6180, + "mutability": "mutable", + "name": "_totalShares", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6452, + "src": "1185:28:68", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1185:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6182, + "mutability": "mutable", + "name": "_totalReleased", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6452, + "src": "1219:30:68", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1219:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6186, + "mutability": "mutable", + "name": "_shares", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6452, + "src": "1256:43:68", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 6185, + "keyType": { + "id": 6183, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1264:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1256:27:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 6184, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1275:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6190, + "mutability": "mutable", + "name": "_released", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6452, + "src": "1305:45:68", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 6189, + "keyType": { + "id": 6187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1313:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1305:27:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 6188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1324:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6193, + "mutability": "mutable", + "name": "_payees", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6452, + "src": "1356:25:68", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 6191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1356:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6192, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1356:9:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 6242, + "nodeType": "Block", + "src": "1812:339:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6204, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6197, + "src": "1883:6:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 6205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1883:13:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6206, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6200, + "src": "1900:6:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 6207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1900:13:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1883:30:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a2070617965657320616e6420736861726573206c656e677468206d69736d61746368", + "id": 6209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1915:52:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a5e39d6690ea50b22e040fe9ba22acf868e3d7f78e6ca8dc7ae3224a0aade89f", + "typeString": "literal_string \"PaymentSplitter: payees and shares length mismatch\"" + }, + "value": "PaymentSplitter: payees and shares length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a5e39d6690ea50b22e040fe9ba22acf868e3d7f78e6ca8dc7ae3224a0aade89f", + "typeString": "literal_string \"PaymentSplitter: payees and shares length mismatch\"" + } + ], + "id": 6203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1875:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1875:93:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6211, + "nodeType": "ExpressionStatement", + "src": "1875:93:68" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6213, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6197, + "src": "1986:6:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 6214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1986:13:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2002:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1986:17:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a206e6f20706179656573", + "id": 6217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2005:28:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f1437b0f4053e38629626a98d8100226576b62fcebc211e7a49225bd05994643", + "typeString": "literal_string \"PaymentSplitter: no payees\"" + }, + "value": "PaymentSplitter: no payees" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f1437b0f4053e38629626a98d8100226576b62fcebc211e7a49225bd05994643", + "typeString": "literal_string \"PaymentSplitter: no payees\"" + } + ], + "id": 6212, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1978:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1978:56:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6219, + "nodeType": "ExpressionStatement", + "src": "1978:56:68" + }, + { + "body": { + "id": 6240, + "nodeType": "Block", + "src": "2089:56:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6232, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6197, + "src": "2113:6:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 6234, + "indexExpression": { + "argumentTypes": null, + "id": 6233, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "2120:1:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2113:9:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6235, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6200, + "src": "2124:6:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 6237, + "indexExpression": { + "argumentTypes": null, + "id": 6236, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "2131:1:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2124:9:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6231, + "name": "_addPayee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6451, + "src": "2103:9:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2103:31:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6239, + "nodeType": "ExpressionStatement", + "src": "2103:31:68" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6224, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "2065:1:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6225, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6197, + "src": "2069:6:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 6226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2069:13:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2065:17:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6241, + "initializationExpression": { + "assignments": [ + 6221 + ], + "declarations": [ + { + "constant": false, + "id": 6221, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6241, + "src": "2050:9:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2050:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6223, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 6222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2062:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2050:13:68" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 6229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2084:3:68", + "subExpression": { + "argumentTypes": null, + "id": 6228, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "2084:1:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6230, + "nodeType": "ExpressionStatement", + "src": "2084:3:68" + }, + "nodeType": "ForStatement", + "src": "2045:100:68" + } + ] + }, + "documentation": { + "id": 6194, + "nodeType": "StructuredDocumentation", + "src": "1388:341:68", + "text": " @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at\n the matching position in the `shares` array.\n All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no\n duplicates in `payees`." + }, + "id": 6243, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6197, + "mutability": "mutable", + "name": "payees", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6243, + "src": "1747:23:68", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 6195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1747:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6196, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1747:9:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6200, + "mutability": "mutable", + "name": "shares", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6243, + "src": "1772:23:68", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6198, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1772:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6199, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1772:9:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1746:50:68" + }, + "returnParameters": { + "id": 6202, + "nodeType": "ParameterList", + "parameters": [], + "src": "1812:0:68" + }, + "scope": 6452, + "src": "1734:417:68", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6254, + "nodeType": "Block", + "src": "2699:62:68", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6248, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2730:10:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 6249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2730:12:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6250, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2744:3:68", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2744:9:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6247, + "name": "PaymentReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6178, + "src": "2714:15:68", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2714:40:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6253, + "nodeType": "EmitStatement", + "src": "2709:45:68" + } + ] + }, + "documentation": { + "id": 6244, + "nodeType": "StructuredDocumentation", + "src": "2157:501:68", + "text": " @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully\n reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the\n reliability of the events, and not the actual splitting of Ether.\n To learn more about this see the Solidity documentation for\n https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback\n functions]." + }, + "id": 6255, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6245, + "nodeType": "ParameterList", + "parameters": [], + "src": "2671:2:68" + }, + "returnParameters": { + "id": 6246, + "nodeType": "ParameterList", + "parameters": [], + "src": "2699:0:68" + }, + "scope": 6452, + "src": "2663:98:68", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 6263, + "nodeType": "Block", + "src": "2892:36:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6261, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6180, + "src": "2909:12:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6260, + "id": 6262, + "nodeType": "Return", + "src": "2902:19:68" + } + ] + }, + "documentation": { + "id": 6256, + "nodeType": "StructuredDocumentation", + "src": "2767:67:68", + "text": " @dev Getter for the total shares held by payees." + }, + "functionSelector": "3a98ef39", + "id": 6264, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalShares", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6257, + "nodeType": "ParameterList", + "parameters": [], + "src": "2859:2:68" + }, + "returnParameters": { + "id": 6260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6259, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6264, + "src": "2883:7:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2883:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2882:9:68" + }, + "scope": 6452, + "src": "2839:89:68", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6272, + "nodeType": "Block", + "src": "3072:38:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6270, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6182, + "src": "3089:14:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6269, + "id": 6271, + "nodeType": "Return", + "src": "3082:21:68" + } + ] + }, + "documentation": { + "id": 6265, + "nodeType": "StructuredDocumentation", + "src": "2934:78:68", + "text": " @dev Getter for the total amount of Ether already released." + }, + "functionSelector": "e33b7de3", + "id": 6273, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalReleased", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6266, + "nodeType": "ParameterList", + "parameters": [], + "src": "3039:2:68" + }, + "returnParameters": { + "id": 6269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6268, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6273, + "src": "3063:7:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6267, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3063:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3062:9:68" + }, + "scope": 6452, + "src": "3017:93:68", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6285, + "nodeType": "Block", + "src": "3259:40:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6281, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "3276:7:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6283, + "indexExpression": { + "argumentTypes": null, + "id": 6282, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6276, + "src": "3284:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3276:16:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6280, + "id": 6284, + "nodeType": "Return", + "src": "3269:23:68" + } + ] + }, + "documentation": { + "id": 6274, + "nodeType": "StructuredDocumentation", + "src": "3116:75:68", + "text": " @dev Getter for the amount of shares held by an account." + }, + "functionSelector": "ce7c2ac2", + "id": 6286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shares", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6276, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6286, + "src": "3212:15:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6275, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3212:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3211:17:68" + }, + "returnParameters": { + "id": 6280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6279, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6286, + "src": "3250:7:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6278, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3250:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3249:9:68" + }, + "scope": 6452, + "src": "3196:103:68", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6298, + "nodeType": "Block", + "src": "3458:42:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6294, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "3475:9:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6296, + "indexExpression": { + "argumentTypes": null, + "id": 6295, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6289, + "src": "3485:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3475:18:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6293, + "id": 6297, + "nodeType": "Return", + "src": "3468:25:68" + } + ] + }, + "documentation": { + "id": 6287, + "nodeType": "StructuredDocumentation", + "src": "3305:83:68", + "text": " @dev Getter for the amount of Ether already released to a payee." + }, + "functionSelector": "9852595c", + "id": 6299, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "released", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6289, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6299, + "src": "3411:15:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3411:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3410:17:68" + }, + "returnParameters": { + "id": 6293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6292, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6299, + "src": "3449:7:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3449:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3448:9:68" + }, + "scope": 6452, + "src": "3393:107:68", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6311, + "nodeType": "Block", + "src": "3646:38:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6307, + "name": "_payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6193, + "src": "3663:7:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 6309, + "indexExpression": { + "argumentTypes": null, + "id": 6308, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "3671:5:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3663:14:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6306, + "id": 6310, + "nodeType": "Return", + "src": "3656:21:68" + } + ] + }, + "documentation": { + "id": 6300, + "nodeType": "StructuredDocumentation", + "src": "3506:75:68", + "text": " @dev Getter for the address of the payee number `index`." + }, + "functionSelector": "8b83209b", + "id": 6312, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payee", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6302, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6312, + "src": "3601:13:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3601:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3600:15:68" + }, + "returnParameters": { + "id": 6306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6305, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6312, + "src": "3637:7:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3637:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3636:9:68" + }, + "scope": 6452, + "src": "3586:98:68", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6391, + "nodeType": "Block", + "src": "3935:549:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6319, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "3953:7:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6321, + "indexExpression": { + "argumentTypes": null, + "id": 6320, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "3961:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3953:16:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3972:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3953:20:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a206163636f756e7420686173206e6f20736861726573", + "id": 6324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3975:40:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_41702911e7fdf9741c61509216c070cb4be5837176954fb37acaf958eaff82dd", + "typeString": "literal_string \"PaymentSplitter: account has no shares\"" + }, + "value": "PaymentSplitter: account has no shares" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_41702911e7fdf9741c61509216c070cb4be5837176954fb37acaf958eaff82dd", + "typeString": "literal_string \"PaymentSplitter: account has no shares\"" + } + ], + "id": 6318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3945:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3945:71:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6326, + "nodeType": "ExpressionStatement", + "src": "3945:71:68" + }, + { + "assignments": [ + 6328 + ], + "declarations": [ + { + "constant": false, + "id": 6328, + "mutability": "mutable", + "name": "totalReceived", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6391, + "src": "4027:21:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4027:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6337, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6335, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6182, + "src": "4077:14:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6331, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4059:4:68", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentSplitter_$6452", + "typeString": "contract PaymentSplitter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentSplitter_$6452", + "typeString": "contract PaymentSplitter" + } + ], + "id": 6330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4051:7:68", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6329, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4051:7:68", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 6332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4051:13:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 6333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4051:21:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "4051:25:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4051:41:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4027:65:68" + }, + { + "assignments": [ + 6339 + ], + "declarations": [ + { + "constant": false, + "id": 6339, + "mutability": "mutable", + "name": "payment", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6391, + "src": "4102:15:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4102:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6354, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6350, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "4178:9:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6352, + "indexExpression": { + "argumentTypes": null, + "id": 6351, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "4188:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4178:18:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6347, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6180, + "src": "4160:12:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6342, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "4138:7:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6344, + "indexExpression": { + "argumentTypes": null, + "id": 6343, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "4146:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4138:16:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6340, + "name": "totalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6328, + "src": "4120:13:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2334, + "src": "4120:17:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4120:35:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2351, + "src": "4120:39:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4120:53:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4120:57:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4120:77:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4102:95:68" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6356, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "4216:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4227:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4216:12:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a206163636f756e74206973206e6f7420647565207061796d656e74", + "id": 6359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4230:45:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57f87f0ebf27afe0d68884e28202f547fd6c4ce1b7243f1356690df65e0fa2e4", + "typeString": "literal_string \"PaymentSplitter: account is not due payment\"" + }, + "value": "PaymentSplitter: account is not due payment" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_57f87f0ebf27afe0d68884e28202f547fd6c4ce1b7243f1356690df65e0fa2e4", + "typeString": "literal_string \"PaymentSplitter: account is not due payment\"" + } + ], + "id": 6355, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4208:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4208:68:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6361, + "nodeType": "ExpressionStatement", + "src": "4208:68:68" + }, + { + "expression": { + "argumentTypes": null, + "id": 6371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6362, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "4287:9:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6364, + "indexExpression": { + "argumentTypes": null, + "id": 6363, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "4297:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4287:18:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6369, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "4331:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6365, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "4308:9:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6367, + "indexExpression": { + "argumentTypes": null, + "id": 6366, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "4318:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4308:18:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "4308:22:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4308:31:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4287:52:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6372, + "nodeType": "ExpressionStatement", + "src": "4287:52:68" + }, + { + "expression": { + "argumentTypes": null, + "id": 6378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6373, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6182, + "src": "4349:14:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6376, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "4385:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6374, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6182, + "src": "4366:14:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "4366:18:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4366:27:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4349:44:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6379, + "nodeType": "ExpressionStatement", + "src": "4349:44:68" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6383, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "4421:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6380, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "4404:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 6382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4404:16:68", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4404:25:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6385, + "nodeType": "ExpressionStatement", + "src": "4404:25:68" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6387, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6315, + "src": "4460:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 6388, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "4469:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6386, + "name": "PaymentReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6172, + "src": "4444:15:68", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4444:33:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6390, + "nodeType": "EmitStatement", + "src": "4439:38:68" + } + ] + }, + "documentation": { + "id": 6313, + "nodeType": "StructuredDocumentation", + "src": "3690:183:68", + "text": " @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the\n total shares and their previous withdrawals." + }, + "functionSelector": "19165587", + "id": 6392, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6315, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6392, + "src": "3895:23:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3895:15:68", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3894:25:68" + }, + "returnParameters": { + "id": 6317, + "nodeType": "ParameterList", + "parameters": [], + "src": "3935:0:68" + }, + "scope": 6452, + "src": "3878:606:68", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6450, + "nodeType": "Block", + "src": "4730:406:68", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6401, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "4748:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 6404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4767:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4759:7:68", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4759:7:68", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 6405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:10:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4748:21:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a206163636f756e7420697320746865207a65726f2061646472657373", + "id": 6407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4771:46:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_22db6c622fd62a15ab5fca8fc78156905c4f1b5914d7d1db97b192b87e8c816b", + "typeString": "literal_string \"PaymentSplitter: account is the zero address\"" + }, + "value": "PaymentSplitter: account is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_22db6c622fd62a15ab5fca8fc78156905c4f1b5914d7d1db97b192b87e8c816b", + "typeString": "literal_string \"PaymentSplitter: account is the zero address\"" + } + ], + "id": 6400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4740:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4740:78:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6409, + "nodeType": "ExpressionStatement", + "src": "4740:78:68" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6411, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6397, + "src": "4836:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4846:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4836:11:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a20736861726573206172652030", + "id": 6414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4849:31:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f9c1be4d5245e2b1590d7367c9c09f1ac5365954d05fed4172915681bdc80ed4", + "typeString": "literal_string \"PaymentSplitter: shares are 0\"" + }, + "value": "PaymentSplitter: shares are 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f9c1be4d5245e2b1590d7367c9c09f1ac5365954d05fed4172915681bdc80ed4", + "typeString": "literal_string \"PaymentSplitter: shares are 0\"" + } + ], + "id": 6410, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4828:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4828:53:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6416, + "nodeType": "ExpressionStatement", + "src": "4828:53:68" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6418, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "4899:7:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6420, + "indexExpression": { + "argumentTypes": null, + "id": 6419, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "4907:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4899:16:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4919:1:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4899:21:68", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5061796d656e7453706c69747465723a206163636f756e7420616c72656164792068617320736861726573", + "id": 6423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4922:45:68", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_df40dd957dfb1d655a61a3d20a7083773a63031454719eb1eb83074b56cf5635", + "typeString": "literal_string \"PaymentSplitter: account already has shares\"" + }, + "value": "PaymentSplitter: account already has shares" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_df40dd957dfb1d655a61a3d20a7083773a63031454719eb1eb83074b56cf5635", + "typeString": "literal_string \"PaymentSplitter: account already has shares\"" + } + ], + "id": 6417, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4891:7:68", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4891:77:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6425, + "nodeType": "ExpressionStatement", + "src": "4891:77:68" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6429, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "4992:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 6426, + "name": "_payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6193, + "src": "4979:7:68", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 6428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4979:12:68", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4979:21:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6431, + "nodeType": "ExpressionStatement", + "src": "4979:21:68" + }, + { + "expression": { + "argumentTypes": null, + "id": 6436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6432, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "5010:7:68", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 6434, + "indexExpression": { + "argumentTypes": null, + "id": 6433, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "5018:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5010:16:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6435, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6397, + "src": "5029:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5010:26:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6437, + "nodeType": "ExpressionStatement", + "src": "5010:26:68" + }, + { + "expression": { + "argumentTypes": null, + "id": 6443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6438, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6180, + "src": "5046:12:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6441, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6397, + "src": "5078:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6439, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6180, + "src": "5061:12:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "5061:16:68", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5061:25:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5046:40:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6444, + "nodeType": "ExpressionStatement", + "src": "5046:40:68" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6446, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6395, + "src": "5112:7:68", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6447, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6397, + "src": "5121:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6445, + "name": "PayeeAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6166, + "src": "5101:10:68", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5101:28:68", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6449, + "nodeType": "EmitStatement", + "src": "5096:33:68" + } + ] + }, + "documentation": { + "id": 6393, + "nodeType": "StructuredDocumentation", + "src": "4490:174:68", + "text": " @dev Add a new payee to the contract.\n @param account The address of the payee to add.\n @param shares_ The number of shares owned by the payee." + }, + "id": 6451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPayee", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6395, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6451, + "src": "4688:15:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4688:7:68", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6397, + "mutability": "mutable", + "name": "shares_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6451, + "src": "4705:15:68", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4705:7:68", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4687:34:68" + }, + "returnParameters": { + "id": 6399, + "nodeType": "ParameterList", + "parameters": [], + "src": "4730:0:68" + }, + "scope": 6452, + "src": "4669:467:68", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 6453, + "src": "942:4196:68" + } + ], + "src": "33:5106:68" + }, + "bytecode": "0x60806040526040516200114a3803806200114a833981810160405260408110156200002957600080fd5b81019080805160405193929190846401000000008211156200004a57600080fd5b838201915060208201858111156200006157600080fd5b82518660208202830111640100000000821117156200007f57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000b85780820151818401526020810190506200009b565b5050505090500160405260200180516040519392919084640100000000821115620000e257600080fd5b83820191506020820185811115620000f957600080fd5b82518660208202830111640100000000821117156200011757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200015057808201518184015260208101905062000133565b505050509050016040525050508051825114620001b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180620010ed6032913960400191505060405180910390fd5b600082511162000231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5061796d656e7453706c69747465723a206e6f2070617965657300000000000081525060200191505060405180910390fd5b60008090505b825181101562000289576200027b8382815181106200025257fe5b60200260200101518383815181106200026757fe5b60200260200101516200029260201b60201c565b808060010191505062000237565b505050620005ec565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200031a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180620010c1602c913960400191505060405180910390fd5b6000811162000391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5061796d656e7453706c69747465723a2073686172657320617265203000000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146200042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806200111f602b913960400191505060405180910390fd5b6004829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004ee816000546200056360201b620006f51790919060201c565b6000819055507f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600080828401905083811015620005e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610ac580620005fc6000396000f3fe6080604052600436106100595760003560e01c806319165587146100d75780633a98ef39146101285780638b83209b146101535780639852595c146101ce578063ce7c2ac214610233578063e33b7de314610298576100d2565b366100d2577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706100876102c3565b34604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b600080fd5b3480156100e357600080fd5b50610126600480360360208110156100fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102cb565b005b34801561013457600080fd5b5061013d61060f565b6040518082815260200191505060405180910390f35b34801561015f57600080fd5b5061018c6004803603602081101561017657600080fd5b8101908080359060200190929190505050610618565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101da57600080fd5b5061021d600480360360208110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610659565b6040518082815260200191505060405180910390f35b34801561023f57600080fd5b506102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a2565b6040518082815260200191505060405180910390f35b3480156102a457600080fd5b506102ad6106eb565b6040518082815260200191505060405180910390f35b600033905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610a1e6026913960400191505060405180910390fd5b60006103916001543073ffffffffffffffffffffffffffffffffffffffff16316106f590919063ffffffff16565b9050600061044c600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461043e600054610430600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761077d90919063ffffffff16565b61080390919063ffffffff16565b61084d90919063ffffffff16565b905060008114156104a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180610a44602b913960400191505060405180910390fd5b6104fa81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106f590919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610552816001546106f590919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561059e573d6000803e3d6000fd5b507fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60008054905090565b60006004828154811061062757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600154905090565b600080828401905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561079057600090506107fd565b60008284029050828482816107a157fe5b04146107f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a6f6021913960400191505060405180910390fd5b809150505b92915050565b600061084583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610897565b905092915050565b600061088f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061095d565b905092915050565b60008083118290610943576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109085780820151818401526020810190506108ed565b50505050905090810190601f1680156109355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161094f57fe5b049050809150509392505050565b6000838311158290610a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109cf5780820151818401526020810190506109b4565b50505050905090810190601f1680156109fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe5061796d656e7453706c69747465723a206163636f756e7420686173206e6f207368617265735061796d656e7453706c69747465723a206163636f756e74206973206e6f7420647565207061796d656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d0aa15ea7df702691b3847af8af1eadf202e6cdb43a8c45b7ddc6e2351ea806264736f6c634300060a00335061796d656e7453706c69747465723a206163636f756e7420697320746865207a65726f20616464726573735061796d656e7453706c69747465723a2070617965657320616e6420736861726573206c656e677468206d69736d617463685061796d656e7453706c69747465723a206163636f756e7420616c72656164792068617320736861726573", + "deployedBytecode": "0x6080604052600436106100595760003560e01c806319165587146100d75780633a98ef39146101285780638b83209b146101535780639852595c146101ce578063ce7c2ac214610233578063e33b7de314610298576100d2565b366100d2577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706100876102c3565b34604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b600080fd5b3480156100e357600080fd5b50610126600480360360208110156100fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102cb565b005b34801561013457600080fd5b5061013d61060f565b6040518082815260200191505060405180910390f35b34801561015f57600080fd5b5061018c6004803603602081101561017657600080fd5b8101908080359060200190929190505050610618565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101da57600080fd5b5061021d600480360360208110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610659565b6040518082815260200191505060405180910390f35b34801561023f57600080fd5b506102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a2565b6040518082815260200191505060405180910390f35b3480156102a457600080fd5b506102ad6106eb565b6040518082815260200191505060405180910390f35b600033905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610a1e6026913960400191505060405180910390fd5b60006103916001543073ffffffffffffffffffffffffffffffffffffffff16316106f590919063ffffffff16565b9050600061044c600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461043e600054610430600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761077d90919063ffffffff16565b61080390919063ffffffff16565b61084d90919063ffffffff16565b905060008114156104a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180610a44602b913960400191505060405180910390fd5b6104fa81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106f590919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610552816001546106f590919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561059e573d6000803e3d6000fd5b507fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60008054905090565b60006004828154811061062757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600154905090565b600080828401905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561079057600090506107fd565b60008284029050828482816107a157fe5b04146107f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610a6f6021913960400191505060405180910390fd5b809150505b92915050565b600061084583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610897565b905092915050565b600061088f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061095d565b905092915050565b60008083118290610943576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109085780820151818401526020810190506108ed565b50505050905090810190601f1680156109355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161094f57fe5b049050809150509392505050565b6000838311158290610a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109cf5780820151818401526020810190506109b4565b50505050905090810190601f1680156109fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe5061796d656e7453706c69747465723a206163636f756e7420686173206e6f207368617265735061796d656e7453706c69747465723a206163636f756e74206973206e6f7420647565207061796d656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d0aa15ea7df702691b3847af8af1eadf202e6cdb43a8c45b7ddc6e2351ea806264736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsale.json new file mode 100644 index 0000000..dbc47e1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsale.json @@ -0,0 +1,1872 @@ +{ + "fileName": "PostDeliveryCrowdsale.sol", + "contractName": "PostDeliveryCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../validation/TimedCrowdsale.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../ownership/Secondary.sol\";\nimport \"../../token/ERC20/IERC20.sol\";\n\n/**\n * @title PostDeliveryCrowdsale\n * @dev Crowdsale that locks tokens from withdrawal until it ends.\n */\ncontract PostDeliveryCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n __unstable__TokenVault private _vault;\n\n constructor() public {\n _vault = new __unstable__TokenVault();\n }\n\n /**\n * @dev Withdraw tokens only after crowdsale ends.\n * @param beneficiary Whose tokens will be withdrawn.\n */\n function withdrawTokens(address beneficiary) public {\n require(hasClosed(), \"PostDeliveryCrowdsale: not closed\");\n uint256 amount = _balances[beneficiary];\n require(amount > 0, \"PostDeliveryCrowdsale: beneficiary is not due any tokens\");\n\n _balances[beneficiary] = 0;\n _vault.transfer(token(), beneficiary, amount);\n }\n\n /**\n * @return the balance of an account.\n */\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev Overrides parent by storing due balances, and delivering tokens to the vault instead of the end user. This\n * ensures that the tokens will be available by the time they are withdrawn (which may not be the case if\n * `_deliverTokens` was called later).\n * @param beneficiary Token purchaser\n * @param tokenAmount Amount of tokens purchased\n */\n function _processPurchase(address beneficiary, uint256 tokenAmount) internal {\n _balances[beneficiary] = _balances[beneficiary].add(tokenAmount);\n _deliverTokens(address(_vault), tokenAmount);\n }\n}\n\n/**\n * @title __unstable__TokenVault\n * @dev Similar to an Escrow for tokens, this contract allows its primary account to spend its tokens as it sees fit.\n * This contract is an internal helper for PostDeliveryCrowdsale, and should not be used outside of this context.\n */\n// solhint-disable-next-line contract-name-camelcase\ncontract __unstable__TokenVault is Secondary {\n function transfer(IERC20 token, address to, uint256 amount) public onlyPrimary {\n token.transfer(to, amount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "withdrawTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "exportedSymbols": { + "PostDeliveryCrowdsale": [ + 2285 + ], + "__unstable__TokenVault": [ + 2307 + ] + }, + "id": 2308, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2181, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "absolutePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 2182, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 3088, + "src": "25:42:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2183, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 5300, + "src": "68:33:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ownership/Secondary.sol", + "file": "../../ownership/Secondary.sol", + "id": 2184, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 8780, + "src": "102:39:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2185, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 10217, + "src": "142:38:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2186, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3087, + "src": "323:14:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$3087", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 2187, + "nodeType": "InheritanceSpecifier", + "src": "323:14:15" + } + ], + "contractDependencies": [ + 26, + 2119, + 2307, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title PostDeliveryCrowdsale\n@dev Crowdsale that locks tokens from withdrawal until it ends.", + "fullyImplemented": false, + "id": 2285, + "linearizedBaseContracts": [ + 2285, + 3087, + 2119, + 13820, + 26 + ], + "name": "PostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2190, + "libraryName": { + "contractScope": null, + "id": 2188, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "350:8:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "344:27:15", + "typeName": { + "id": 2189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "363:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2194, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 2285, + "src": "377:45:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 2193, + "keyType": { + "id": 2191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "385:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "377:27:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 2192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "396:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2196, + "name": "_vault", + "nodeType": "VariableDeclaration", + "scope": 2285, + "src": "428:37:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + }, + "typeName": { + "contractScope": null, + "id": 2195, + "name": "__unstable__TokenVault", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2307, + "src": "428:22:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2205, + "nodeType": "Block", + "src": "493:54:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2199, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "503:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "512:26:15", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$___unstable__TokenVault_$2307_$", + "typeString": "function () returns (contract __unstable__TokenVault)" + }, + "typeName": { + "contractScope": null, + "id": 2200, + "name": "__unstable__TokenVault", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2307, + "src": "516:22:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + } + }, + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "512:28:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "src": "503:37:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "id": 2204, + "nodeType": "ExpressionStatement", + "src": "503:37:15" + } + ] + }, + "documentation": null, + "id": 2206, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2197, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:2:15" + }, + "returnParameters": { + "id": 2198, + "nodeType": "ParameterList", + "parameters": [], + "src": "493:0:15" + }, + "scope": 2285, + "src": "472:75:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2245, + "nodeType": "Block", + "src": "734:304:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2212, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3040, + "src": "752:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:11:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "506f737444656c697665727943726f776473616c653a206e6f7420636c6f736564", + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "765:35:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c29c4315eb01a52160c465d0c4789a47ecbe40dd194bb953044920b39a1c2fca", + "typeString": "literal_string \"PostDeliveryCrowdsale: not closed\"" + }, + "value": "PostDeliveryCrowdsale: not closed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c29c4315eb01a52160c465d0c4789a47ecbe40dd194bb953044920b39a1c2fca", + "typeString": "literal_string \"PostDeliveryCrowdsale: not closed\"" + } + ], + "id": 2211, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "744:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "744:57:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2216, + "nodeType": "ExpressionStatement", + "src": "744:57:15" + }, + { + "assignments": [ + 2218 + ], + "declarations": [ + { + "constant": false, + "id": 2218, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2245, + "src": "811:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2217, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "811:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2222, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2219, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "828:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2221, + "indexExpression": { + "argumentTypes": null, + "id": 2220, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "838:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "828:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "811:39:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2224, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "868:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "877:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "868:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73", + "id": 2227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:58:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9112d2e87485a8eabe91fcfc4d0fe2dcc1c98cc1facbacbf7cca92659a7df8f0", + "typeString": "literal_string \"PostDeliveryCrowdsale: beneficiary is not due any tokens\"" + }, + "value": "PostDeliveryCrowdsale: beneficiary is not due any tokens" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9112d2e87485a8eabe91fcfc4d0fe2dcc1c98cc1facbacbf7cca92659a7df8f0", + "typeString": "literal_string \"PostDeliveryCrowdsale: beneficiary is not due any tokens\"" + } + ], + "id": 2223, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "860:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "860:79:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2229, + "nodeType": "ExpressionStatement", + "src": "860:79:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2230, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "950:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2232, + "indexExpression": { + "argumentTypes": null, + "id": 2231, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "960:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "950:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "975:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "950:26:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2235, + "nodeType": "ExpressionStatement", + "src": "950:26:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2239, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "1002:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$10216_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1002:7:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "id": 2241, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "1011:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2242, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "1024:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2236, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "986:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2306, + "src": "986:15:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256) external" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "986:45:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2244, + "nodeType": "ExpressionStatement", + "src": "986:45:15" + } + ] + }, + "documentation": "@dev Withdraw tokens only after crowdsale ends.\n@param beneficiary Whose tokens will be withdrawn.", + "id": 2246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2208, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2246, + "src": "706:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "705:21:15" + }, + "returnParameters": { + "id": 2210, + "nodeType": "ParameterList", + "parameters": [], + "src": "734:0:15" + }, + "scope": 2285, + "src": "682:356:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2257, + "nodeType": "Block", + "src": "1168:42:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2253, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "1185:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2255, + "indexExpression": { + "argumentTypes": null, + "id": 2254, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "1195:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1185:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2252, + "id": 2256, + "nodeType": "Return", + "src": "1178:25:15" + } + ] + }, + "documentation": "@return the balance of an account.", + "id": 2258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "1121:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1121:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1120:17:15" + }, + "returnParameters": { + "id": 2252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2251, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "1159:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1159:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1158:9:15" + }, + "scope": 2285, + "src": "1102:108:15", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2283, + "nodeType": "Block", + "src": "1676:135:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2265, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "1686:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2267, + "indexExpression": { + "argumentTypes": null, + "id": 2266, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "1696:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1686:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2272, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "1738:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2268, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "1711:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2270, + "indexExpression": { + "argumentTypes": null, + "id": 2269, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "1721:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1711:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5139, + "src": "1711:26:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1711:39:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1686:64:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2275, + "nodeType": "ExpressionStatement", + "src": "1686:64:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2278, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "1783:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + ], + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1775:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1775:15:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2280, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "1792:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2276, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "1760:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1760:44:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2282, + "nodeType": "ExpressionStatement", + "src": "1760:44:15" + } + ] + }, + "documentation": "@dev Overrides parent by storing due balances, and delivering tokens to the vault instead of the end user. This\nensures that the tokens will be available by the time they are withdrawn (which may not be the case if\n`_deliverTokens` was called later).\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 2284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2260, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2284, + "src": "1625:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1625:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2262, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 2284, + "src": "1646:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1646:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1624:42:15" + }, + "returnParameters": { + "id": 2264, + "nodeType": "ParameterList", + "parameters": [], + "src": "1676:0:15" + }, + "scope": 2285, + "src": "1599:212:15", + "stateMutability": "nonpayable", + "superFunction": 2086, + "visibility": "internal" + } + ], + "scope": 2308, + "src": "289:1524:15" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2286, + "name": "Secondary", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8779, + "src": "2176:9:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Secondary_$8779", + "typeString": "contract Secondary" + } + }, + "id": 2287, + "nodeType": "InheritanceSpecifier", + "src": "2176:9:15" + } + ], + "contractDependencies": [ + 26, + 8779 + ], + "contractKind": "contract", + "documentation": "@title __unstable__TokenVault\n@dev Similar to an Escrow for tokens, this contract allows its primary account to spend its tokens as it sees fit.\nThis contract is an internal helper for PostDeliveryCrowdsale, and should not be used outside of this context.", + "fullyImplemented": true, + "id": 2307, + "linearizedBaseContracts": [ + 2307, + 8779, + 26 + ], + "name": "__unstable__TokenVault", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2305, + "nodeType": "Block", + "src": "2271:43:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2301, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "2296:2:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2302, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2293, + "src": "2300:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2298, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2289, + "src": "2281:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10170, + "src": "2281:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2281:26:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2304, + "nodeType": "ExpressionStatement", + "src": "2281:26:15" + } + ] + }, + "documentation": null, + "id": 2306, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2296, + "modifierName": { + "argumentTypes": null, + "id": 2295, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "2259:11:15", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2259:11:15" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2289, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2306, + "src": "2210:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2288, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "2210:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2291, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2306, + "src": "2224:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2224:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2293, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2306, + "src": "2236:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2292, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2236:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2209:42:15" + }, + "returnParameters": { + "id": 2297, + "nodeType": "ParameterList", + "parameters": [], + "src": "2271:0:15" + }, + "scope": 2307, + "src": "2192:122:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2308, + "src": "2141:175:15" + } + ], + "src": "0:2317:15" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsaleImpl.json new file mode 100644 index 0000000..89a9499 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PostDeliveryCrowdsaleImpl.json @@ -0,0 +1,644 @@ +{ + "fileName": "PostDeliveryCrowdsaleImpl.sol", + "contractName": "PostDeliveryCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/distribution/PostDeliveryCrowdsale.sol\";\n\ncontract PostDeliveryCrowdsaleImpl is PostDeliveryCrowdsale {\n constructor (uint256 openingTime, uint256 closingTime, uint256 rate, address payable wallet, IERC20 token)\n public\n TimedCrowdsale(openingTime, closingTime)\n Crowdsale(rate, wallet, token)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/PostDeliveryCrowdsaleImpl.sol", + "sourceMap": "124:346:94:-;;;190:278;8:9:-1;5:2;;;30:1;27;20:12;5:2;190:278:94;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;190:278:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;335:11;348;379:4;385:6;393:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;512:28:15;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;512:28:15;503:6;;:37;;;;;;;;;;;;;;;;;;190:278:94;;;;;124:346;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "124:346:94:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;124:346:94;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;682:356:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;682:356:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;682:356:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1102:108:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1102:108:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1102:108:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1436:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;682:356:15:-;752:11;:9;:11::i;:::-;744:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;811:14;828:9;:22;838:11;828:22;;;;;;;;;;;;;;;;811:39;;877:1;868:6;:10;860:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:1;950:9;:22;960:11;950:22;;;;;;;;;;;;;;;:26;;;;986:6;;;;;;;;;;;:15;;;1002:7;:5;:7::i;:::-;1011:11;1024:6;986:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;986:45:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;986:45:15;;;;682:356;;:::o;1590:89:24:-;1634:7;1660:12;;1653:19;;1590:89;:::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;1102:108:15:-;1159:7;1185:9;:18;1195:7;1185:18;;;;;;;;;;;;;;;;1178:25;;1102:108;;;:::o;1436:89:24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;1599:212:15:-;1711:39;1738:11;1711:9;:22;1721:11;1711:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;1686:9;:22;1696:11;1686:22;;;;;;;;;;;;;;;:64;;;;1760:44;1783:6;;;;;;;;;;;1792:11;1760:14;:44::i;:::-;1599:212;;:::o;6964:145:13:-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;5057:376::-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "withdrawTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/PostDeliveryCrowdsaleImpl.sol", + "exportedSymbols": { + "PostDeliveryCrowdsaleImpl": [ + 7547 + ] + }, + "id": 7548, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7519, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:94" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 7520, + "nodeType": "ImportDirective", + "scope": 7548, + "sourceUnit": 10217, + "src": "25:35:94", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "file": "../crowdsale/distribution/PostDeliveryCrowdsale.sol", + "id": 7521, + "nodeType": "ImportDirective", + "scope": 7548, + "sourceUnit": 2308, + "src": "61:61:94", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7522, + "name": "PostDeliveryCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2285, + "src": "162:21:94", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PostDeliveryCrowdsale_$2285", + "typeString": "contract PostDeliveryCrowdsale" + } + }, + "id": 7523, + "nodeType": "InheritanceSpecifier", + "src": "162:21:94" + } + ], + "contractDependencies": [ + 26, + 2119, + 2285, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7547, + "linearizedBaseContracts": [ + 7547, + 2285, + 3087, + 2119, + 13820, + 26 + ], + "name": "PostDeliveryCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7545, + "nodeType": "Block", + "src": "404:64:94", + "statements": [] + }, + "documentation": null, + "id": 7546, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7536, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7525, + "src": "335:11:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7537, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "348:11:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7538, + "modifierName": { + "argumentTypes": null, + "id": 7535, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "320:14:94", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "320:40:94" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7540, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7529, + "src": "379:4:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7541, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7531, + "src": "385:6:94", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7542, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7533, + "src": "393:5:94", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 7543, + "modifierName": { + "argumentTypes": null, + "id": 7539, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "369:9:94", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "369:30:94" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7525, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 7546, + "src": "203:19:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "203:7:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7527, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 7546, + "src": "224:19:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "224:7:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7529, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 7546, + "src": "245:12:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "245:7:94", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7531, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7546, + "src": "259:22:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "259:15:94", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7533, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7546, + "src": "283:12:94", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 7532, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "283:6:94", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "202:94:94" + }, + "returnParameters": { + "id": 7544, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:0:94" + }, + "scope": 7547, + "src": "190:278:94", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7548, + "src": "124:346:94" + } + ], + "src": "0:471:94" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b9438038062001b94833981810160405260a08110156200003757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050848484848460016000806101000a81548160ff0219169083151502179055506000831162000106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200018e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018062001b6f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062001b4b6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505042821015620002fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062001ae16033913960400191505060405180910390fd5b81811162000357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018062001b146037913960400191505060405180910390fd5b816004819055508060058190555050506040516200037590620003de565b604051809103906000f08015801562000392573d6000803e3d6000fd5b50600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050620003ec565b61062080620014c183390190565b6110c580620003fc6000396000f3fe60806040526004361061009c5760003560e01c80634b6753bc116100645780634b6753bc146101b3578063521eb273146101de57806370a0823114610235578063b7a8807c1461029a578063ec8ac4d8146102c5578063fc0c546a146103095761009c565b80631515bc2b146100ae5780632c4e722e146100dd5780634042b66f1461010857806347535d7b1461013357806349df728c14610162575b6100ac6100a7610360565b610368565b005b3480156100ba57600080fd5b506100c36104f3565b604051808215151515815260200191505060405180910390f35b3480156100e957600080fd5b506100f26104ff565b6040518082815260200191505060405180910390f35b34801561011457600080fd5b5061011d610509565b6040518082815260200191505060405180910390f35b34801561013f57600080fd5b50610148610513565b604051808215151515815260200191505060405180910390f35b34801561016e57600080fd5b506101b16004803603602081101561018557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061052e565b005b3480156101bf57600080fd5b506101c861076d565b6040518082815260200191505060405180910390f35b3480156101ea57600080fd5b506101f3610777565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024157600080fd5b506102846004803603602081101561025857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a1565b6040518082815260200191505060405180910390f35b3480156102a657600080fd5b506102af6107ea565b6040518082815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610368565b005b34801561031557600080fd5b5061031e6107f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166103e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610412828261081d565b600061041d826108a5565b9050610434826003546108c390919063ffffffff16565b600381905550610444838261094b565b8273ffffffffffffffffffffffffffffffffffffffff16610463610360565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36104c28383610a10565b6104ca610a14565b6104d48383610a7f565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600354905090565b6000600454421015801561052957506005544211155b905090565b6105366104f3565b61058b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110466021913960400191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610628576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610fc36038913960400191505060405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc86106b36107f4565b84846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561075157600080fd5b505af1158015610765573d6000803e3d6000fd5b505050505050565b6000600554905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600454905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610825610513565b610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6108a18282610a83565b5050565b60006108bc60025483610b8490919063ffffffff16565b9050919050565b600080828401905083811015610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61099d81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c390919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a0c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682610c0a565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610a7c573d6000803e3d6000fd5b50565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061101c602a913960400191505060405180910390fd5b6000811415610b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610b975760009050610c04565b6000828402905082848281610ba857fe5b0414610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610ffb6021913960400191505060405180910390fd5b809150505b92915050565b610c578282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5b9092919063ffffffff16565b5050565b610d27838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d2c565b505050565b610d4b8273ffffffffffffffffffffffffffffffffffffffff16610f77565b610dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610e0c5780518252602082019150602081019050602083039250610de9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e6e576040519150601f19603f3d011682016040523d82523d6000602084013e610e73565b606091505b509150915081610eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610f7157808060200190516020811015610f0a57600080fd5b8101908080519060200190929190505050610f70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611067602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610fb957506000801b8214155b9250505091905056fe506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373506f737444656c697665727943726f776473616c653a206e6f7420636c6f7365645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820350bbe7b0fbb468efff4ca573f81b16fb58af176e4c03398269006609a85dec564736f6c63430005110032608060405260006100146100bf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1506100c7565b600033905090565b61054a806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632348238c14610046578063beabacc81461008a578063c6dbdf61146100f8575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610142565b005b6100f6600480360360608110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061031a565b005b61010061048e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166101826104b7565b73ffffffffffffffffffffffffffffffffffffffff16146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806104c0602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661035a6104b7565b73ffffffffffffffffffffffffffffffffffffffff16146103c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b505050506040513d602081101561047757600080fd5b810190808051906020019092919050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003390509056fe5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74a265627a7a723158200814f9815547e5df2957c23308b9b337c731c16ad59cdfa3683e348e8f4b50fa64736f6c6343000511003254696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d6554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d6543726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x60806040526004361061009c5760003560e01c80634b6753bc116100645780634b6753bc146101b3578063521eb273146101de57806370a0823114610235578063b7a8807c1461029a578063ec8ac4d8146102c5578063fc0c546a146103095761009c565b80631515bc2b146100ae5780632c4e722e146100dd5780634042b66f1461010857806347535d7b1461013357806349df728c14610162575b6100ac6100a7610360565b610368565b005b3480156100ba57600080fd5b506100c36104f3565b604051808215151515815260200191505060405180910390f35b3480156100e957600080fd5b506100f26104ff565b6040518082815260200191505060405180910390f35b34801561011457600080fd5b5061011d610509565b6040518082815260200191505060405180910390f35b34801561013f57600080fd5b50610148610513565b604051808215151515815260200191505060405180910390f35b34801561016e57600080fd5b506101b16004803603602081101561018557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061052e565b005b3480156101bf57600080fd5b506101c861076d565b6040518082815260200191505060405180910390f35b3480156101ea57600080fd5b506101f3610777565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024157600080fd5b506102846004803603602081101561025857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a1565b6040518082815260200191505060405180910390f35b3480156102a657600080fd5b506102af6107ea565b6040518082815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610368565b005b34801561031557600080fd5b5061031e6107f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166103e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000349050610412828261081d565b600061041d826108a5565b9050610434826003546108c390919063ffffffff16565b600381905550610444838261094b565b8273ffffffffffffffffffffffffffffffffffffffff16610463610360565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36104c28383610a10565b6104ca610a14565b6104d48383610a7f565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600354905090565b6000600454421015801561052957506005544211155b905090565b6105366104f3565b61058b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110466021913960400191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610628576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610fc36038913960400191505060405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc86106b36107f4565b84846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561075157600080fd5b505af1158015610765573d6000803e3d6000fd5b505050505050565b6000600554905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600454905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610825610513565b610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6108a18282610a83565b5050565b60006108bc60025483610b8490919063ffffffff16565b9050919050565b600080828401905083811015610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61099d81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c390919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a0c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682610c0a565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610a7c573d6000803e3d6000fd5b50565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061101c602a913960400191505060405180910390fd5b6000811415610b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610b975760009050610c04565b6000828402905082848281610ba857fe5b0414610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610ffb6021913960400191505060405180910390fd5b809150505b92915050565b610c578282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5b9092919063ffffffff16565b5050565b610d27838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d2c565b505050565b610d4b8273ffffffffffffffffffffffffffffffffffffffff16610f77565b610dbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610e0c5780518252602082019150602081019050602083039250610de9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e6e576040519150601f19603f3d011682016040523d82523d6000602084013e610e73565b606091505b509150915081610eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610f7157808060200190516020811015610f0a57600080fd5b8101908080519060200190929190505050610f70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611067602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610fb957506000801b8214155b9250505091905056fe506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373506f737444656c697665727943726f776473616c653a206e6f7420636c6f7365645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820350bbe7b0fbb468efff4ca573f81b16fb58af176e4c03398269006609a85dec564736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PullPayment.json b/node_modules/@openzeppelin/contracts/build/contracts/PullPayment.json new file mode 100644 index 0000000..a6a337f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PullPayment.json @@ -0,0 +1,767 @@ +{ + "fileName": "PullPayment.sol", + "contractName": "PullPayment", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.2;\n\nimport \"./escrow/Escrow.sol\";\n\n/**\n * @dev Simple implementation of a\n * https://consensys.github.io/smart-contract-best-practices/recommendations/#favor-pull-over-push-for-external-calls[pull-payment]\n * strategy, where the paying contract doesn't interact directly with the\n * receiver account, which must withdraw its payments itself.\n *\n * Pull-payments are often considered the best practice when it comes to sending\n * Ether, security-wise. It prevents recipients from blocking execution, and\n * eliminates reentrancy concerns.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n *\n * To use, derive from the `PullPayment` contract, and use {_asyncTransfer}\n * instead of Solidity's `transfer` function. Payees can query their due\n * payments with {payments}, and retrieve them with {withdrawPayments}.\n */\ncontract PullPayment {\n Escrow private _escrow;\n\n constructor () internal {\n _escrow = new Escrow();\n }\n\n /**\n * @dev Withdraw accumulated payments, forwarding all gas to the recipient.\n *\n * Note that _any_ account can call this function, not just the `payee`.\n * This means that contracts unaware of the `PullPayment` protocol can still\n * receive funds this way, by having a separate account call\n * {withdrawPayments}.\n *\n * WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities.\n * Make sure you trust the recipient, or are either following the\n * checks-effects-interactions pattern or using {ReentrancyGuard}.\n *\n * @param payee Whose payments will be withdrawn.\n */\n function withdrawPayments(address payable payee) public virtual {\n _escrow.withdraw(payee);\n }\n\n /**\n * @dev Returns the payments owed to an address.\n * @param dest The creditor's address.\n */\n function payments(address dest) public view returns (uint256) {\n return _escrow.depositsOf(dest);\n }\n\n /**\n * @dev Called by the payer to store the sent amount as credit to be pulled.\n * Funds sent in this way are stored in an intermediate {Escrow} contract, so\n * there is no danger of them being spent before withdrawal.\n *\n * @param dest The destination address of the funds.\n * @param amount The amount to transfer.\n */\n function _asyncTransfer(address dest, uint256 amount) internal virtual {\n _escrow.deposit{ value: amount }(dest);\n }\n}\n", + "sourcePath": "contracts/payment/PullPayment.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dest", + "type": "address" + } + ], + "name": "payments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdrawPayments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/payment/PullPayment.sol", + "exportedSymbols": { + "PullPayment": [ + 6513 + ] + }, + "id": 6514, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6454, + "literals": [ + "solidity", + "^", + "0.6", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "33:23:69" + }, + { + "absolutePath": "contracts/payment/escrow/Escrow.sol", + "file": "./escrow/Escrow.sol", + "id": 6455, + "nodeType": "ImportDirective", + "scope": 6514, + "sourceUnit": 6654, + "src": "58:29:69", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [ + 6653 + ], + "contractKind": "contract", + "documentation": { + "id": 6456, + "nodeType": "StructuredDocumentation", + "src": "89:949:69", + "text": " @dev Simple implementation of a\n https://consensys.github.io/smart-contract-best-practices/recommendations/#favor-pull-over-push-for-external-calls[pull-payment]\n strategy, where the paying contract doesn't interact directly with the\n receiver account, which must withdraw its payments itself.\n Pull-payments are often considered the best practice when it comes to sending\n Ether, security-wise. It prevents recipients from blocking execution, and\n eliminates reentrancy concerns.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n To use, derive from the `PullPayment` contract, and use {_asyncTransfer}\n instead of Solidity's `transfer` function. Payees can query their due\n payments with {payments}, and retrieve them with {withdrawPayments}." + }, + "fullyImplemented": true, + "id": 6513, + "linearizedBaseContracts": [ + 6513 + ], + "name": "PullPayment", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 6458, + "mutability": "mutable", + "name": "_escrow", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6513, + "src": "1066:22:69", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + }, + "typeName": { + "contractScope": null, + "id": 6457, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6653, + "src": "1066:6:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 6467, + "nodeType": "Block", + "src": "1119:39:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6461, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6458, + "src": "1129:7:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1139:10:69", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Escrow_$6653_$", + "typeString": "function () returns (contract Escrow)" + }, + "typeName": { + "contractScope": null, + "id": 6462, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6653, + "src": "1143:6:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + } + }, + "id": 6464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1139:12:69", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "src": "1129:22:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "id": 6466, + "nodeType": "ExpressionStatement", + "src": "1129:22:69" + } + ] + }, + "documentation": null, + "id": 6468, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6459, + "nodeType": "ParameterList", + "parameters": [], + "src": "1107:2:69" + }, + "returnParameters": { + "id": 6460, + "nodeType": "ParameterList", + "parameters": [], + "src": "1119:0:69" + }, + "scope": 6513, + "src": "1095:63:69", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6480, + "nodeType": "Block", + "src": "1871:40:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6477, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6471, + "src": "1898:5:69", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 6474, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6458, + "src": "1881:7:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "id": 6476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 6652, + "src": "1881:16:69", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable) external" + } + }, + "id": 6478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1881:23:69", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6479, + "nodeType": "ExpressionStatement", + "src": "1881:23:69" + } + ] + }, + "documentation": { + "id": 6469, + "nodeType": "StructuredDocumentation", + "src": "1164:638:69", + "text": " @dev Withdraw accumulated payments, forwarding all gas to the recipient.\n Note that _any_ account can call this function, not just the `payee`.\n This means that contracts unaware of the `PullPayment` protocol can still\n receive funds this way, by having a separate account call\n {withdrawPayments}.\n WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities.\n Make sure you trust the recipient, or are either following the\n checks-effects-interactions pattern or using {ReentrancyGuard}.\n @param payee Whose payments will be withdrawn." + }, + "functionSelector": "31b3eb94", + "id": 6481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawPayments", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6471, + "mutability": "mutable", + "name": "payee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6481, + "src": "1833:21:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1833:15:69", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1832:23:69" + }, + "returnParameters": { + "id": 6473, + "nodeType": "ParameterList", + "parameters": [], + "src": "1871:0:69" + }, + "scope": 6513, + "src": "1807:104:69", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6494, + "nodeType": "Block", + "src": "2091:48:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6491, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6484, + "src": "2127:4:69", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 6489, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6458, + "src": "2108:7:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "id": 6490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "depositsOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 6590, + "src": "2108:18:69", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 6492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2108:24:69", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6488, + "id": 6493, + "nodeType": "Return", + "src": "2101:31:69" + } + ] + }, + "documentation": { + "id": 6482, + "nodeType": "StructuredDocumentation", + "src": "1917:107:69", + "text": " @dev Returns the payments owed to an address.\n @param dest The creditor's address." + }, + "functionSelector": "e2982c21", + "id": 6495, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payments", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6484, + "mutability": "mutable", + "name": "dest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6495, + "src": "2047:12:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2047:7:69", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2046:14:69" + }, + "returnParameters": { + "id": 6488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6495, + "src": "2082:7:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2082:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2081:9:69" + }, + "scope": 6513, + "src": "2029:110:69", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6511, + "nodeType": "Block", + "src": "2569:55:69", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6508, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6498, + "src": "2612:4:69", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6503, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6458, + "src": "2579:7:69", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$6653", + "typeString": "contract Escrow" + } + }, + "id": 6505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 6620, + "src": "2579:15:69", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$", + "typeString": "function (address) payable external" + } + }, + "id": 6507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 6506, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6500, + "src": "2603:6:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2579:32:69", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$value", + "typeString": "function (address) payable external" + } + }, + "id": 6509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2579:38:69", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6510, + "nodeType": "ExpressionStatement", + "src": "2579:38:69" + } + ] + }, + "documentation": { + "id": 6496, + "nodeType": "StructuredDocumentation", + "src": "2145:348:69", + "text": " @dev Called by the payer to store the sent amount as credit to be pulled.\n Funds sent in this way are stored in an intermediate {Escrow} contract, so\n there is no danger of them being spent before withdrawal.\n @param dest The destination address of the funds.\n @param amount The amount to transfer." + }, + "id": 6512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_asyncTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6498, + "mutability": "mutable", + "name": "dest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6512, + "src": "2522:12:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2522:7:69", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6500, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6512, + "src": "2536:14:69", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2536:7:69", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2521:30:69" + }, + "returnParameters": { + "id": 6502, + "nodeType": "ParameterList", + "parameters": [], + "src": "2569:0:69" + }, + "scope": 6513, + "src": "2498:126:69", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 6514, + "src": "1039:1587:69" + } + ], + "src": "33:2594:69" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/PullPaymentMock.json b/node_modules/@openzeppelin/contracts/build/contracts/PullPaymentMock.json new file mode 100644 index 0000000..a0d3db6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/PullPaymentMock.json @@ -0,0 +1,350 @@ +{ + "fileName": "PullPaymentMock.sol", + "contractName": "PullPaymentMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../payment/PullPayment.sol\";\n\n// mock class using PullPayment\ncontract PullPaymentMock is PullPayment {\n constructor () public payable { }\n\n // test helper function to call asyncTransfer\n function callTransfer(address dest, uint256 amount) public {\n _asyncTransfer(dest, amount);\n }\n}\n", + "sourcePath": "contracts/mocks/PullPaymentMock.sol", + "sourceMap": "128:241:56:-:0;;;1139:12:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1129:7;;:22;;;;;;;;;;;;;;;;;;128:241:56;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "128:241:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1807:104:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;263::56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2029:110:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1807:104;1881:7;;;;;;;;;;;:16;;;1898:5;1881:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1807:104;:::o;263::56:-;332:28;347:4;353:6;332:14;:28::i;:::-;263:104;;:::o;2029:110:65:-;2082:7;2108;;;;;;;;;;;:18;;;2127:4;2108:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2101:31;;2029:110;;;:::o;2498:126::-;2579:7;;;;;;;;;;;:15;;;2603:6;2612:4;2579:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2498:126;;:::o", + "abi": [ + { + "inputs": [], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dest", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "callTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dest", + "type": "address" + } + ], + "name": "payments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdrawPayments", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/PullPaymentMock.sol", + "exportedSymbols": { + "PullPaymentMock": [ + 5140 + ] + }, + "id": 5141, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5119, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:56" + }, + { + "absolutePath": "contracts/payment/PullPayment.sol", + "file": "../payment/PullPayment.sol", + "id": 5120, + "nodeType": "ImportDirective", + "scope": 5141, + "sourceUnit": 6286, + "src": "58:36:56", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5121, + "name": "PullPayment", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6285, + "src": "156:11:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PullPayment_$6285", + "typeString": "contract PullPayment" + } + }, + "id": 5122, + "nodeType": "InheritanceSpecifier", + "src": "156:11:56" + } + ], + "contractDependencies": [ + 6285 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5140, + "linearizedBaseContracts": [ + 5140, + 6285 + ], + "name": "PullPaymentMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5125, + "nodeType": "Block", + "src": "204:3:56", + "statements": [] + }, + "documentation": null, + "id": 5126, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5123, + "nodeType": "ParameterList", + "parameters": [], + "src": "186:2:56" + }, + "returnParameters": { + "id": 5124, + "nodeType": "ParameterList", + "parameters": [], + "src": "204:0:56" + }, + "scope": 5140, + "src": "174:33:56", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5138, + "nodeType": "Block", + "src": "322:45:56", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5134, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5128, + "src": "347:4:56", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5135, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5130, + "src": "353:6:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5133, + "name": "_asyncTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6284, + "src": "332:14:56", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "332:28:56", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5137, + "nodeType": "ExpressionStatement", + "src": "332:28:56" + } + ] + }, + "documentation": null, + "functionSelector": "d4440991", + "id": 5139, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5128, + "mutability": "mutable", + "name": "dest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5139, + "src": "285:12:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "285:7:56", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5130, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5139, + "src": "299:14:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "299:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "284:30:56" + }, + "returnParameters": { + "id": 5132, + "nodeType": "ParameterList", + "parameters": [], + "src": "322:0:56" + }, + "scope": 5140, + "src": "263:104:56", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5141, + "src": "128:241:56" + } + ], + "src": "33:337:56" + }, + "bytecode": "0x608060405260405161001090610071565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061007e565b610cee8061045b83390190565b6103ce8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331b3eb9414610046578063d44409911461008a578063e2982c21146100d8575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610130565b005b6100d6600480360360408110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101eb565b005b61011a600480360360208110156100ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101f9565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101d057600080fd5b505af11580156101e4573d6000803e3d6000fd5b5050505050565b6101f582826102db565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3a9db1a836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561029957600080fd5b505afa1580156102ad573d6000803e3d6000fd5b505050506040513d60208110156102c357600080fd5b81019080805190602001909291905050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182846040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b15801561037b57600080fd5b505af115801561038f573d6000803e3d6000fd5b5050505050505056fea2646970667358221220492ee82c2938bf051d6895af35f5e0a664cb947a9311b22c00fa7a16a36623e064736f6c63430006090033608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b610c13806100db6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a6146100ab5780638da5cb5b146100c2578063e3a9db1a14610119578063f2fde38b1461017e578063f340fa01146101cf575b600080fd5b34801561006657600080fd5b506100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610213565b005b3480156100b757600080fd5b506100c06103e0565b005b3480156100ce57600080fd5b506100d7610568565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012557600080fd5b506101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610591565b6040518082815260200191505060405180910390f35b34801561018a57600080fd5b506101cd600480360360208110156101a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105da565b005b610211600480360360208110156101e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e7565b005b61021b61099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061038e818373ffffffffffffffffffffffffffffffffffffffff166109a490919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b6103e861099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e261099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610b7e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6107ef61099c565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061090781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610af590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b600033905090565b803073ffffffffffffffffffffffffffffffffffffffff16311015610a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610a91576040519150601f19603f3d011682016040523d82523d6000602084013e610a96565b606091505b5050905080610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ba4603a913960400191505060405180910390fd5b505050565b600080828401905083811015610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564a26469706673582212202a191abe7c69e9f966902c91eff1d1797c58dc3351eecf9a24b736e0bc07e0fb64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806331b3eb9414610046578063d44409911461008a578063e2982c21146100d8575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610130565b005b6100d6600480360360408110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101eb565b005b61011a600480360360208110156100ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101f9565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101d057600080fd5b505af11580156101e4573d6000803e3d6000fd5b5050505050565b6101f582826102db565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3a9db1a836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561029957600080fd5b505afa1580156102ad573d6000803e3d6000fd5b505050506040513d60208110156102c357600080fd5b81019080805190602001909291905050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182846040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b15801561037b57600080fd5b505af115801561038f573d6000803e3d6000fd5b5050505050505056fea2646970667358221220492ee82c2938bf051d6895af35f5e0a664cb947a9311b22c00fa7a16a36623e064736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyAttack.json b/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyAttack.json new file mode 100644 index 0000000..11a92d1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyAttack.json @@ -0,0 +1,431 @@ +{ + "fileName": "ReentrancyAttack.sol", + "contractName": "ReentrancyAttack", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\ncontract ReentrancyAttack is Context {\n function callSender(bytes4 data) public {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success,) = _msgSender().call(abi.encodeWithSelector(data));\n require(success, \"ReentrancyAttack: failed call\");\n }\n}\n", + "sourcePath": "contracts/mocks/ReentrancyAttack.sol", + "sourceMap": "87:285:57:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "87:285:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;130:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;240:12;257;:10;:12::i;:::-;:17;;298:4;275:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;257:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;239:65;;;322:7;314:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;130:240;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "data", + "type": "bytes4" + } + ], + "name": "callSender", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ReentrancyAttack.sol", + "exportedSymbols": { + "ReentrancyAttack": [ + 5168 + ] + }, + "id": 5169, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5142, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:57" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 5143, + "nodeType": "ImportDirective", + "scope": 5169, + "sourceUnit": 27, + "src": "58:28:57", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5144, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "116:7:57", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5145, + "nodeType": "InheritanceSpecifier", + "src": "116:7:57" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5168, + "linearizedBaseContracts": [ + 5168, + 26 + ], + "name": "ReentrancyAttack", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5166, + "nodeType": "Block", + "src": "170:200:57", + "statements": [ + { + "assignments": [ + 5151, + null + ], + "declarations": [ + { + "constant": false, + "id": 5151, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5166, + "src": "240:12:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5150, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "240:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 5160, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5157, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5147, + "src": "298:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": null, + "id": 5155, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "275:3:57", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "275:22:57", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 5158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:28:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5152, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "257:10:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "257:12:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 5154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "257:17:57", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "257:47:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "239:65:57" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5162, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5151, + "src": "322:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5265656e7472616e637941747461636b3a206661696c65642063616c6c", + "id": 5163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "331:31:57", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cef7d31d1ab774e44434693d4d02c9435c97f3cf18a71b3acddb2d4efa78b651", + "typeString": "literal_string \"ReentrancyAttack: failed call\"" + }, + "value": "ReentrancyAttack: failed call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cef7d31d1ab774e44434693d4d02c9435c97f3cf18a71b3acddb2d4efa78b651", + "typeString": "literal_string \"ReentrancyAttack: failed call\"" + } + ], + "id": 5161, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "314:7:57", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "314:49:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5165, + "nodeType": "ExpressionStatement", + "src": "314:49:57" + } + ] + }, + "documentation": null, + "functionSelector": "0a2df1ed", + "id": 5167, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5147, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5167, + "src": "150:11:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5146, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "150:6:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "149:13:57" + }, + "returnParameters": { + "id": 5149, + "nodeType": "ParameterList", + "parameters": [], + "src": "170:0:57" + }, + "scope": 5168, + "src": "130:240:57", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5169, + "src": "87:285:57" + } + ], + "src": "33:340:57" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610254806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630a2df1ed14610030575b600080fd5b61007b6004803603602081101561004657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061007d565b005b6000610087610216565b73ffffffffffffffffffffffffffffffffffffffff1682604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106101345780518252602082019150602081019050602083039250610111565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610196576040519150601f19603f3d011682016040523d82523d6000602084013e61019b565b606091505b5050905080610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5265656e7472616e637941747461636b3a206661696c65642063616c6c00000081525060200191505060405180910390fd5b5050565b60003390509056fea2646970667358221220c257f5f8de3c5840446b55182322f4b2308e8a568c51df1e77a138756c835dcb64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80630a2df1ed14610030575b600080fd5b61007b6004803603602081101561004657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061007d565b005b6000610087610216565b73ffffffffffffffffffffffffffffffffffffffff1682604051602401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106101345780518252602082019150602081019050602083039250610111565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610196576040519150601f19603f3d011682016040523d82523d6000602084013e61019b565b606091505b5050905080610212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5265656e7472616e637941747461636b3a206661696c65642063616c6c00000081525060200191505060405180910390fd5b5050565b60003390509056fea2646970667358221220c257f5f8de3c5840446b55182322f4b2308e8a568c51df1e77a138756c835dcb64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyGuard.json b/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyGuard.json new file mode 100644 index 0000000..fbbef4d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyGuard.json @@ -0,0 +1,503 @@ +{ + "fileName": "ReentrancyGuard.sol", + "contractName": "ReentrancyGuard", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\ncontract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor () internal {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n", + "sourcePath": "contracts/utils/ReentrancyGuard.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [ + 14037 + ] + }, + "id": 14038, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 13999, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:111" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 14000, + "nodeType": "StructuredDocumentation", + "src": "58:750:111", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 14037, + "linearizedBaseContracts": [ + 14037 + ], + "name": "ReentrancyGuard", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 14003, + "mutability": "constant", + "name": "_NOT_ENTERED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14037, + "src": "1588:41:111", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1588:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31", + "id": 14002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1628:1:111", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 14006, + "mutability": "constant", + "name": "_ENTERED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14037, + "src": "1635:37:111", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1635:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "32", + "id": 14005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1671:1:111", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 14008, + "mutability": "mutable", + "name": "_status", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14037, + "src": "1679:23:111", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1679:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 14015, + "nodeType": "Block", + "src": "1733:39:111", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 14013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 14011, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14008, + "src": "1743:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 14012, + "name": "_NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14003, + "src": "1753:12:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1743:22:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14014, + "nodeType": "ExpressionStatement", + "src": "1743:22:111" + } + ] + }, + "documentation": null, + "id": 14016, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14009, + "nodeType": "ParameterList", + "parameters": [], + "src": "1721:2:111" + }, + "returnParameters": { + "id": 14010, + "nodeType": "ParameterList", + "parameters": [], + "src": "1733:0:111" + }, + "scope": 14037, + "src": "1709:63:111", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14035, + "nodeType": "Block", + "src": "2171:421:111", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14020, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14008, + "src": "2260:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 14021, + "name": "_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14006, + "src": "2271:8:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2260:19:111", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c", + "id": 14023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2281:33:111", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + }, + "value": "ReentrancyGuard: reentrant call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", + "typeString": "literal_string \"ReentrancyGuard: reentrant call\"" + } + ], + "id": 14019, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2252:7:111", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2252:63:111", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14025, + "nodeType": "ExpressionStatement", + "src": "2252:63:111" + }, + { + "expression": { + "argumentTypes": null, + "id": 14028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 14026, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14008, + "src": "2390:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 14027, + "name": "_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14006, + "src": "2400:8:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2390:18:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14029, + "nodeType": "ExpressionStatement", + "src": "2390:18:111" + }, + { + "id": 14030, + "nodeType": "PlaceholderStatement", + "src": "2419:1:111" + }, + { + "expression": { + "argumentTypes": null, + "id": 14033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 14031, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14008, + "src": "2563:7:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 14032, + "name": "_NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14003, + "src": "2573:12:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2563:22:111", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14034, + "nodeType": "ExpressionStatement", + "src": "2563:22:111" + } + ] + }, + "documentation": { + "id": 14017, + "nodeType": "StructuredDocumentation", + "src": "1778:364:111", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work." + }, + "id": 14036, + "name": "nonReentrant", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 14018, + "nodeType": "ParameterList", + "parameters": [], + "src": "2168:2:111" + }, + "src": "2147:445:111", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 14038, + "src": "809:1785:111" + } + ], + "src": "33:2562:111" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyMock.json b/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyMock.json new file mode 100644 index 0000000..dee642d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/ReentrancyMock.json @@ -0,0 +1,1600 @@ +{ + "fileName": "ReentrancyMock.sol", + "contractName": "ReentrancyMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/ReentrancyGuard.sol\";\nimport \"./ReentrancyAttack.sol\";\n\ncontract ReentrancyMock is ReentrancyGuard {\n uint256 public counter;\n\n constructor () public {\n counter = 0;\n }\n\n function callback() external nonReentrant {\n _count();\n }\n\n function countLocalRecursive(uint256 n) public nonReentrant {\n if (n > 0) {\n _count();\n countLocalRecursive(n - 1);\n }\n }\n\n function countThisRecursive(uint256 n) public nonReentrant {\n if (n > 0) {\n _count();\n // solhint-disable-next-line avoid-low-level-calls\n (bool success,) = address(this).call(abi.encodeWithSignature(\"countThisRecursive(uint256)\", n - 1));\n require(success, \"ReentrancyMock: failed call\");\n }\n }\n\n function countAndCall(ReentrancyAttack attacker) public nonReentrant {\n _count();\n bytes4 func = bytes4(keccak256(\"callback()\"));\n attacker.callSender(func);\n }\n\n function _count() private {\n counter += 1;\n }\n}\n", + "sourcePath": "contracts/mocks/ReentrancyMock.sol", + "sourceMap": "131:982:58:-:0;;;209:50;;;;;;;;;;1331:4:98;1317:11;;:18;;;;;;;;;;;;;;;;;;251:1:58;241:7;:11;;;;131:982;;;;;;", + "deployedSourceMap": "131:982:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;265:67;;;:::i;:::-;;180:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;504:356;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;338:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;866:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;265:67;1830:11:98;;;;;;;;;;;1822:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:5;1952:11;;:19;;;;;;;;;;;;;;;;;;317:8:58::1;:6;:8::i;:::-;2140:4:98::0;2126:11;;:18;;;;;;;;;;;;;;;;;;265:67:58:o;180:22::-;;;;:::o;504:356::-;1830:11:98;;;;;;;;;;;1822:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:5;1952:11;;:19;;;;;;;;;;;;;;;;;;581:1:58::1;577;:5;573:281;;;598:8;:6;:8::i;:::-;684:12;709:4;701:18;;779:1;775;:5;720:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;701:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;683:99;;;804:7;796:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;573:281;;2140:4:98::0;2126:11;;:18;;;;;;;;;;;;;;;;;;504:356:58;:::o;338:160::-;1830:11:98;;;;;;;;;;;1822:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:5;1952:11;;:19;;;;;;;;;;;;;;;;;;416:1:58::1;412;:5;408:84;;;433:8;:6;:8::i;:::-;455:26;479:1;475;:5;455:19;:26::i;:::-;408:84;2140:4:98::0;2126:11;;:18;;;;;;;;;;;;;;;;;;338:160:58;:::o;866:184::-;1830:11:98;;;;;;;;;;;1822:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:5;1952:11;;:19;;;;;;;;;;;;;;;;;;945:8:58::1;:6;:8::i;:::-;963:11;984:23;;;;;;;::::0;::::1;;;;;;;;;;;963:45;;1018:8;:19;;;1038:4;1018:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1982:1:98;2140:4:::0;2126:11;;:18;;;;;;;;;;;;;;;;;;866:184:58;:::o;1056:55::-;1103:1;1092:7;;:12;;;;;;;;;;;1056:55::o", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "callback", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ReentrancyAttack", + "name": "attacker", + "type": "address" + } + ], + "name": "countAndCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "countLocalRecursive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "n", + "type": "uint256" + } + ], + "name": "countThisRecursive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "counter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ReentrancyMock.sol", + "exportedSymbols": { + "ReentrancyMock": [ + 5287 + ] + }, + "id": 5288, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5170, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:58" + }, + { + "absolutePath": "contracts/utils/ReentrancyGuard.sol", + "file": "../utils/ReentrancyGuard.sol", + "id": 5171, + "nodeType": "ImportDirective", + "scope": 5288, + "sourceUnit": 12118, + "src": "58:38:58", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/mocks/ReentrancyAttack.sol", + "file": "./ReentrancyAttack.sol", + "id": 5172, + "nodeType": "ImportDirective", + "scope": 5288, + "sourceUnit": 5169, + "src": "97:32:58", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5173, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12117, + "src": "158:15:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$12117", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 5174, + "nodeType": "InheritanceSpecifier", + "src": "158:15:58" + } + ], + "contractDependencies": [ + 12117 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5287, + "linearizedBaseContracts": [ + 5287, + 12117 + ], + "name": "ReentrancyMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "61bc221a", + "id": 5176, + "mutability": "mutable", + "name": "counter", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5287, + "src": "180:22:58", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "180:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 5183, + "nodeType": "Block", + "src": "231:28:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5179, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5176, + "src": "241:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "251:1:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "241:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5182, + "nodeType": "ExpressionStatement", + "src": "241:11:58" + } + ] + }, + "documentation": null, + "id": 5184, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5177, + "nodeType": "ParameterList", + "parameters": [], + "src": "221:2:58" + }, + "returnParameters": { + "id": 5178, + "nodeType": "ParameterList", + "parameters": [], + "src": "231:0:58" + }, + "scope": 5287, + "src": "209:50:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5192, + "nodeType": "Block", + "src": "307:25:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5189, + "name": "_count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5286, + "src": "317:6:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "317:8:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5191, + "nodeType": "ExpressionStatement", + "src": "317:8:58" + } + ] + }, + "documentation": null, + "functionSelector": "083b2732", + "id": 5193, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5187, + "modifierName": { + "argumentTypes": null, + "id": 5186, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12116, + "src": "294:12:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "294:12:58" + } + ], + "name": "callback", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5185, + "nodeType": "ParameterList", + "parameters": [], + "src": "282:2:58" + }, + "returnParameters": { + "id": 5188, + "nodeType": "ParameterList", + "parameters": [], + "src": "307:0:58" + }, + "scope": 5287, + "src": "265:67:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5214, + "nodeType": "Block", + "src": "398:100:58", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5200, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "412:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "416:1:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "412:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5213, + "nodeType": "IfStatement", + "src": "408:84:58", + "trueBody": { + "id": 5212, + "nodeType": "Block", + "src": "419:73:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5203, + "name": "_count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5286, + "src": "433:6:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "433:8:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5205, + "nodeType": "ExpressionStatement", + "src": "433:8:58" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5207, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "475:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 5208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "479:1:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "475:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5206, + "name": "countLocalRecursive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5215, + "src": "455:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "455:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5211, + "nodeType": "ExpressionStatement", + "src": "455:26:58" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "96ffa690", + "id": 5215, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5198, + "modifierName": { + "argumentTypes": null, + "id": 5197, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12116, + "src": "385:12:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "385:12:58" + } + ], + "name": "countLocalRecursive", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5195, + "mutability": "mutable", + "name": "n", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5215, + "src": "367:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5194, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "367:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "366:11:58" + }, + "returnParameters": { + "id": 5199, + "nodeType": "ParameterList", + "parameters": [], + "src": "398:0:58" + }, + "scope": 5287, + "src": "338:160:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5251, + "nodeType": "Block", + "src": "563:297:58", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5222, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5217, + "src": "577:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "581:1:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "577:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5250, + "nodeType": "IfStatement", + "src": "573:281:58", + "trueBody": { + "id": 5249, + "nodeType": "Block", + "src": "584:270:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5225, + "name": "_count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5286, + "src": "598:6:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "598:8:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5227, + "nodeType": "ExpressionStatement", + "src": "598:8:58" + }, + { + "assignments": [ + 5229, + null + ], + "declarations": [ + { + "constant": false, + "id": 5229, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5249, + "src": "684:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5228, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "684:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 5243, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "636f756e74546869735265637572736976652875696e7432353629", + "id": 5237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "744:29:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c5344fa6b010fdd5e2cff6c41f85eb27e8b457f2d042f418209d56095018878", + "typeString": "literal_string \"countThisRecursive(uint256)\"" + }, + "value": "countThisRecursive(uint256)" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5238, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5217, + "src": "775:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 5239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "779:1:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "775:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8c5344fa6b010fdd5e2cff6c41f85eb27e8b457f2d042f418209d56095018878", + "typeString": "literal_string \"countThisRecursive(uint256)\"" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5235, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "720:3:58", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "720:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 5241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "720:61:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5232, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "709:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyMock_$5287", + "typeString": "contract ReentrancyMock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ReentrancyMock_$5287", + "typeString": "contract ReentrancyMock" + } + ], + "id": 5231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "701:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5230, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "701:7:58", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "701:13:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "701:18:58", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "701:81:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "683:99:58" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5245, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5229, + "src": "804:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5265656e7472616e63794d6f636b3a206661696c65642063616c6c", + "id": 5246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "813:29:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e7df6a41596369ff81d71c1a274a01b76010e7a5848023b008a2b13b15462a6", + "typeString": "literal_string \"ReentrancyMock: failed call\"" + }, + "value": "ReentrancyMock: failed call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6e7df6a41596369ff81d71c1a274a01b76010e7a5848023b008a2b13b15462a6", + "typeString": "literal_string \"ReentrancyMock: failed call\"" + } + ], + "id": 5244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "796:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "796:47:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5248, + "nodeType": "ExpressionStatement", + "src": "796:47:58" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "8c5344fa", + "id": 5252, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5220, + "modifierName": { + "argumentTypes": null, + "id": 5219, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12116, + "src": "550:12:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "550:12:58" + } + ], + "name": "countThisRecursive", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5217, + "mutability": "mutable", + "name": "n", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5252, + "src": "532:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "532:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "531:11:58" + }, + "returnParameters": { + "id": 5221, + "nodeType": "ParameterList", + "parameters": [], + "src": "563:0:58" + }, + "scope": 5287, + "src": "504:356:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5277, + "nodeType": "Block", + "src": "935:115:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5259, + "name": "_count", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5286, + "src": "945:6:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "945:8:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5261, + "nodeType": "ExpressionStatement", + "src": "945:8:58" + }, + { + "assignments": [ + 5263 + ], + "declarations": [ + { + "constant": false, + "id": 5263, + "mutability": "mutable", + "name": "func", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5277, + "src": "963:11:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5262, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "963:6:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5270, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "63616c6c6261636b2829", + "id": 5267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "994:12:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_083b2732f78169bfaad6b407fa338cc97d697ed69d3915a18239cc111d51a402", + "typeString": "literal_string \"callback()\"" + }, + "value": "callback()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_083b2732f78169bfaad6b407fa338cc97d697ed69d3915a18239cc111d51a402", + "typeString": "literal_string \"callback()\"" + } + ], + "id": 5266, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "984:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "984:23:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "977:6:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 5264, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "977:6:58", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "977:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "963:45:58" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5274, + "name": "func", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5263, + "src": "1038:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": null, + "id": 5271, + "name": "attacker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5254, + "src": "1018:8:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyAttack_$5168", + "typeString": "contract ReentrancyAttack" + } + }, + "id": 5273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "callSender", + "nodeType": "MemberAccess", + "referencedDeclaration": 5167, + "src": "1018:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4) external" + } + }, + "id": 5275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1018:25:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5276, + "nodeType": "ExpressionStatement", + "src": "1018:25:58" + } + ] + }, + "documentation": null, + "functionSelector": "b672ad8b", + "id": 5278, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5257, + "modifierName": { + "argumentTypes": null, + "id": 5256, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12116, + "src": "922:12:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "922:12:58" + } + ], + "name": "countAndCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5254, + "mutability": "mutable", + "name": "attacker", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5278, + "src": "888:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyAttack_$5168", + "typeString": "contract ReentrancyAttack" + }, + "typeName": { + "contractScope": null, + "id": 5253, + "name": "ReentrancyAttack", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5168, + "src": "888:16:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyAttack_$5168", + "typeString": "contract ReentrancyAttack" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "887:27:58" + }, + "returnParameters": { + "id": 5258, + "nodeType": "ParameterList", + "parameters": [], + "src": "935:0:58" + }, + "scope": 5287, + "src": "866:184:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5285, + "nodeType": "Block", + "src": "1082:29:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5281, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5176, + "src": "1092:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:1:58", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1092:12:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5284, + "nodeType": "ExpressionStatement", + "src": "1092:12:58" + } + ] + }, + "documentation": null, + "id": 5286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_count", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5279, + "nodeType": "ParameterList", + "parameters": [], + "src": "1071:2:58" + }, + "returnParameters": { + "id": 5280, + "nodeType": "ParameterList", + "parameters": [], + "src": "1082:0:58" + }, + "scope": 5287, + "src": "1056:55:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 5288, + "src": "131:982:58" + } + ], + "src": "33:1081:58" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060016000806101000a81548160ff0219169083151502179055506000600181905550610731806100426000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063083b27321461005c57806361bc221a146100665780638c5344fa1461008457806396ffa690146100b2578063b672ad8b146100e0575b600080fd5b610064610124565b005b61006e6101e3565b6040518082815260200191505060405180910390f35b6100b06004803603602081101561009a57600080fd5b81019080803590602001909291905050506101e9565b005b6100de600480360360208110156100c857600080fd5b810190808035906020019092919050505061046f565b005b610122600480360360208110156100f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610545565b005b6000809054906101000a900460ff166101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506101c76106e9565b60016000806101000a81548160ff021916908315150217905550565b60015481565b6000809054906101000a900460ff1661026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000811115610452576102956106e9565b60003073ffffffffffffffffffffffffffffffffffffffff1660018303604051602401808281526020019150506040516020818303038152906040527f8c5344fa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610372578051825260208201915060208101905060208303925061034f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146103d4576040519150601f19603f3d011682016040523d82523d6000602084013e6103d9565b606091505b5050905080610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5265656e7472616e63794d6f636b3a206661696c65642063616c6c000000000081525060200191505060405180910390fd5b505b60016000806101000a81548160ff02191690831515021790555050565b6000809054906101000a900460ff166104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060008111156105285761051b6106e9565b6105276001820361046f565b5b60016000806101000a81548160ff02191690831515021790555050565b6000809054906101000a900460ff166105c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506105e86106e9565b600060405180807f63616c6c6261636b282900000000000000000000000000000000000000000000815250600a019050604051809103902090508173ffffffffffffffffffffffffffffffffffffffff16630a2df1ed826040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001915050600060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b505050505060016000806101000a81548160ff02191690831515021790555050565b6001806000828254019250508190555056fea2646970667358221220b920868f0092e16c44537bb9f1cf5efa409127784d01ce06769d0a570fa6fa7264736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063083b27321461005c57806361bc221a146100665780638c5344fa1461008457806396ffa690146100b2578063b672ad8b146100e0575b600080fd5b610064610124565b005b61006e6101e3565b6040518082815260200191505060405180910390f35b6100b06004803603602081101561009a57600080fd5b81019080803590602001909291905050506101e9565b005b6100de600480360360208110156100c857600080fd5b810190808035906020019092919050505061046f565b005b610122600480360360208110156100f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610545565b005b6000809054906101000a900460ff166101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506101c76106e9565b60016000806101000a81548160ff021916908315150217905550565b60015481565b6000809054906101000a900460ff1661026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506000811115610452576102956106e9565b60003073ffffffffffffffffffffffffffffffffffffffff1660018303604051602401808281526020019150506040516020818303038152906040527f8c5344fa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610372578051825260208201915060208101905060208303925061034f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146103d4576040519150601f19603f3d011682016040523d82523d6000602084013e6103d9565b606091505b5050905080610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5265656e7472616e63794d6f636b3a206661696c65642063616c6c000000000081525060200191505060405180910390fd5b505b60016000806101000a81548160ff02191690831515021790555050565b6000809054906101000a900460ff166104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060008111156105285761051b6106e9565b6105276001820361046f565b5b60016000806101000a81548160ff02191690831515021790555050565b6000809054906101000a900460ff166105c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055506105e86106e9565b600060405180807f63616c6c6261636b282900000000000000000000000000000000000000000000815250600a019050604051809103902090508173ffffffffffffffffffffffffffffffffffffffff16630a2df1ed826040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001915050600060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b505050505060016000806101000a81548160ff02191690831515021790555050565b6001806000828254019250508190555056fea2646970667358221220b920868f0092e16c44537bb9f1cf5efa409127784d01ce06769d0a570fa6fa7264736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/RefundEscrow.json b/node_modules/@openzeppelin/contracts/build/contracts/RefundEscrow.json new file mode 100644 index 0000000..040d47c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/RefundEscrow.json @@ -0,0 +1,2293 @@ +{ + "fileName": "RefundEscrow.sol", + "contractName": "RefundEscrow", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./ConditionalEscrow.sol\";\n\n/**\n * @title RefundEscrow\n * @dev Escrow that holds funds for a beneficiary, deposited from multiple\n * parties.\n * @dev Intended usage: See {Escrow}. Same usage guidelines apply here.\n * @dev The owner account (that is, the contract that instantiates this\n * contract) may deposit, close the deposit period, and allow for either\n * withdrawal by the beneficiary, or refunds to the depositors. All interactions\n * with `RefundEscrow` will be made through the owner contract.\n */\ncontract RefundEscrow is ConditionalEscrow {\n enum State { Active, Refunding, Closed }\n\n event RefundsClosed();\n event RefundsEnabled();\n\n State private _state;\n address payable private _beneficiary;\n\n /**\n * @dev Constructor.\n * @param beneficiary The beneficiary of the deposits.\n */\n constructor (address payable beneficiary) public {\n require(beneficiary != address(0), \"RefundEscrow: beneficiary is the zero address\");\n _beneficiary = beneficiary;\n _state = State.Active;\n }\n\n /**\n * @return The current state of the escrow.\n */\n function state() public view returns (State) {\n return _state;\n }\n\n /**\n * @return The beneficiary of the escrow.\n */\n function beneficiary() public view returns (address) {\n return _beneficiary;\n }\n\n /**\n * @dev Stores funds that may later be refunded.\n * @param refundee The address funds will be sent to if a refund occurs.\n */\n function deposit(address refundee) public payable virtual override {\n require(_state == State.Active, \"RefundEscrow: can only deposit while active\");\n super.deposit(refundee);\n }\n\n /**\n * @dev Allows for the beneficiary to withdraw their funds, rejecting\n * further deposits.\n */\n function close() public onlyOwner virtual {\n require(_state == State.Active, \"RefundEscrow: can only close while active\");\n _state = State.Closed;\n emit RefundsClosed();\n }\n\n /**\n * @dev Allows for refunds to take place, rejecting further deposits.\n */\n function enableRefunds() public onlyOwner virtual {\n require(_state == State.Active, \"RefundEscrow: can only enable refunds while active\");\n _state = State.Refunding;\n emit RefundsEnabled();\n }\n\n /**\n * @dev Withdraws the beneficiary's funds.\n */\n function beneficiaryWithdraw() public virtual {\n require(_state == State.Closed, \"RefundEscrow: beneficiary can only withdraw while closed\");\n _beneficiary.transfer(address(this).balance);\n }\n\n /**\n * @dev Returns whether refundees can withdraw their deposits (be refunded). The overridden function receives a\n * 'payee' argument, but we ignore it here since the condition is global, not per-payee.\n */\n function withdrawalAllowed(address) public view override returns (bool) {\n return _state == State.Refunding;\n }\n}\n", + "sourcePath": "contracts/payment/escrow/RefundEscrow.sol", + "sourceMap": "573:2446:72:-:0;;;893:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;983:1:72;960:25;;:11;:25;;;;952:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1060:11;1045:12;;:26;;;;;;;;;;;;;;;;;;1090:12;1081:6;;:21;;;;;;;;;;;;;;;;;;;;;;;;893:216;573:2446;;590:104:0;643:15;677:10;670:17;;590:104;:::o;573:2446:72:-;;;;;;;", + "deployedSourceMap": "573:2446:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1322:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1879:196;;;;;;;;;;;;;:::i;:::-;;598:201:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2896:121:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1689:145:7;;;;;;;;;;;;;:::i;:::-;;2171:217:72;;;;;;;;;;;;;:::i;:::-;;1066:77:7;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2457:208:72;;;;;;;;;;;;;:::i;:::-;;1179:75;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1091:105:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1563:195:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1322:89;1366:7;1392:12;;;;;;;;;;;1385:19;;1322:89;:::o;1879:196::-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:12:72::1;1939:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;1931:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:12;2017:6:::0;::::1;:21;;;;;;;;;;;;;;;;;;;;;;;;2053:15;;;;;;;;;;1879:196::o:0;598:201:70:-;681:24;699:5;681:17;:24::i;:::-;673:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;771:21;786:5;771:14;:21::i;:::-;598:201;:::o;2896:121:72:-;2962:4;2995:15;2985:25;;;;;;;;:6;;;;;;;;;;;:25;;;;;;;;;2978:32;;2896:121;;;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;2171:217:72:-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2249:12:72::1;2239:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;2231:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2335:15;2326:6;;:24;;;;;;;;;;;;;;;;;;;;;;;;2365:16;;;;;;;;;;2171:217::o:0;1066:77:7:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;2457:208:72:-;2531:12;2521:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;2513:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2614:12;;;;;;;;;;;:21;;:44;2644:4;2636:21;;;2614:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:208::o;1179:75::-;1217:5;1241:6;;;;;;;;;;;1234:13;;1179:75;:::o;1091:105:71:-;1147:7;1173:9;:16;1183:5;1173:16;;;;;;;;;;;;;;;;1166:23;;1091:105;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;1563:195:72:-;1658:12;1648:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;1640:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1728:23;1742:8;1728:13;:23::i;:::-;1563:195;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;1981:224:71:-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2057:15:71::1;2075:9;:16;2085:5;2075:16;;;;;;;;;;;;;;;;2057:34;;2121:1;2102:9;:16;2112:5;2102:16;;;;;;;;;;;;;;;:20;;;;2133:24;2149:7;2133:5;:15;;;;:24;;;;:::i;:::-;2183:5;2173:25;;;2190:7;2173:25;;;;;;;;;;;;;;;;;;1339:1:7;1981:224:71::0;:::o;1338:205::-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1413:14:71::1;1430:9;1413:26;;1468:28;1489:6;1468:9;:16;1478:5;1468:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;1449:9;:16;1459:5;1449:16;;;;;;;;;;;;;;;:47;;;;1522:5;1512:24;;;1529:6;1512:24;;;;;;;;;;;;;;;;;;1339:1:7;1338:205:71::0;:::o;2245:391:104:-;2359:6;2342:4;2334:21;;;:31;;2326:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:12;2506:9;:14;;2529:6;2506:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:54;;;2559:7;2551:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:391;;;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "beneficiary", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "RefundsClosed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "RefundsEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [], + "name": "beneficiary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "beneficiaryWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "close", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "refundee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "enableRefunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "internalType": "enum RefundEscrow.State", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "withdrawalAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/payment/escrow/RefundEscrow.sol", + "exportedSymbols": { + "RefundEscrow": [ + 6822 + ] + }, + "id": 6823, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6655, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:72" + }, + { + "absolutePath": "contracts/payment/escrow/ConditionalEscrow.sol", + "file": "./ConditionalEscrow.sol", + "id": 6656, + "nodeType": "ImportDirective", + "scope": 6823, + "sourceUnit": 6549, + "src": "58:33:72", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6658, + "name": "ConditionalEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6548, + "src": "598:17:72", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConditionalEscrow_$6548", + "typeString": "contract ConditionalEscrow" + } + }, + "id": 6659, + "nodeType": "InheritanceSpecifier", + "src": "598:17:72" + } + ], + "contractDependencies": [ + 22, + 1576, + 6548, + 6653 + ], + "contractKind": "contract", + "documentation": { + "id": 6657, + "nodeType": "StructuredDocumentation", + "src": "93:479:72", + "text": " @title RefundEscrow\n @dev Escrow that holds funds for a beneficiary, deposited from multiple\n parties.\n @dev Intended usage: See {Escrow}. Same usage guidelines apply here.\n @dev The owner account (that is, the contract that instantiates this\n contract) may deposit, close the deposit period, and allow for either\n withdrawal by the beneficiary, or refunds to the depositors. All interactions\n with `RefundEscrow` will be made through the owner contract." + }, + "fullyImplemented": true, + "id": 6822, + "linearizedBaseContracts": [ + 6822, + 6548, + 6653, + 1576, + 22 + ], + "name": "RefundEscrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "RefundEscrow.State", + "id": 6663, + "members": [ + { + "id": 6660, + "name": "Active", + "nodeType": "EnumValue", + "src": "635:6:72" + }, + { + "id": 6661, + "name": "Refunding", + "nodeType": "EnumValue", + "src": "643:9:72" + }, + { + "id": 6662, + "name": "Closed", + "nodeType": "EnumValue", + "src": "654:6:72" + } + ], + "name": "State", + "nodeType": "EnumDefinition", + "src": "622:40:72" + }, + { + "anonymous": false, + "documentation": null, + "id": 6665, + "name": "RefundsClosed", + "nodeType": "EventDefinition", + "parameters": { + "id": 6664, + "nodeType": "ParameterList", + "parameters": [], + "src": "687:2:72" + }, + "src": "668:22:72" + }, + { + "anonymous": false, + "documentation": null, + "id": 6667, + "name": "RefundsEnabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 6666, + "nodeType": "ParameterList", + "parameters": [], + "src": "715:2:72" + }, + "src": "695:23:72" + }, + { + "constant": false, + "id": 6669, + "mutability": "mutable", + "name": "_state", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6822, + "src": "724:20:72", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "typeName": { + "contractScope": null, + "id": 6668, + "name": "State", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6663, + "src": "724:5:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6671, + "mutability": "mutable", + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6822, + "src": "750:36:72", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "750:15:72", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 6696, + "nodeType": "Block", + "src": "942:167:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 6683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6678, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6674, + "src": "960:11:72", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 6681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "983:1:72", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "975:7:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "975:7:72", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 6682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "975:10:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "960:25:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e64457363726f773a2062656e656669636961727920697320746865207a65726f2061646472657373", + "id": 6684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "987:47:72", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a77d0d3ca4410791e8781774e7ba61ae1755bbb27066c5d9f65089e2c7a8f1d", + "typeString": "literal_string \"RefundEscrow: beneficiary is the zero address\"" + }, + "value": "RefundEscrow: beneficiary is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8a77d0d3ca4410791e8781774e7ba61ae1755bbb27066c5d9f65089e2c7a8f1d", + "typeString": "literal_string \"RefundEscrow: beneficiary is the zero address\"" + } + ], + "id": 6677, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "952:7:72", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "952:83:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6686, + "nodeType": "ExpressionStatement", + "src": "952:83:72" + }, + { + "expression": { + "argumentTypes": null, + "id": 6689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6687, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6671, + "src": "1045:12:72", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6688, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6674, + "src": "1060:11:72", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1045:26:72", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 6690, + "nodeType": "ExpressionStatement", + "src": "1045:26:72" + }, + { + "expression": { + "argumentTypes": null, + "id": 6694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6691, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "1081:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6692, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "1090:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1090:12:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1081:21:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 6695, + "nodeType": "ExpressionStatement", + "src": "1081:21:72" + } + ] + }, + "documentation": { + "id": 6672, + "nodeType": "StructuredDocumentation", + "src": "793:95:72", + "text": " @dev Constructor.\n @param beneficiary The beneficiary of the deposits." + }, + "id": 6697, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6674, + "mutability": "mutable", + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6697, + "src": "906:27:72", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "906:15:72", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "905:29:72" + }, + "returnParameters": { + "id": 6676, + "nodeType": "ParameterList", + "parameters": [], + "src": "942:0:72" + }, + "scope": 6822, + "src": "893:216:72", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6705, + "nodeType": "Block", + "src": "1224:30:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6703, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "1241:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "functionReturnParameters": 6702, + "id": 6704, + "nodeType": "Return", + "src": "1234:13:72" + } + ] + }, + "documentation": { + "id": 6698, + "nodeType": "StructuredDocumentation", + "src": "1115:59:72", + "text": " @return The current state of the escrow." + }, + "functionSelector": "c19d93fb", + "id": 6706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "state", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6699, + "nodeType": "ParameterList", + "parameters": [], + "src": "1193:2:72" + }, + "returnParameters": { + "id": 6702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6701, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6706, + "src": "1217:5:72", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "typeName": { + "contractScope": null, + "id": 6700, + "name": "State", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6663, + "src": "1217:5:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1216:7:72" + }, + "scope": 6822, + "src": "1179:75:72", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6714, + "nodeType": "Block", + "src": "1375:36:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6712, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6671, + "src": "1392:12:72", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 6711, + "id": 6713, + "nodeType": "Return", + "src": "1385:19:72" + } + ] + }, + "documentation": { + "id": 6707, + "nodeType": "StructuredDocumentation", + "src": "1260:57:72", + "text": " @return The beneficiary of the escrow." + }, + "functionSelector": "38af3eed", + "id": 6715, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6708, + "nodeType": "ParameterList", + "parameters": [], + "src": "1342:2:72" + }, + "returnParameters": { + "id": 6711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6710, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6715, + "src": "1366:7:72", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1366:7:72", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1365:9:72" + }, + "scope": 6822, + "src": "1322:89:72", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 6620 + ], + "body": { + "id": 6736, + "nodeType": "Block", + "src": "1630:128:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "id": 6726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6723, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "1648:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6724, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "1658:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1658:12:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1648:22:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e64457363726f773a2063616e206f6e6c79206465706f736974207768696c6520616374697665", + "id": 6727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1672:45:72", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d2eddec03fda23f4156a228b50726cf2ff6928b71d9dbcbc2607b547d1e19f", + "typeString": "literal_string \"RefundEscrow: can only deposit while active\"" + }, + "value": "RefundEscrow: can only deposit while active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_65d2eddec03fda23f4156a228b50726cf2ff6928b71d9dbcbc2607b547d1e19f", + "typeString": "literal_string \"RefundEscrow: can only deposit while active\"" + } + ], + "id": 6722, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1640:7:72", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1640:78:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6729, + "nodeType": "ExpressionStatement", + "src": "1640:78:72" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6733, + "name": "refundee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6718, + "src": "1742:8:72", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 6730, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "1728:5:72", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundEscrow_$6822", + "typeString": "contract super RefundEscrow" + } + }, + "id": 6732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 6620, + "src": "1728:13:72", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1728:23:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6735, + "nodeType": "ExpressionStatement", + "src": "1728:23:72" + } + ] + }, + "documentation": { + "id": 6716, + "nodeType": "StructuredDocumentation", + "src": "1417:141:72", + "text": " @dev Stores funds that may later be refunded.\n @param refundee The address funds will be sent to if a refund occurs." + }, + "functionSelector": "f340fa01", + "id": 6737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6720, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1621:8:72" + }, + "parameters": { + "id": 6719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6718, + "mutability": "mutable", + "name": "refundee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6737, + "src": "1580:16:72", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1580:7:72", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1579:18:72" + }, + "returnParameters": { + "id": 6721, + "nodeType": "ParameterList", + "parameters": [], + "src": "1630:0:72" + }, + "scope": 6822, + "src": "1563:195:72", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6759, + "nodeType": "Block", + "src": "1921:154:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "id": 6747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6744, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "1939:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6745, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "1949:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1949:12:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1939:22:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696c6520616374697665", + "id": 6748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1963:43:72", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b57f36bbfb6b8cf96de8737d30d9d1cbc0f0335b9d71ea7602e79c09a766100", + "typeString": "literal_string \"RefundEscrow: can only close while active\"" + }, + "value": "RefundEscrow: can only close while active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8b57f36bbfb6b8cf96de8737d30d9d1cbc0f0335b9d71ea7602e79c09a766100", + "typeString": "literal_string \"RefundEscrow: can only close while active\"" + } + ], + "id": 6743, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1931:7:72", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1931:76:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6750, + "nodeType": "ExpressionStatement", + "src": "1931:76:72" + }, + { + "expression": { + "argumentTypes": null, + "id": 6754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6751, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "2017:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6752, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "2026:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Closed", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2026:12:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2017:21:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 6755, + "nodeType": "ExpressionStatement", + "src": "2017:21:72" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6756, + "name": "RefundsClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6665, + "src": "2053:13:72", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 6757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2053:15:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6758, + "nodeType": "EmitStatement", + "src": "2048:20:72" + } + ] + }, + "documentation": { + "id": 6738, + "nodeType": "StructuredDocumentation", + "src": "1764:110:72", + "text": " @dev Allows for the beneficiary to withdraw their funds, rejecting\n further deposits." + }, + "functionSelector": "43d726d6", + "id": 6760, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6741, + "modifierName": { + "argumentTypes": null, + "id": 6740, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "1903:9:72", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1903:9:72" + } + ], + "name": "close", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6739, + "nodeType": "ParameterList", + "parameters": [], + "src": "1893:2:72" + }, + "returnParameters": { + "id": 6742, + "nodeType": "ParameterList", + "parameters": [], + "src": "1921:0:72" + }, + "scope": 6822, + "src": "1879:196:72", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6782, + "nodeType": "Block", + "src": "2221:167:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "id": 6770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6767, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "2239:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6768, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "2249:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2249:12:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2239:22:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726566756e6473207768696c6520616374697665", + "id": 6771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2263:52:72", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c983cde4805ee52cdf0ba0ddf13817bc95474a21a1151fc5899abaab3f302200", + "typeString": "literal_string \"RefundEscrow: can only enable refunds while active\"" + }, + "value": "RefundEscrow: can only enable refunds while active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c983cde4805ee52cdf0ba0ddf13817bc95474a21a1151fc5899abaab3f302200", + "typeString": "literal_string \"RefundEscrow: can only enable refunds while active\"" + } + ], + "id": 6766, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2231:7:72", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2231:85:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6773, + "nodeType": "ExpressionStatement", + "src": "2231:85:72" + }, + { + "expression": { + "argumentTypes": null, + "id": 6777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6774, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "2326:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6775, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "2335:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Refunding", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2335:15:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2326:24:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 6778, + "nodeType": "ExpressionStatement", + "src": "2326:24:72" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6779, + "name": "RefundsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6667, + "src": "2365:14:72", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 6780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2365:16:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6781, + "nodeType": "EmitStatement", + "src": "2360:21:72" + } + ] + }, + "documentation": { + "id": 6761, + "nodeType": "StructuredDocumentation", + "src": "2081:85:72", + "text": " @dev Allows for refunds to take place, rejecting further deposits." + }, + "functionSelector": "8c52dc41", + "id": 6783, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6764, + "modifierName": { + "argumentTypes": null, + "id": 6763, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "2203:9:72", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2203:9:72" + } + ], + "name": "enableRefunds", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6762, + "nodeType": "ParameterList", + "parameters": [], + "src": "2193:2:72" + }, + "returnParameters": { + "id": 6765, + "nodeType": "ParameterList", + "parameters": [], + "src": "2221:0:72" + }, + "scope": 6822, + "src": "2171:217:72", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6805, + "nodeType": "Block", + "src": "2503:162:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "id": 6791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6788, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "2521:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6789, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "2531:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Closed", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2531:12:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2521:22:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e64457363726f773a2062656e65666963696172792063616e206f6e6c79207769746864726177207768696c6520636c6f736564", + "id": 6792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2545:58:72", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_01d94a28ecd337ff4054022bb41ef2363cd1a92d1c775148e2e03f86b6e5dabc", + "typeString": "literal_string \"RefundEscrow: beneficiary can only withdraw while closed\"" + }, + "value": "RefundEscrow: beneficiary can only withdraw while closed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_01d94a28ecd337ff4054022bb41ef2363cd1a92d1c775148e2e03f86b6e5dabc", + "typeString": "literal_string \"RefundEscrow: beneficiary can only withdraw while closed\"" + } + ], + "id": 6787, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2513:7:72", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2513:91:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6794, + "nodeType": "ExpressionStatement", + "src": "2513:91:72" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6800, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2644:4:72", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$6822", + "typeString": "contract RefundEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_RefundEscrow_$6822", + "typeString": "contract RefundEscrow" + } + ], + "id": 6799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2636:7:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6798, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2636:7:72", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 6801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2636:13:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2636:21:72", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6795, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6671, + "src": "2614:12:72", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 6797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2614:21:72", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2614:44:72", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6804, + "nodeType": "ExpressionStatement", + "src": "2614:44:72" + } + ] + }, + "documentation": { + "id": 6784, + "nodeType": "StructuredDocumentation", + "src": "2394:58:72", + "text": " @dev Withdraws the beneficiary's funds." + }, + "functionSelector": "9af6549a", + "id": 6806, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiaryWithdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6785, + "nodeType": "ParameterList", + "parameters": [], + "src": "2485:2:72" + }, + "returnParameters": { + "id": 6786, + "nodeType": "ParameterList", + "parameters": [], + "src": "2503:0:72" + }, + "scope": 6822, + "src": "2457:208:72", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 6527 + ], + "body": { + "id": 6820, + "nodeType": "Block", + "src": "2968:49:72", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + }, + "id": 6818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6815, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "2985:6:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6816, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6663, + "src": "2995:5:72", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$6663_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 6817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Refunding", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2995:15:72", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$6663", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2985:25:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6814, + "id": 6819, + "nodeType": "Return", + "src": "2978:32:72" + } + ] + }, + "documentation": { + "id": 6807, + "nodeType": "StructuredDocumentation", + "src": "2671:220:72", + "text": " @dev Returns whether refundees can withdraw their deposits (be refunded). The overridden function receives a\n 'payee' argument, but we ignore it here since the condition is global, not per-payee." + }, + "functionSelector": "685ca194", + "id": 6821, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6811, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2944:8:72" + }, + "parameters": { + "id": 6810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6809, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6821, + "src": "2923:7:72", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2923:7:72", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2922:9:72" + }, + "returnParameters": { + "id": 6814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6813, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6821, + "src": "2962:4:72", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6812, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2962:4:72", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2961:6:72" + }, + "scope": 6822, + "src": "2896:121:72", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 6823, + "src": "573:2446:72" + } + ], + "src": "33:2987:72" + }, + "bytecode": "0x608060405234801561001057600080fd5b506040516116523803806116528339818101604052602081101561003357600080fd5b810190808051906020019092919050505060006100546101e360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611625602d913960400191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548160ff021916908360028111156101d857fe5b0217905550506101eb565b600033905090565b61142b806101fa6000396000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146102025780639af6549a14610259578063c19d93fb14610270578063e3a9db1a146102a9578063f2fde38b1461030e578063f340fa011461035f576100a7565b806338af3eed146100ac57806343d726d61461010357806351cff8d91461011a578063685ca1941461016b578063715018a6146101d45780638c52dc41146101eb575b600080fd5b3480156100b857600080fd5b506100c16103a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010f57600080fd5b506101186103cd565b005b34801561012657600080fd5b506101696004803603602081101561013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610565565b005b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cf565b604051808215151515815260200191505060405180910390f35b3480156101e057600080fd5b506101e9610601565b005b3480156101f757600080fd5b50610200610789565b005b34801561020e57600080fd5b50610217610922565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561026557600080fd5b5061026e61094b565b005b34801561027c57600080fd5b50610285610a4a565b6040518082600281111561029557fe5b60ff16815260200191505060405180910390f35b3480156102b557600080fd5b506102f8600480360360208110156102cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a61565b6040518082815260200191505060405180910390f35b34801561031a57600080fd5b5061035d6004803603602081101561033157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aaa565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cb7565b005b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103d5610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610496576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600060028111156104a357fe5b600260009054906101000a900460ff1660028111156104be57fe5b14610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061139b6029913960400191505060405180910390fd5b60028060006101000a81548160ff0219169083600281111561053257fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b61056e816105cf565b6105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806113686033913960400191505060405180910390fd5b6105cc81610d49565b50565b6000600160028111156105de57fe5b600260009054906101000a900460ff1660028111156105f957fe5b149050919050565b610609610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610791610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600281111561085f57fe5b600260009054906101000a900460ff16600281111561087a57fe5b146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806113c46032913960400191505060405180910390fd5b6001600260006101000a81548160ff021916908360028111156108ef57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60028081111561095757fe5b600260009054906101000a900460ff16600281111561097257fe5b146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806112a56038913960400191505060405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610a47573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ab2610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806112dd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002811115610cc457fe5b600260009054906101000a900460ff166002811115610cdf57fe5b14610d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061133d602b913960400191505060405180910390fd5b610d3e81610f16565b50565b600033905090565b610d51610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec4818373ffffffffffffffffffffffffffffffffffffffff166110cb90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b610f1e610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061103681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b803073ffffffffffffffffffffffffffffffffffffffff16311015611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d80600081146111b8576040519150601f19603f3d011682016040523d82523d6000602084013e6111bd565b606091505b5050905080611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611303603a913960400191505060405180910390fd5b505050565b60008082840190508381101561129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe526566756e64457363726f773a2062656e65666963696172792063616e206f6e6c79207769746864726177207768696c6520636c6f7365644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e64457363726f773a2063616e206f6e6c79206465706f736974207768696c6520616374697665436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696c6520616374697665526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726566756e6473207768696c6520616374697665a26469706673582212200e5126e5b6f517d65303c912486b4377d24b51043b647a9ddd9771909421d1b964736f6c634300060a0033526566756e64457363726f773a2062656e656669636961727920697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146102025780639af6549a14610259578063c19d93fb14610270578063e3a9db1a146102a9578063f2fde38b1461030e578063f340fa011461035f576100a7565b806338af3eed146100ac57806343d726d61461010357806351cff8d91461011a578063685ca1941461016b578063715018a6146101d45780638c52dc41146101eb575b600080fd5b3480156100b857600080fd5b506100c16103a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010f57600080fd5b506101186103cd565b005b34801561012657600080fd5b506101696004803603602081101561013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610565565b005b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cf565b604051808215151515815260200191505060405180910390f35b3480156101e057600080fd5b506101e9610601565b005b3480156101f757600080fd5b50610200610789565b005b34801561020e57600080fd5b50610217610922565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561026557600080fd5b5061026e61094b565b005b34801561027c57600080fd5b50610285610a4a565b6040518082600281111561029557fe5b60ff16815260200191505060405180910390f35b3480156102b557600080fd5b506102f8600480360360208110156102cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a61565b6040518082815260200191505060405180910390f35b34801561031a57600080fd5b5061035d6004803603602081101561033157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aaa565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cb7565b005b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103d5610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610496576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600060028111156104a357fe5b600260009054906101000a900460ff1660028111156104be57fe5b14610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061139b6029913960400191505060405180910390fd5b60028060006101000a81548160ff0219169083600281111561053257fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b61056e816105cf565b6105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806113686033913960400191505060405180910390fd5b6105cc81610d49565b50565b6000600160028111156105de57fe5b600260009054906101000a900460ff1660028111156105f957fe5b149050919050565b610609610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610791610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600281111561085f57fe5b600260009054906101000a900460ff16600281111561087a57fe5b146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806113c46032913960400191505060405180910390fd5b6001600260006101000a81548160ff021916908360028111156108ef57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60028081111561095757fe5b600260009054906101000a900460ff16600281111561097257fe5b146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806112a56038913960400191505060405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610a47573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ab2610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806112dd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006002811115610cc457fe5b600260009054906101000a900460ff166002811115610cdf57fe5b14610d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061133d602b913960400191505060405180910390fd5b610d3e81610f16565b50565b600033905090565b610d51610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec4818373ffffffffffffffffffffffffffffffffffffffff166110cb90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b610f1e610d41565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600034905061103681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b803073ffffffffffffffffffffffffffffffffffffffff16311015611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d80600081146111b8576040519150601f19603f3d011682016040523d82523d6000602084013e6111bd565b606091505b5050905080611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611303603a913960400191505060405180910390fd5b505050565b60008082840190508381101561129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe526566756e64457363726f773a2062656e65666963696172792063616e206f6e6c79207769746864726177207768696c6520636c6f7365644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e64457363726f773a2063616e206f6e6c79206465706f736974207768696c6520616374697665436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696c6520616374697665526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726566756e6473207768696c6520616374697665a26469706673582212200e5126e5b6f517d65303c912486b4377d24b51043b647a9ddd9771909421d1b964736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsale.json new file mode 100644 index 0000000..1b0286c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsale.json @@ -0,0 +1,1867 @@ +{ + "fileName": "RefundableCrowdsale.sol", + "contractName": "RefundableCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"./FinalizableCrowdsale.sol\";\nimport \"../../payment/escrow/RefundEscrow.sol\";\n\n/**\n * @title RefundableCrowdsale\n * @dev Extension of `FinalizableCrowdsale` contract that adds a funding goal, and the possibility of users\n * getting a refund if goal is not met.\n *\n * Deprecated, use `RefundablePostDeliveryCrowdsale` instead. Note that if you allow tokens to be traded before the goal\n * is met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that\n * the goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when\n * the crowdsale is finalized, and the users that purchased from them will be left with worthless tokens.\n */\ncontract RefundableCrowdsale is Context, FinalizableCrowdsale {\n using SafeMath for uint256;\n\n // minimum amount of funds to be raised in weis\n uint256 private _goal;\n\n // refund escrow used to hold funds while crowdsale is running\n RefundEscrow private _escrow;\n\n /**\n * @dev Constructor, creates RefundEscrow.\n * @param goal Funding goal\n */\n constructor (uint256 goal) public {\n require(goal > 0, \"RefundableCrowdsale: goal is 0\");\n _escrow = new RefundEscrow(wallet());\n _goal = goal;\n }\n\n /**\n * @return minimum amount of funds to be raised in wei.\n */\n function goal() public view returns (uint256) {\n return _goal;\n }\n\n /**\n * @dev Investors can claim refunds here if crowdsale is unsuccessful.\n * @param refundee Whose refund will be claimed.\n */\n function claimRefund(address payable refundee) public {\n require(finalized(), \"RefundableCrowdsale: not finalized\");\n require(!goalReached(), \"RefundableCrowdsale: goal reached\");\n\n _escrow.withdraw(refundee);\n }\n\n /**\n * @dev Checks whether funding goal was reached.\n * @return Whether funding goal was reached\n */\n function goalReached() public view returns (bool) {\n return weiRaised() >= _goal;\n }\n\n /**\n * @dev Escrow finalization task, called when finalize() is called.\n */\n function _finalization() internal {\n if (goalReached()) {\n _escrow.close();\n _escrow.beneficiaryWithdraw();\n } else {\n _escrow.enableRefunds();\n }\n\n super._finalization();\n }\n\n /**\n * @dev Overrides Crowdsale fund forwarding, sending funds to escrow.\n */\n function _forwardFunds() internal {\n _escrow.deposit.value(msg.value)(_msgSender());\n }\n}\n", + "sourcePath": "contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "goal", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "exportedSymbols": { + "RefundableCrowdsale": [ + 2439 + ] + }, + "id": 2440, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2309, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:16" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 2310, + "nodeType": "ImportDirective", + "scope": 2440, + "sourceUnit": 27, + "src": "25:31:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2311, + "nodeType": "ImportDirective", + "scope": 2440, + "sourceUnit": 5300, + "src": "57:33:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "file": "./FinalizableCrowdsale.sol", + "id": 2312, + "nodeType": "ImportDirective", + "scope": 2440, + "sourceUnit": 2180, + "src": "91:36:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/payment/escrow/RefundEscrow.sol", + "file": "../../payment/escrow/RefundEscrow.sol", + "id": 2313, + "nodeType": "ImportDirective", + "scope": 2440, + "sourceUnit": 9462, + "src": "128:47:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2314, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "864:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 2315, + "nodeType": "InheritanceSpecifier", + "src": "864:7:16" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2316, + "name": "FinalizableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2179, + "src": "873:20:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FinalizableCrowdsale_$2179", + "typeString": "contract FinalizableCrowdsale" + } + }, + "id": 2317, + "nodeType": "InheritanceSpecifier", + "src": "873:20:16" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 3087, + 9461, + 13820 + ], + "contractKind": "contract", + "documentation": "@title RefundableCrowdsale\n@dev Extension of `FinalizableCrowdsale` contract that adds a funding goal, and the possibility of users\ngetting a refund if goal is not met.\n * Deprecated, use `RefundablePostDeliveryCrowdsale` instead. Note that if you allow tokens to be traded before the goal\nis met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that\nthe goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when\nthe crowdsale is finalized, and the users that purchased from them will be left with worthless tokens.", + "fullyImplemented": false, + "id": 2439, + "linearizedBaseContracts": [ + 2439, + 2179, + 3087, + 2119, + 13820, + 26 + ], + "name": "RefundableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2320, + "libraryName": { + "contractScope": null, + "id": 2318, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "906:8:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "900:27:16", + "typeName": { + "id": 2319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "919:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2322, + "name": "_goal", + "nodeType": "VariableDeclaration", + "scope": 2439, + "src": "985:21:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "985:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2324, + "name": "_escrow", + "nodeType": "VariableDeclaration", + "scope": 2439, + "src": "1080:28:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + }, + "typeName": { + "contractScope": null, + "id": 2323, + "name": "RefundEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9461, + "src": "1080:12:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2348, + "nodeType": "Block", + "src": "1244:136:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2330, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2326, + "src": "1262:4:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1269:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1262:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e6461626c6543726f776473616c653a20676f616c2069732030", + "id": 2333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1272:32:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_15b425ad47b38bd9f192781c8e42c99d6e1ccf6762c7d5fcf31d9a14db02b056", + "typeString": "literal_string \"RefundableCrowdsale: goal is 0\"" + }, + "value": "RefundableCrowdsale: goal is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_15b425ad47b38bd9f192781c8e42c99d6e1ccf6762c7d5fcf31d9a14db02b056", + "typeString": "literal_string \"RefundableCrowdsale: goal is 0\"" + } + ], + "id": 2329, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1254:7:16", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1254:51:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2335, + "nodeType": "ExpressionStatement", + "src": "1254:51:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 2342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2336, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "1315:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2339, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1951, + "src": "1342:6:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1342:8:16", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1325:16:16", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_payable_$returns$_t_contract$_RefundEscrow_$9461_$", + "typeString": "function (address payable) returns (contract RefundEscrow)" + }, + "typeName": { + "contractScope": null, + "id": 2337, + "name": "RefundEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9461, + "src": "1329:12:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + } + }, + "id": 2341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1325:26:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "src": "1315:36:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "id": 2343, + "nodeType": "ExpressionStatement", + "src": "1315:36:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2344, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1361:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2345, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2326, + "src": "1369:4:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1361:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2347, + "nodeType": "ExpressionStatement", + "src": "1361:12:16" + } + ] + }, + "documentation": "@dev Constructor, creates RefundEscrow.\n@param goal Funding goal", + "id": 2349, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2327, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2326, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 2349, + "src": "1223:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1223:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1222:14:16" + }, + "returnParameters": { + "id": 2328, + "nodeType": "ParameterList", + "parameters": [], + "src": "1244:0:16" + }, + "scope": 2439, + "src": "1210:170:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2356, + "nodeType": "Block", + "src": "1508:29:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2354, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1525:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2353, + "id": 2355, + "nodeType": "Return", + "src": "1518:12:16" + } + ] + }, + "documentation": "@return minimum amount of funds to be raised in wei.", + "id": 2357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "goal", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2350, + "nodeType": "ParameterList", + "parameters": [], + "src": "1475:2:16" + }, + "returnParameters": { + "id": 2353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2352, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2357, + "src": "1499:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1499:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1498:9:16" + }, + "scope": 2439, + "src": "1462:75:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2381, + "nodeType": "Block", + "src": "1741:182:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2363, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2148, + "src": "1759:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1759:11:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a6564", + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1772:36:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c7b130393fa35ff0c09d9006f976400797070339a32be8777612f2bf172118ce", + "typeString": "literal_string \"RefundableCrowdsale: not finalized\"" + }, + "value": "RefundableCrowdsale: not finalized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c7b130393fa35ff0c09d9006f976400797070339a32be8777612f2bf172118ce", + "typeString": "literal_string \"RefundableCrowdsale: not finalized\"" + } + ], + "id": 2362, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1751:7:16", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1751:58:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2367, + "nodeType": "ExpressionStatement", + "src": "1751:58:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1827:14:16", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2369, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "1828:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1828:13:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e6461626c6543726f776473616c653a20676f616c2072656163686564", + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1843:35:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b70f1607eed4c774d2a2f4c5a756430e404e5829ffeaa00f1b05542215391631", + "typeString": "literal_string \"RefundableCrowdsale: goal reached\"" + }, + "value": "RefundableCrowdsale: goal reached" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b70f1607eed4c774d2a2f4c5a756430e404e5829ffeaa00f1b05542215391631", + "typeString": "literal_string \"RefundableCrowdsale: goal reached\"" + } + ], + "id": 2368, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1819:7:16", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1819:60:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2374, + "nodeType": "ExpressionStatement", + "src": "1819:60:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2378, + "name": "refundee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2359, + "src": "1907:8:16", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 2375, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "1890:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 9171, + "src": "1890:16:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable) external" + } + }, + "id": 2379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1890:26:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2380, + "nodeType": "ExpressionStatement", + "src": "1890:26:16" + } + ] + }, + "documentation": "@dev Investors can claim refunds here if crowdsale is unsuccessful.\n@param refundee Whose refund will be claimed.", + "id": 2382, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimRefund", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2359, + "name": "refundee", + "nodeType": "VariableDeclaration", + "scope": 2382, + "src": "1708:24:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 2358, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1708:15:16", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1707:26:16" + }, + "returnParameters": { + "id": 2361, + "nodeType": "ParameterList", + "parameters": [], + "src": "1741:0:16" + }, + "scope": 2439, + "src": "1687:236:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2392, + "nodeType": "Block", + "src": "2096:44:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2387, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1967, + "src": "2113:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2113:11:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2389, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "2128:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2113:20:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2386, + "id": 2391, + "nodeType": "Return", + "src": "2106:27:16" + } + ] + }, + "documentation": "@dev Checks whether funding goal was reached.\n@return Whether funding goal was reached", + "id": 2393, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "goalReached", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2383, + "nodeType": "ParameterList", + "parameters": [], + "src": "2066:2:16" + }, + "returnParameters": { + "id": 2386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2385, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2393, + "src": "2090:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2384, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2090:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2089:6:16" + }, + "scope": 2439, + "src": "2046:94:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2421, + "nodeType": "Block", + "src": "2268:204:16", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2396, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "2282:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2282:13:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2414, + "nodeType": "Block", + "src": "2386:48:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2409, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "2400:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "enableRefunds", + "nodeType": "MemberAccess", + "referencedDeclaration": 9426, + "src": "2400:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 2412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2400:23:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2413, + "nodeType": "ExpressionStatement", + "src": "2400:23:16" + } + ] + }, + "id": 2415, + "nodeType": "IfStatement", + "src": "2278:156:16", + "trueBody": { + "id": 2408, + "nodeType": "Block", + "src": "2297:83:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2398, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "2311:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "close", + "nodeType": "MemberAccess", + "referencedDeclaration": 9404, + "src": "2311:13:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2311:15:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2402, + "nodeType": "ExpressionStatement", + "src": "2311:15:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2403, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "2340:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "id": 2405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "beneficiaryWithdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 9447, + "src": "2340:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2340:29:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2407, + "nodeType": "ExpressionStatement", + "src": "2340:29:16" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2416, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14020, + "src": "2444:5:16", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundableCrowdsale_$2439", + "typeString": "contract super RefundableCrowdsale" + } + }, + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_finalization", + "nodeType": "MemberAccess", + "referencedDeclaration": 2178, + "src": "2444:19:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2444:21:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2420, + "nodeType": "ExpressionStatement", + "src": "2444:21:16" + } + ] + }, + "documentation": "@dev Escrow finalization task, called when finalize() is called.", + "id": 2422, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2394, + "nodeType": "ParameterList", + "parameters": [], + "src": "2256:2:16" + }, + "returnParameters": { + "id": 2395, + "nodeType": "ParameterList", + "parameters": [], + "src": "2268:0:16" + }, + "scope": 2439, + "src": "2234:238:16", + "stateMutability": "nonpayable", + "superFunction": 2178, + "visibility": "internal" + }, + { + "body": { + "id": 2437, + "nodeType": "Block", + "src": "2602:63:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2433, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2645:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2645:12:16", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2430, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13943, + "src": "2634:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2634:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2425, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "2612:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$9461", + "typeString": "contract RefundEscrow" + } + }, + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 9382, + "src": "2612:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$", + "typeString": "function (address) payable external" + } + }, + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2612:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$", + "typeString": "function (uint256) pure returns (function (address) payable external)" + } + }, + "id": 2432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2612:32:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$value", + "typeString": "function (address) payable external" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2612:46:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2436, + "nodeType": "ExpressionStatement", + "src": "2612:46:16" + } + ] + }, + "documentation": "@dev Overrides Crowdsale fund forwarding, sending funds to escrow.", + "id": 2438, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_forwardFunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2423, + "nodeType": "ParameterList", + "parameters": [], + "src": "2590:2:16" + }, + "returnParameters": { + "id": 2424, + "nodeType": "ParameterList", + "parameters": [], + "src": "2602:0:16" + }, + "scope": 2439, + "src": "2568:97:16", + "stateMutability": "nonpayable", + "superFunction": 2118, + "visibility": "internal" + } + ], + "scope": 2440, + "src": "832:1835:16" + } + ], + "src": "0:2668:16" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsaleImpl.json new file mode 100644 index 0000000..bd42488 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/RefundableCrowdsaleImpl.json @@ -0,0 +1,749 @@ +{ + "fileName": "RefundableCrowdsaleImpl.sol", + "contractName": "RefundableCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/distribution/RefundableCrowdsale.sol\";\n\ncontract RefundableCrowdsaleImpl is RefundableCrowdsale {\n constructor (\n uint256 openingTime,\n uint256 closingTime,\n uint256 rate,\n address payable wallet,\n IERC20 token,\n uint256 goal\n )\n public\n Crowdsale(rate, wallet, token)\n TimedCrowdsale(openingTime, closingTime)\n RefundableCrowdsale(goal)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/RefundableCrowdsaleImpl.sol", + "sourceMap": "122:444:98:-;;;184:380;8:9:-1;5:2;;;30:1;27;20:12;5:2;184:380:98;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;184:380:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;490:4;436:11;449;392:4;398:6;406:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;459:5:14;446:10;;:18;;;;;;;;;;;;;;;;;;1269:1:16;1262:4;:8;1254:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1342:8;:6;;;:8;;:::i;:::-;1325:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1325:26:16;1315:7;;:36;;;;;;;;;;;;;;;;;;1369:4;1361:5;:12;;;;1210:170;184:380:98;;;;;;122:444;;3258:87:13;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;122:444:98:-;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "122:444:98:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;122:444:98;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1462::16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1462:75:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1590:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;801:262:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:262:14;;;:::i;:::-;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2046:94:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2046:94:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;561:82:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;561:82:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1436:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1687:236:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1687:236:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1687:236:16;;;;;;;;;;;;;;;;;;;:::i;:::-;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;1462::16:-;1499:7;1525:5;;1518:12;;1462:75;:::o;3568:85:13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;1590:89::-;1634:7;1660:12;;1653:19;;1590:89;:::o;801:262:14:-;847:10;;;;;;;;;;;846:11;838:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;919:11;:9;:11::i;:::-;911:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:4;978:10;;:17;;;;;;;;;;;;;;;;;;1006:15;:13;:15::i;:::-;1036:20;;;;;;;;;;801:262::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;2046:94:16:-;2090:4;2128:5;;2113:11;:9;:11::i;:::-;:20;;2106:27;;2046:94;:::o;561:82:14:-;603:4;626:10;;;;;;;;;;;619:17;;561:82;:::o;1436:89:24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;1687:236:16:-;1759:11;:9;:11::i;:::-;1751:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:13;:11;:13::i;:::-;1827:14;1819:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:7;;;;;;;;;;;:16;;;1907:8;1890:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:26:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1890:26:16;;;;1687:236;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;2568:97:16:-;2612:7;;;;;;;;;;;:15;;;2634:9;2645:12;:10;:12::i;:::-;2612:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2612:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2612:46:16;;;;;2568:97::o;5728:149:13:-;;;:::o;2234:238:16:-;2282:13;:11;:13::i;:::-;2278:156;;;2311:7;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2311:15:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2311:15:16;;;;2340:7;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2340:29:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2340:29:16;;;;2278:156;;;2400:7;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2400:23:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:23:16;;;;2278:156;2444:21;:19;:21::i;:::-;2234:238::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;1272:98:14:-;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "goal", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/RefundableCrowdsaleImpl.sol", + "exportedSymbols": { + "RefundableCrowdsaleImpl": [ + 7750 + ] + }, + "id": 7751, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7717, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:98" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 7718, + "nodeType": "ImportDirective", + "scope": 7751, + "sourceUnit": 10217, + "src": "25:35:98", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "file": "../crowdsale/distribution/RefundableCrowdsale.sol", + "id": 7719, + "nodeType": "ImportDirective", + "scope": 7751, + "sourceUnit": 2440, + "src": "61:59:98", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7720, + "name": "RefundableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2439, + "src": "158:19:98", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundableCrowdsale_$2439", + "typeString": "contract RefundableCrowdsale" + } + }, + "id": 7721, + "nodeType": "InheritanceSpecifier", + "src": "158:19:98" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 2439, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7750, + "linearizedBaseContracts": [ + 7750, + 2439, + 2179, + 3087, + 2119, + 13820, + 26 + ], + "name": "RefundableCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7748, + "nodeType": "Block", + "src": "500:64:98", + "statements": [] + }, + "documentation": null, + "id": 7749, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7736, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7727, + "src": "392:4:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7737, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7729, + "src": "398:6:98", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7738, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7731, + "src": "406:5:98", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 7739, + "modifierName": { + "argumentTypes": null, + "id": 7735, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "382:9:98", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "382:30:98" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7741, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7723, + "src": "436:11:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7742, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7725, + "src": "449:11:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7743, + "modifierName": { + "argumentTypes": null, + "id": 7740, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "421:14:98", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "421:40:98" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7745, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7733, + "src": "490:4:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7746, + "modifierName": { + "argumentTypes": null, + "id": 7744, + "name": "RefundableCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "470:19:98", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RefundableCrowdsale_$2439_$", + "typeString": "type(contract RefundableCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "470:25:98" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7723, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "206:19:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "206:7:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7725, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "235:19:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "235:7:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7727, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "264:12:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7729, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "286:22:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7728, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "286:15:98", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7731, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "318:12:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 7730, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "318:6:98", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7733, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "340:12:98", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "340:7:98", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "196:162:98" + }, + "returnParameters": { + "id": 7747, + "nodeType": "ParameterList", + "parameters": [], + "src": "500:0:98" + }, + "scope": 7750, + "src": "184:380:98", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7751, + "src": "122:444:98" + } + ], + "src": "0:567:98" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002f1238038062002f12833981810160405260c08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505080868686868660016000806101000a81548160ff0219169083151502179055506000831162000111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018062002eed6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ec96024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050504282101562000308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002e5f6033913960400191505060405180910390fd5b81811162000362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018062002e926037913960400191505060405180910390fd5b816004819055508060058190555050506000600660006101000a81548160ff0219169083151502179055506000811162000404576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f526566756e6461626c6543726f776473616c653a20676f616c2069732030000081525060200191505060405180910390fd5b62000414620004ca60201b60201c565b6040516200042290620004f4565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000475573d6000803e3d6000fd5b50600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806007819055505050505050505062000502565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166080620017ff83390190565b6112ed80620005126000396000f3fe6080604052600436106100dd5760003560e01c8063521eb2731161007f578063b7a8807c11610059578063b7a8807c146102c5578063bffa55d5146102f0578063ec8ac4d814610341578063fc0c546a14610385576100dd565b8063521eb273146102105780637d3d652214610267578063b3f05b9714610296576100dd565b80634042b66f116100bb5780634042b66f1461017457806347535d7b1461019f5780634b6753bc146101ce5780634bb278f3146101f9576100dd565b80631515bc2b146100ef5780632c4e722e1461011e5780634019388314610149575b6100ed6100e86103dc565b6103e4565b005b3480156100fb57600080fd5b5061010461056f565b604051808215151515815260200191505060405180910390f35b34801561012a57600080fd5b5061013361057b565b6040518082815260200191505060405180910390f35b34801561015557600080fd5b5061015e610585565b6040518082815260200191505060405180910390f35b34801561018057600080fd5b5061018961058f565b6040518082815260200191505060405180910390f35b3480156101ab57600080fd5b506101b4610599565b604051808215151515815260200191505060405180910390f35b3480156101da57600080fd5b506101e36105b4565b6040518082815260200191505060405180910390f35b34801561020557600080fd5b5061020e6105be565b005b34801561021c57600080fd5b506102256106ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027357600080fd5b5061027c610719565b604051808215151515815260200191505060405180910390f35b3480156102a257600080fd5b506102ab61072d565b604051808215151515815260200191505060405180910390f35b3480156102d157600080fd5b506102da610744565b6040518082815260200191505060405180910390f35b3480156102fc57600080fd5b5061033f6004803603602081101561031357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061074e565b005b6103836004803603602081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e4565b005b34801561039157600080fd5b5061039a6108c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061048e82826108ee565b600061049982610976565b90506104b08260035461099490919063ffffffff16565b6003819055506104c08382610a1c565b8273ffffffffffffffffffffffffffffffffffffffff166104df6103dc565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361053e8383610a2a565b610546610a2e565b6105508383610af1565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600754905090565b6000600354905090565b600060045442101580156105af57506005544211155b905090565b6000600554905090565b600660009054906101000a900460ff1615610624576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806111fb6027913960400191505060405180910390fd5b61062c61056f565b61069e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055506106c1610af5565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060075461072661058f565b1015905090565b6000600660009054906101000a900460ff16905090565b6000600454905090565b61075661072d565b6107ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061126d6022913960400191505060405180910390fd5b6107b3610719565b15610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112226021913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156108aa57600080fd5b505af11580156108be573d6000803e3d6000fd5b5050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108f6610599565b610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6109728282610c98565b5050565b600061098d60025483610d9990919063ffffffff16565b9050919050565b600080828401905083811015610a12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610a268282610e1f565b5050565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134610a756103dc565b6040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b5050505050565b5050565b610afd610719565b15610c0b57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af6549a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b50505050610c8e565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050505b610c96610e70565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611243602a913960400191505060405180910390fd5b6000811415610d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610dac5760009050610e19565b6000828402905082848281610dbd57fe5b0414610e14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111da6021913960400191505060405180910390fd5b809150505b92915050565b610e6c8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e729092919063ffffffff16565b5050565b565b610f3e838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f43565b505050565b610f628273ffffffffffffffffffffffffffffffffffffffff1661118e565b610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106110235780518252602082019150602081019050602083039250611000565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611085576040519150601f19603f3d011682016040523d82523d6000602084013e61108a565b606091505b509150915081611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156111885780806020019051602081101561112157600080fd5b8101908080519060200190929190505050611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061128f602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156111d057506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564526566756e6461626c6543726f776473616c653a20676f616c207265616368656443726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158204748194f7459edf39dcb53e49fc76d99fcb09ba6a8d9617be4f4d64d4d32bee464736f6c63430005110032608060405234801561001057600080fd5b506040516116603803806116608339818101604052602081101561003357600080fd5b810190808051906020019092919050505060006100546101eb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611633602d913960400191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548160ff021916908360028111156101e057fe5b0217905550506101f3565b600033905090565b611431806102026000396000f3fe6080604052600436106100a75760003560e01c80638c52dc41116100645780638c52dc41146102765780639af6549a1461028d578063c19d93fb146102a4578063c6dbdf61146102dd578063e3a9db1a14610334578063f340fa0114610399576100a7565b80632348238c146100ac57806338af3eed146100fd57806343d726d61461015457806351cff8d91461016b5780636809691a146101bc578063685ca1941461020d575b600080fd5b3480156100b857600080fd5b506100fb600480360360208110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103dd565b005b34801561010957600080fd5b506101126105b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016057600080fd5b506101696105df565b005b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061075a565b005b3480156101c857600080fd5b5061020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b005b34801561021957600080fd5b5061025c6004803603602081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610974565b604051808215151515815260200191505060405180910390f35b34801561028257600080fd5b5061028b6109a6565b005b34801561029957600080fd5b506102a2610b22565b005b3480156102b057600080fd5b506102b9610c21565b604051808260028111156102c957fe5b60ff16815260200191505060405180910390f35b3480156102e957600080fd5b506102f2610c38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034057600080fd5b506103836004803603602081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b6040518082815260200191505060405180910390f35b6103db600480360360208110156103af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610caa565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661041d610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611375602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061f610d34565b73ffffffffffffffffffffffffffffffffffffffff161461068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600281111561069857fe5b600260009054906101000a900460ff1660028111156106b357fe5b14610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061134c6029913960400191505060405180910390fd5b60028060006101000a81548160ff0219169083600281111561072757fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b61076381610974565b6107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806113196033913960400191505060405180910390fd5b6107c181610d3c565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610804610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610922818373ffffffffffffffffffffffffffffffffffffffff16610f0a90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b60006001600281111561098357fe5b600260009054906101000a900460ff16600281111561099e57fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e6610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b60006002811115610a5f57fe5b600260009054906101000a900460ff166002811115610a7a57fe5b14610ad0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806113cb6032913960400191505060405180910390fd5b6001600260006101000a81548160ff02191690836002811115610aef57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600280811115610b2e57fe5b600260009054906101000a900460ff166002811115610b4957fe5b14610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061127c6038913960400191505060405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610c1e573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006002811115610cb757fe5b600260009054906101000a900460ff166002811115610cd257fe5b14610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112ee602b913960400191505060405180910390fd5b610d318161105b565b50565b600033905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7c610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eb7573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b803073ffffffffffffffffffffffffffffffffffffffff16311015610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b5050905080611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806112b4603a913960400191505060405180910390fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661109b610d34565b73ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b600034905061115e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b600080828401905083811015611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe526566756e64457363726f773a2062656e65666963696172792063616e206f6e6c79207769746864726177207768696c6520636c6f736564416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e64457363726f773a2063616e206f6e6c79206465706f736974207768696c6520616374697665436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696c65206163746976655365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726566756e6473207768696c6520616374697665a265627a7a723158207e90e52044eac4bae591559c12753cb1a3c276178e36e8ce56440d66bf7a959f64736f6c63430005110032526566756e64457363726f773a2062656e656669636961727920697320746865207a65726f206164647265737354696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d6554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d6543726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063521eb2731161007f578063b7a8807c11610059578063b7a8807c146102c5578063bffa55d5146102f0578063ec8ac4d814610341578063fc0c546a14610385576100dd565b8063521eb273146102105780637d3d652214610267578063b3f05b9714610296576100dd565b80634042b66f116100bb5780634042b66f1461017457806347535d7b1461019f5780634b6753bc146101ce5780634bb278f3146101f9576100dd565b80631515bc2b146100ef5780632c4e722e1461011e5780634019388314610149575b6100ed6100e86103dc565b6103e4565b005b3480156100fb57600080fd5b5061010461056f565b604051808215151515815260200191505060405180910390f35b34801561012a57600080fd5b5061013361057b565b6040518082815260200191505060405180910390f35b34801561015557600080fd5b5061015e610585565b6040518082815260200191505060405180910390f35b34801561018057600080fd5b5061018961058f565b6040518082815260200191505060405180910390f35b3480156101ab57600080fd5b506101b4610599565b604051808215151515815260200191505060405180910390f35b3480156101da57600080fd5b506101e36105b4565b6040518082815260200191505060405180910390f35b34801561020557600080fd5b5061020e6105be565b005b34801561021c57600080fd5b506102256106ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027357600080fd5b5061027c610719565b604051808215151515815260200191505060405180910390f35b3480156102a257600080fd5b506102ab61072d565b604051808215151515815260200191505060405180910390f35b3480156102d157600080fd5b506102da610744565b6040518082815260200191505060405180910390f35b3480156102fc57600080fd5b5061033f6004803603602081101561031357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061074e565b005b6103836004803603602081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e4565b005b34801561039157600080fd5b5061039a6108c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061048e82826108ee565b600061049982610976565b90506104b08260035461099490919063ffffffff16565b6003819055506104c08382610a1c565b8273ffffffffffffffffffffffffffffffffffffffff166104df6103dc565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361053e8383610a2a565b610546610a2e565b6105508383610af1565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600754905090565b6000600354905090565b600060045442101580156105af57506005544211155b905090565b6000600554905090565b600660009054906101000a900460ff1615610624576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806111fb6027913960400191505060405180910390fd5b61062c61056f565b61069e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055506106c1610af5565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060075461072661058f565b1015905090565b6000600660009054906101000a900460ff16905090565b6000600454905090565b61075661072d565b6107ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061126d6022913960400191505060405180910390fd5b6107b3610719565b15610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112226021913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156108aa57600080fd5b505af11580156108be573d6000803e3d6000fd5b5050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108f6610599565b610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b6109728282610c98565b5050565b600061098d60025483610d9990919063ffffffff16565b9050919050565b600080828401905083811015610a12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610a268282610e1f565b5050565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134610a756103dc565b6040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b5050505050565b5050565b610afd610719565b15610c0b57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af6549a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b50505050610c8e565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050505b610c96610e70565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611243602a913960400191505060405180910390fd5b6000811415610d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610dac5760009050610e19565b6000828402905082848281610dbd57fe5b0414610e14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111da6021913960400191505060405180910390fd5b809150505b92915050565b610e6c8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e729092919063ffffffff16565b5050565b565b610f3e838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f43565b505050565b610f628273ffffffffffffffffffffffffffffffffffffffff1661118e565b610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106110235780518252602082019150602081019050602083039250611000565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611085576040519150601f19603f3d011682016040523d82523d6000602084013e61108a565b606091505b509150915081611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156111885780806020019051602081101561112157600080fd5b8101908080519060200190929190505050611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061128f602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156111d057506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564526566756e6461626c6543726f776473616c653a20676f616c207265616368656443726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158204748194f7459edf39dcb53e49fc76d99fcb09ba6a8d9617be4f4d64d4d32bee464736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsale.json new file mode 100644 index 0000000..9268e56 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsale.json @@ -0,0 +1,760 @@ +{ + "fileName": "RefundablePostDeliveryCrowdsale.sol", + "contractName": "RefundablePostDeliveryCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"./RefundableCrowdsale.sol\";\nimport \"./PostDeliveryCrowdsale.sol\";\n\n\n/**\n * @title RefundablePostDeliveryCrowdsale\n * @dev Extension of RefundableCrowdsale contract that only delivers the tokens\n * once the crowdsale has closed and the goal met, preventing refunds to be issued\n * to token holders.\n */\ncontract RefundablePostDeliveryCrowdsale is RefundableCrowdsale, PostDeliveryCrowdsale {\n function withdrawTokens(address beneficiary) public {\n require(finalized(), \"RefundablePostDeliveryCrowdsale: not finalized\");\n require(goalReached(), \"RefundablePostDeliveryCrowdsale: goal not reached\");\n\n super.withdrawTokens(beneficiary);\n }\n}\n", + "sourcePath": "contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "withdrawTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "exportedSymbols": { + "RefundablePostDeliveryCrowdsale": [ + 2472 + ] + }, + "id": 2473, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2441, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:17" + }, + { + "absolutePath": "contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "file": "./RefundableCrowdsale.sol", + "id": 2442, + "nodeType": "ImportDirective", + "scope": 2473, + "sourceUnit": 2440, + "src": "25:35:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "file": "./PostDeliveryCrowdsale.sol", + "id": 2443, + "nodeType": "ImportDirective", + "scope": 2473, + "sourceUnit": 2308, + "src": "61:37:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2444, + "name": "RefundableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2439, + "src": "379:19:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundableCrowdsale_$2439", + "typeString": "contract RefundableCrowdsale" + } + }, + "id": 2445, + "nodeType": "InheritanceSpecifier", + "src": "379:19:17" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2446, + "name": "PostDeliveryCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2285, + "src": "400:21:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PostDeliveryCrowdsale_$2285", + "typeString": "contract PostDeliveryCrowdsale" + } + }, + "id": 2447, + "nodeType": "InheritanceSpecifier", + "src": "400:21:17" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 2285, + 2439, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title RefundablePostDeliveryCrowdsale\n@dev Extension of RefundableCrowdsale contract that only delivers the tokens\nonce the crowdsale has closed and the goal met, preventing refunds to be issued\nto token holders.", + "fullyImplemented": false, + "id": 2472, + "linearizedBaseContracts": [ + 2472, + 2285, + 2439, + 2179, + 3087, + 2119, + 13820, + 26 + ], + "name": "RefundablePostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2470, + "nodeType": "Block", + "src": "480:216:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2453, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2148, + "src": "498:9:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:11:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e6461626c65506f737444656c697665727943726f776473616c653a206e6f742066696e616c697a6564", + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "511:48:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1af7655c40e84cfc4d75af1df9e38053586c3c8d96e943e28a3358ca6ca9f38d", + "typeString": "literal_string \"RefundablePostDeliveryCrowdsale: not finalized\"" + }, + "value": "RefundablePostDeliveryCrowdsale: not finalized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1af7655c40e84cfc4d75af1df9e38053586c3c8d96e943e28a3358ca6ca9f38d", + "typeString": "literal_string \"RefundablePostDeliveryCrowdsale: not finalized\"" + } + ], + "id": 2452, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "490:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "490:70:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2457, + "nodeType": "ExpressionStatement", + "src": "490:70:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2459, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "578:11:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "578:13:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526566756e6461626c65506f737444656c697665727943726f776473616c653a20676f616c206e6f742072656163686564", + "id": 2461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "593:51:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_464ea3fda4248396cee22370aa79fe4574354566dc58c3ece8916cc4752e1383", + "typeString": "literal_string \"RefundablePostDeliveryCrowdsale: goal not reached\"" + }, + "value": "RefundablePostDeliveryCrowdsale: goal not reached" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_464ea3fda4248396cee22370aa79fe4574354566dc58c3ece8916cc4752e1383", + "typeString": "literal_string \"RefundablePostDeliveryCrowdsale: goal not reached\"" + } + ], + "id": 2458, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "570:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "570:75:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2463, + "nodeType": "ExpressionStatement", + "src": "570:75:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2467, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2449, + "src": "677:11:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2464, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14022, + "src": "656:5:17", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundablePostDeliveryCrowdsale_$2472", + "typeString": "contract super RefundablePostDeliveryCrowdsale" + } + }, + "id": 2466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdrawTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2246, + "src": "656:20:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "656:33:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2469, + "nodeType": "ExpressionStatement", + "src": "656:33:17" + } + ] + }, + "documentation": null, + "id": 2471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2449, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2471, + "src": "452:19:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:21:17" + }, + "returnParameters": { + "id": 2451, + "nodeType": "ParameterList", + "parameters": [], + "src": "480:0:17" + }, + "scope": 2472, + "src": "428:268:17", + "stateMutability": "nonpayable", + "superFunction": 2246, + "visibility": "public" + } + ], + "scope": 2473, + "src": "335:363:17" + } + ], + "src": "0:699:17" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsaleImpl.json new file mode 100644 index 0000000..5f1e6c6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/RefundablePostDeliveryCrowdsaleImpl.json @@ -0,0 +1,789 @@ +{ + "fileName": "RefundablePostDeliveryCrowdsaleImpl.sol", + "contractName": "RefundablePostDeliveryCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol\";\n\ncontract RefundablePostDeliveryCrowdsaleImpl is RefundablePostDeliveryCrowdsale {\n constructor (\n uint256 openingTime,\n uint256 closingTime,\n uint256 rate,\n address payable wallet,\n IERC20 token,\n uint256 goal\n )\n public\n Crowdsale(rate, wallet, token)\n TimedCrowdsale(openingTime, closingTime)\n RefundableCrowdsale(goal)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/RefundablePostDeliveryCrowdsaleImpl.sol", + "sourceMap": "134:468:99:-;;;220:380;8:9:-1;5:2;;;30:1;27;20:12;5:2;220:380:99;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;220:380:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;526:4;472:11;485;428:4;434:6;442:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;459:5:14;446:10;;:18;;;;;;;;;;;;;;;;;;1269:1:16;1262:4;:8;1254:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1342:8;:6;;;:8;;:::i;:::-;1325:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1325:26:16;1315:7;;:36;;;;;;;;;;;;;;;;;;1369:4;1361:5;:12;;;;1210:170;512:28:15;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;512:28:15;503:6;;:37;;;;;;;;;;;;;;;;;;220:380:99;;;;;;134:468;;3258:87:13;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;134:468:99:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "134:468:99:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;134:468:99;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1462::16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1462:75:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;428:268:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:268:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;428:268:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;1590:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;801:262:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:262:14;;;:::i;:::-;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1102:108:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1102:108:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1102:108:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2046:94:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2046:94:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;561:82:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;561:82:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1436:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1687:236:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1687:236:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1687:236:16;;;;;;;;;;;;;;;;;;;:::i;:::-;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;1462::16:-;1499:7;1525:5;;1518:12;;1462:75;:::o;3568:85:13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;428:268:17:-;498:11;:9;:11::i;:::-;490:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;578:13;:11;:13::i;:::-;570:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;656:33;677:11;656:20;:33::i;:::-;428:268;:::o;1590:89:24:-;1634:7;1660:12;;1653:19;;1590:89;:::o;801:262:14:-;847:10;;;;;;;;;;;846:11;838:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;919:11;:9;:11::i;:::-;911:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:4;978:10;;:17;;;;;;;;;;;;;;;;;;1006:15;:13;:15::i;:::-;1036:20;;;;;;;;;;801:262::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;1102:108:15:-;1159:7;1185:9;:18;1195:7;1185:18;;;;;;;;;;;;;;;;1178:25;;1102:108;;;:::o;2046:94:16:-;2090:4;2128:5;;2113:11;:9;:11::i;:::-;:20;;2106:27;;2046:94;:::o;561:82:14:-;603:4;626:10;;;;;;;;;;;619:17;;561:82;:::o;1436:89:24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;1687:236:16:-;1759:11;:9;:11::i;:::-;1751:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:13;:11;:13::i;:::-;1827:14;1819:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:7;;;;;;;;;;;:16;;;1907:8;1890:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:26:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1890:26:16;;;;1687:236;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;1599:212:15:-;1711:39;1738:11;1711:9;:22;1721:11;1711:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;1686:9;:22;1696:11;1686:22;;;;;;;;;;;;;;;:64;;;;1760:44;1783:6;;;;;;;;;;;1792:11;1760:14;:44::i;:::-;1599:212;;:::o;6964:145:13:-;;;:::o;2568:97:16:-;2612:7;;;;;;;;;;;:15;;;2634:9;2645:12;:10;:12::i;:::-;2612:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2612:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2612:46:16;;;;;2568:97::o;5728:149:13:-;;;:::o;682:356:15:-;752:11;:9;:11::i;:::-;744:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;811:14;828:9;:22;838:11;828:22;;;;;;;;;;;;;;;;811:39;;877:1;868:6;:10;860:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975:1;950:9;:22;960:11;950:22;;;;;;;;;;;;;;;:26;;;;986:6;;;;;;;;;;;:15;;;1002:7;:5;:7::i;:::-;1011:11;1024:6;986:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;986:45:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;986:45:15;;;;682:356;;:::o;2234:238:16:-;2282:13;:11;:13::i;:::-;2278:156;;;2311:7;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2311:15:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2311:15:16;;;;2340:7;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2340:29:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2340:29:16;;;;2278:156;;;2400:7;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2400:23:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:23:16;;;;2278:156;2444:21;:19;:21::i;:::-;2234:238::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;1272:98:14:-;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "goal", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "withdrawTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/RefundablePostDeliveryCrowdsaleImpl.sol", + "exportedSymbols": { + "RefundablePostDeliveryCrowdsaleImpl": [ + 7785 + ] + }, + "id": 7786, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7752, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:99" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 7753, + "nodeType": "ImportDirective", + "scope": 7786, + "sourceUnit": 10217, + "src": "25:35:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "file": "../crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "id": 7754, + "nodeType": "ImportDirective", + "scope": 7786, + "sourceUnit": 2473, + "src": "61:71:99", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 7755, + "name": "RefundablePostDeliveryCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2472, + "src": "182:31:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundablePostDeliveryCrowdsale_$2472", + "typeString": "contract RefundablePostDeliveryCrowdsale" + } + }, + "id": 7756, + "nodeType": "InheritanceSpecifier", + "src": "182:31:99" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 2285, + 2439, + 2472, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7785, + "linearizedBaseContracts": [ + 7785, + 2472, + 2285, + 2439, + 2179, + 3087, + 2119, + 13820, + 26 + ], + "name": "RefundablePostDeliveryCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 7783, + "nodeType": "Block", + "src": "536:64:99", + "statements": [] + }, + "documentation": null, + "id": 7784, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 7771, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7762, + "src": "428:4:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7772, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7764, + "src": "434:6:99", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 7773, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7766, + "src": "442:5:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 7774, + "modifierName": { + "argumentTypes": null, + "id": 7770, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "418:9:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "418:30:99" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7776, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7758, + "src": "472:11:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 7777, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7760, + "src": "485:11:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7778, + "modifierName": { + "argumentTypes": null, + "id": 7775, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "457:14:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "457:40:99" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 7780, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7768, + "src": "526:4:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7781, + "modifierName": { + "argumentTypes": null, + "id": 7779, + "name": "RefundableCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "506:19:99", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RefundableCrowdsale_$2439_$", + "typeString": "type(contract RefundableCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "506:25:99" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7769, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7758, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 7784, + "src": "242:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7757, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "242:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7760, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 7784, + "src": "271:19:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "271:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7762, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 7784, + "src": "300:12:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "300:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7764, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 7784, + "src": "322:22:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7763, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "322:15:99", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7766, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 7784, + "src": "354:12:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 7765, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "354:6:99", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 7768, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 7784, + "src": "376:12:99", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7767, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "376:7:99", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "232:162:99" + }, + "returnParameters": { + "id": 7782, + "nodeType": "ParameterList", + "parameters": [], + "src": "536:0:99" + }, + "scope": 7785, + "src": "220:380:99", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7786, + "src": "134:468:99" + } + ], + "src": "0:603:99" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162003b3538038062003b35833981810160405260c08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505080868686868660016000806101000a81548160ff0219169083151502179055506000831162000111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018062003b106025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062003aec6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050504282101562000308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062003a826033913960400191505060405180910390fd5b81811162000362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018062003ab56037913960400191505060405180910390fd5b816004819055508060058190555050506000600660006101000a81548160ff0219169083151502179055506000811162000404576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f526566756e6461626c6543726f776473616c653a20676f616c2069732030000081525060200191505060405180910390fd5b620004146200053660201b60201c565b604051620004229062000560565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000475573d6000803e3d6000fd5b50600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060078190555050604051620004cc906200056e565b604051809103906000f080158015620004e9573d6000803e3d6000fd5b50600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200057c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116608062001e0283390190565b610620806200346283390190565b611876806200058c6000396000f3fe6080604052600436106100f35760003560e01c8063521eb2731161008a578063b7a8807c11610059578063b7a8807c14610391578063bffa55d5146103bc578063ec8ac4d81461040d578063fc0c546a14610451576100f3565b8063521eb2731461027757806370a08231146102ce5780637d3d652214610333578063b3f05b9714610362576100f3565b806347535d7b116100c657806347535d7b146101b557806349df728c146101e45780634b6753bc146102355780634bb278f314610260576100f3565b80631515bc2b146101055780632c4e722e14610134578063401938831461015f5780634042b66f1461018a575b6101036100fe6104a8565b6104b0565b005b34801561011157600080fd5b5061011a61063b565b604051808215151515815260200191505060405180910390f35b34801561014057600080fd5b50610149610647565b6040518082815260200191505060405180910390f35b34801561016b57600080fd5b50610174610651565b6040518082815260200191505060405180910390f35b34801561019657600080fd5b5061019f61065b565b6040518082815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610665565b604051808215151515815260200191505060405180910390f35b3480156101f057600080fd5b506102336004803603602081101561020757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610680565b005b34801561024157600080fd5b5061024a610746565b6040518082815260200191505060405180910390f35b34801561026c57600080fd5b50610275610750565b005b34801561028357600080fd5b5061028c610881565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102da57600080fd5b5061031d600480360360208110156102f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ab565b6040518082815260200191505060405180910390f35b34801561033f57600080fd5b506103486108f4565b604051808215151515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610908565b604051808215151515815260200191505060405180910390f35b34801561039d57600080fd5b506103a661091f565b6040518082815260200191505060405180910390f35b3480156103c857600080fd5b5061040b600480360360208110156103df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610929565b005b61044f6004803603602081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104b0565b005b34801561045d57600080fd5b50610466610aa0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061055a8282610ac9565b600061056582610b51565b905061057c82600354610b6f90919063ffffffff16565b60038190555061058c8382610bf7565b8273ffffffffffffffffffffffffffffffffffffffff166105ab6104a8565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361060a8383610cbc565b610612610cc0565b61061c8383610d83565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600754905090565b6000600354905090565b6000600454421015801561067b57506005544211155b905090565b610688610908565b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806116ab602e913960400191505060405180910390fd5b6106e56108f4565b61073a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806116d96031913960400191505060405180910390fd5b61074381610d87565b50565b6000600554905090565b600660009054906101000a900460ff16156107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806117636027913960400191505060405180910390fd5b6107be61063b565b610830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550610853610fc6565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060075461090161065b565b1015905090565b6000600660009054906101000a900460ff16905090565b6000600454905090565b610931610908565b610986576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117f66022913960400191505060405180910390fd5b61098e6108f4565b156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061178a6021913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b5050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ad1610665565b610b43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b610b4d8282611169565b5050565b6000610b686002548361126a90919063ffffffff16565b9050919050565b600080828401905083811015610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610c4981600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b6f90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cb8600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826112f0565b5050565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134610d076104a8565b6040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050505050565b5050565b610d8f61063b565b610de4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117d56021913960400191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610e81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061170a6038913960400191505060405180910390fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc8610f0c610aa0565b84846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050505050565b610fce6108f4565b156110dc57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af6549a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b5050505061115f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561114657600080fd5b505af115801561115a573d6000803e3d6000fd5b505050505b611167611341565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117ab602a913960400191505060405180910390fd5b6000811415611266576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60008083141561127d57600090506112ea565b600082840290508284828161128e57fe5b04146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117426021913960400191505060405180910390fd5b809150505b92915050565b61133d8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113439092919063ffffffff16565b5050565b565b61140f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611414565b505050565b6114338273ffffffffffffffffffffffffffffffffffffffff1661165f565b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114f457805182526020820191506020810190506020830392506114d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611556576040519150601f19603f3d011682016040523d82523d6000602084013e61155b565b606091505b5091509150816115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115611659578080602001905160208110156115f257600080fd5b8101908080519060200190929190505050611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611818602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156116a157506000801b8214155b9250505091905056fe526566756e6461626c65506f737444656c697665727943726f776473616c653a206e6f742066696e616c697a6564526566756e6461626c65506f737444656c697665727943726f776473616c653a20676f616c206e6f742072656163686564506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564526566756e6461626c6543726f776473616c653a20676f616c207265616368656443726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373506f737444656c697665727943726f776473616c653a206e6f7420636c6f736564526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582022c8f22e439dc1ba55acb87cd0be00940a37af1c70f8ab5004453f6c63c23f7564736f6c63430005110032608060405234801561001057600080fd5b506040516116603803806116608339818101604052602081101561003357600080fd5b810190808051906020019092919050505060006100546101eb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611633602d913960400191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548160ff021916908360028111156101e057fe5b0217905550506101f3565b600033905090565b611431806102026000396000f3fe6080604052600436106100a75760003560e01c80638c52dc41116100645780638c52dc41146102765780639af6549a1461028d578063c19d93fb146102a4578063c6dbdf61146102dd578063e3a9db1a14610334578063f340fa0114610399576100a7565b80632348238c146100ac57806338af3eed146100fd57806343d726d61461015457806351cff8d91461016b5780636809691a146101bc578063685ca1941461020d575b600080fd5b3480156100b857600080fd5b506100fb600480360360208110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103dd565b005b34801561010957600080fd5b506101126105b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016057600080fd5b506101696105df565b005b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061075a565b005b3480156101c857600080fd5b5061020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b005b34801561021957600080fd5b5061025c6004803603602081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610974565b604051808215151515815260200191505060405180910390f35b34801561028257600080fd5b5061028b6109a6565b005b34801561029957600080fd5b506102a2610b22565b005b3480156102b057600080fd5b506102b9610c21565b604051808260028111156102c957fe5b60ff16815260200191505060405180910390f35b3480156102e957600080fd5b506102f2610c38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034057600080fd5b506103836004803603602081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b6040518082815260200191505060405180910390f35b6103db600480360360208110156103af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610caa565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661041d610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611375602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061f610d34565b73ffffffffffffffffffffffffffffffffffffffff161461068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600281111561069857fe5b600260009054906101000a900460ff1660028111156106b357fe5b14610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061134c6029913960400191505060405180910390fd5b60028060006101000a81548160ff0219169083600281111561072757fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b61076381610974565b6107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806113196033913960400191505060405180910390fd5b6107c181610d3c565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610804610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610922818373ffffffffffffffffffffffffffffffffffffffff16610f0a90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b60006001600281111561098357fe5b600260009054906101000a900460ff16600281111561099e57fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e6610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b60006002811115610a5f57fe5b600260009054906101000a900460ff166002811115610a7a57fe5b14610ad0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806113cb6032913960400191505060405180910390fd5b6001600260006101000a81548160ff02191690836002811115610aef57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600280811115610b2e57fe5b600260009054906101000a900460ff166002811115610b4957fe5b14610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061127c6038913960400191505060405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610c1e573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006002811115610cb757fe5b600260009054906101000a900460ff166002811115610cd257fe5b14610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112ee602b913960400191505060405180910390fd5b610d318161105b565b50565b600033905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7c610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eb7573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b803073ffffffffffffffffffffffffffffffffffffffff16311015610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b5050905080611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806112b4603a913960400191505060405180910390fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661109b610d34565b73ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b600034905061115e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b600080828401905083811015611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe526566756e64457363726f773a2062656e65666963696172792063616e206f6e6c79207769746864726177207768696c6520636c6f736564416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e64457363726f773a2063616e206f6e6c79206465706f736974207768696c6520616374697665436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696c65206163746976655365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726566756e6473207768696c6520616374697665a265627a7a723158207e90e52044eac4bae591559c12753cb1a3c276178e36e8ce56440d66bf7a959f64736f6c63430005110032526566756e64457363726f773a2062656e656669636961727920697320746865207a65726f2061646472657373608060405260006100146100bf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1506100c7565b600033905090565b61054a806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632348238c14610046578063beabacc81461008a578063c6dbdf61146100f8575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610142565b005b6100f6600480360360608110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061031a565b005b61010061048e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166101826104b7565b73ffffffffffffffffffffffffffffffffffffffff16146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806104c0602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661035a6104b7565b73ffffffffffffffffffffffffffffffffffffffff16146103c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b505050506040513d602081101561047757600080fd5b810190808051906020019092919050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003390509056fe5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74a265627a7a723158200814f9815547e5df2957c23308b9b337c731c16ad59cdfa3683e348e8f4b50fa64736f6c6343000511003254696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d6554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d6543726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100f35760003560e01c8063521eb2731161008a578063b7a8807c11610059578063b7a8807c14610391578063bffa55d5146103bc578063ec8ac4d81461040d578063fc0c546a14610451576100f3565b8063521eb2731461027757806370a08231146102ce5780637d3d652214610333578063b3f05b9714610362576100f3565b806347535d7b116100c657806347535d7b146101b557806349df728c146101e45780634b6753bc146102355780634bb278f314610260576100f3565b80631515bc2b146101055780632c4e722e14610134578063401938831461015f5780634042b66f1461018a575b6101036100fe6104a8565b6104b0565b005b34801561011157600080fd5b5061011a61063b565b604051808215151515815260200191505060405180910390f35b34801561014057600080fd5b50610149610647565b6040518082815260200191505060405180910390f35b34801561016b57600080fd5b50610174610651565b6040518082815260200191505060405180910390f35b34801561019657600080fd5b5061019f61065b565b6040518082815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610665565b604051808215151515815260200191505060405180910390f35b3480156101f057600080fd5b506102336004803603602081101561020757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610680565b005b34801561024157600080fd5b5061024a610746565b6040518082815260200191505060405180910390f35b34801561026c57600080fd5b50610275610750565b005b34801561028357600080fd5b5061028c610881565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102da57600080fd5b5061031d600480360360208110156102f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ab565b6040518082815260200191505060405180910390f35b34801561033f57600080fd5b506103486108f4565b604051808215151515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610908565b604051808215151515815260200191505060405180910390f35b34801561039d57600080fd5b506103a661091f565b6040518082815260200191505060405180910390f35b3480156103c857600080fd5b5061040b600480360360208110156103df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610929565b005b61044f6004803603602081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104b0565b005b34801561045d57600080fd5b50610466610aa0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061055a8282610ac9565b600061056582610b51565b905061057c82600354610b6f90919063ffffffff16565b60038190555061058c8382610bf7565b8273ffffffffffffffffffffffffffffffffffffffff166105ab6104a8565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361060a8383610cbc565b610612610cc0565b61061c8383610d83565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600754905090565b6000600354905090565b6000600454421015801561067b57506005544211155b905090565b610688610908565b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806116ab602e913960400191505060405180910390fd5b6106e56108f4565b61073a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806116d96031913960400191505060405180910390fd5b61074381610d87565b50565b6000600554905090565b600660009054906101000a900460ff16156107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806117636027913960400191505060405180910390fd5b6107be61063b565b610830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550610853610fc6565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060075461090161065b565b1015905090565b6000600660009054906101000a900460ff16905090565b6000600454905090565b610931610908565b610986576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117f66022913960400191505060405180910390fd5b61098e6108f4565b156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061178a6021913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b5050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ad1610665565b610b43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b610b4d8282611169565b5050565b6000610b686002548361126a90919063ffffffff16565b9050919050565b600080828401905083811015610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610c4981600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b6f90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cb8600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826112f0565b5050565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134610d076104a8565b6040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610d6857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b5050505050565b5050565b610d8f61063b565b610de4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117d56021913960400191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610e81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061170a6038913960400191505060405180910390fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc8610f0c610aa0565b84846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050505050565b610fce6108f4565b156110dc57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af6549a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b5050505061115f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561114657600080fd5b505af115801561115a573d6000803e3d6000fd5b505050505b611167611341565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806117ab602a913960400191505060405180910390fd5b6000811415611266576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b60008083141561127d57600090506112ea565b600082840290508284828161128e57fe5b04146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117426021913960400191505060405180910390fd5b809150505b92915050565b61133d8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113439092919063ffffffff16565b5050565b565b61140f838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611414565b505050565b6114338273ffffffffffffffffffffffffffffffffffffffff1661165f565b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106114f457805182526020820191506020810190506020830392506114d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611556576040519150601f19603f3d011682016040523d82523d6000602084013e61155b565b606091505b5091509150816115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115611659578080602001905160208110156115f257600080fd5b8101908080519060200190929190505050611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611818602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156116a157506000801b8214155b9250505091905056fe526566756e6461626c65506f737444656c697665727943726f776473616c653a206e6f742066696e616c697a6564526566756e6461626c65506f737444656c697665727943726f776473616c653a20676f616c206e6f742072656163686564506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564526566756e6461626c6543726f776473616c653a20676f616c207265616368656443726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373506f737444656c697665727943726f776473616c653a206e6f7420636c6f736564526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582022c8f22e439dc1ba55acb87cd0be00940a37af1c70f8ab5004453f6c63c23f7564736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Roles.json b/node_modules/@openzeppelin/contracts/build/contracts/Roles.json new file mode 100644 index 0000000..bb75eef --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Roles.json @@ -0,0 +1,1095 @@ +{ + "fileName": "Roles.sol", + "contractName": "Roles", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Roles\n * @dev Library for managing addresses assigned to a Role.\n */\nlibrary Roles {\n struct Role {\n mapping (address => bool) bearer;\n }\n\n /**\n * @dev Give an account access to this role.\n */\n function add(Role storage role, address account) internal {\n require(!has(role, account), \"Roles: account already has role\");\n role.bearer[account] = true;\n }\n\n /**\n * @dev Remove an account's access to this role.\n */\n function remove(Role storage role, address account) internal {\n require(has(role, account), \"Roles: account does not have role\");\n role.bearer[account] = false;\n }\n\n /**\n * @dev Check if an account has this role.\n * @return bool\n */\n function has(Role storage role, address account) internal view returns (bool) {\n require(account != address(0), \"Roles: account is the zero address\");\n return role.bearer[account];\n }\n}\n", + "sourcePath": "contracts/access/Roles.sol", + "sourceMap": "108:873:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", + "deployedSourceMap": "108:873:6:-;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 1194 + ] + }, + "id": 1195, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1115, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 1194, + "linearizedBaseContracts": [ + 1194 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 1120, + "members": [ + { + "constant": false, + "id": 1119, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 1120, + "src": "150:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1118, + "keyType": { + "id": 1116, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "150:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1117, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "170:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 1194, + "src": "128:61:6", + "visibility": "public" + }, + { + "body": { + "id": 1144, + "nodeType": "Block", + "src": "318:117:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "336:19:6", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1129, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1122, + "src": "341:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 1130, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "347:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1128, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "337:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "337:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526f6c65733a206163636f756e7420616c72656164792068617320726f6c65", + "id": 1133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "357:33:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a", + "typeString": "literal_string \"Roles: account already has role\"" + }, + "value": "Roles: account already has role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a", + "typeString": "literal_string \"Roles: account already has role\"" + } + ], + "id": 1127, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "328:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "328:63:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1135, + "nodeType": "ExpressionStatement", + "src": "328:63:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1136, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1122, + "src": "401:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 1139, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1119, + "src": "401:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1140, + "indexExpression": { + "argumentTypes": null, + "id": 1138, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "413:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "401:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "424:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "401:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1143, + "nodeType": "ExpressionStatement", + "src": "401:27:6" + } + ] + }, + "documentation": "@dev Give an account access to this role.", + "id": 1145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1122, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1145, + "src": "273:17:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1121, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "273:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1124, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1145, + "src": "292:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "292:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "272:36:6" + }, + "returnParameters": { + "id": 1126, + "nodeType": "ParameterList", + "parameters": [], + "src": "318:0:6" + }, + "scope": 1194, + "src": "260:175:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1168, + "nodeType": "Block", + "src": "571:119:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1154, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1147, + "src": "593:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 1155, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1149, + "src": "599:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1153, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1193, + "src": "589:3:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "589:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65", + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "609:35:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257", + "typeString": "literal_string \"Roles: account does not have role\"" + }, + "value": "Roles: account does not have role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257", + "typeString": "literal_string \"Roles: account does not have role\"" + } + ], + "id": 1152, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "581:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "581:64:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1159, + "nodeType": "ExpressionStatement", + "src": "581:64:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1160, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1147, + "src": "655:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 1163, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1119, + "src": "655:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1164, + "indexExpression": { + "argumentTypes": null, + "id": 1162, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1149, + "src": "667:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "655:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "678:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "655:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1167, + "nodeType": "ExpressionStatement", + "src": "655:28:6" + } + ] + }, + "documentation": "@dev Remove an account's access to this role.", + "id": 1169, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1147, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1169, + "src": "526:17:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1146, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "526:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1149, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1169, + "src": "545:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "545:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "525:36:6" + }, + "returnParameters": { + "id": 1151, + "nodeType": "ParameterList", + "parameters": [], + "src": "571:0:6" + }, + "scope": 1194, + "src": "510:180:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1192, + "nodeType": "Block", + "src": "857:122:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1179, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "875:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "894:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "886:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "886:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "875:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "898:36:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f", + "typeString": "literal_string \"Roles: account is the zero address\"" + }, + "value": "Roles: account is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f", + "typeString": "literal_string \"Roles: account is the zero address\"" + } + ], + "id": 1178, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "867:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "867:68:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "867:68:6" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1187, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1171, + "src": "952:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 1188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1119, + "src": "952:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1190, + "indexExpression": { + "argumentTypes": null, + "id": 1189, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1173, + "src": "964:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "952:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1177, + "id": 1191, + "nodeType": "Return", + "src": "945:27:6" + } + ] + }, + "documentation": "@dev Check if an account has this role.\n@return bool", + "id": 1193, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1171, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "792:17:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1170, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "792:4:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1173, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "811:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1172, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "811:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "791:36:6" + }, + "returnParameters": { + "id": 1177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1176, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "851:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1175, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "851:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "850:6:6" + }, + "scope": 1194, + "src": "779:200:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1195, + "src": "108:873:6" + } + ], + "src": "0:982:6" + }, + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820227d3a93f91007eee5756c17a4201afa9e61a12046e0bf4509202b46579a881064736f6c63430005110032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820227d3a93f91007eee5756c17a4201afa9e61a12046e0bf4509202b46579a881064736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/RolesMock.json b/node_modules/@openzeppelin/contracts/build/contracts/RolesMock.json new file mode 100644 index 0000000..da9924e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/RolesMock.json @@ -0,0 +1,602 @@ +{ + "fileName": "RolesMock.sol", + "contractName": "RolesMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/Roles.sol\";\n\ncontract RolesMock {\n using Roles for Roles.Role;\n\n Roles.Role private dummyRole;\n\n function add(address account) public {\n dummyRole.add(account);\n }\n\n function remove(address account) public {\n dummyRole.remove(account);\n }\n\n function has(address account) public view returns (bool) {\n return dummyRole.has(account);\n }\n}\n", + "sourcePath": "contracts/mocks/RolesMock.sol", + "sourceMap": "56:368:100:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56:368:100;;;;;;;", + "deployedSourceMap": "56:368:100:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;56:368:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;149:76;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;149:76:100;;;;;;;;;;;;;;;;;;;:::i;:::-;;319:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;319:103:100;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;231:82;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;231:82:100;;;;;;;;;;;;;;;;;;;:::i;:::-;;149:76;196:22;210:7;196:9;:13;;:22;;;;:::i;:::-;149:76;:::o;319:103::-;370:4;393:22;407:7;393:9;:13;;:22;;;;:::i;:::-;386:29;;319:103;;;:::o;231:82::-;281:25;298:7;281:9;:16;;:25;;;;:::i;:::-;231:82;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "add", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "has", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "remove", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/RolesMock.sol", + "exportedSymbols": { + "RolesMock": [ + 7831 + ] + }, + "id": 7832, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7787, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:100" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../access/Roles.sol", + "id": 7788, + "nodeType": "ImportDirective", + "scope": 7832, + "sourceUnit": 1195, + "src": "25:29:100", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 7831, + "linearizedBaseContracts": [ + 7831 + ], + "name": "RolesMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 7791, + "libraryName": { + "contractScope": null, + "id": 7789, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "87:5:100", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "81:27:100", + "typeName": { + "contractScope": null, + "id": 7790, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "97:10:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "constant": false, + "id": 7793, + "name": "dummyRole", + "nodeType": "VariableDeclaration", + "scope": 7831, + "src": "114:28:100", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 7792, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "114:10:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 7804, + "nodeType": "Block", + "src": "186:39:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7801, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7795, + "src": "210:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 7798, + "name": "dummyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7793, + "src": "196:9:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 7800, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "196:13:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 7802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "196:22:100", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7803, + "nodeType": "ExpressionStatement", + "src": "196:22:100" + } + ] + }, + "documentation": null, + "id": 7805, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7795, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7805, + "src": "162:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "162:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "161:17:100" + }, + "returnParameters": { + "id": 7797, + "nodeType": "ParameterList", + "parameters": [], + "src": "186:0:100" + }, + "scope": 7831, + "src": "149:76:100", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 7816, + "nodeType": "Block", + "src": "271:42:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7813, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7807, + "src": "298:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 7810, + "name": "dummyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7793, + "src": "281:9:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 7812, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "281:16:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 7814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "281:25:100", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7815, + "nodeType": "ExpressionStatement", + "src": "281:25:100" + } + ] + }, + "documentation": null, + "id": 7817, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7807, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7817, + "src": "247:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "247:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "246:17:100" + }, + "returnParameters": { + "id": 7809, + "nodeType": "ParameterList", + "parameters": [], + "src": "271:0:100" + }, + "scope": 7831, + "src": "231:82:100", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 7829, + "nodeType": "Block", + "src": "376:46:100", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7826, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7819, + "src": "407:7:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 7824, + "name": "dummyRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7793, + "src": "393:9:100", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 7825, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "393:13:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 7827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "393:22:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7823, + "id": 7828, + "nodeType": "Return", + "src": "386:29:100" + } + ] + }, + "documentation": null, + "id": 7830, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7819, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 7830, + "src": "332:15:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7818, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "332:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "331:17:100" + }, + "returnParameters": { + "id": 7823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7822, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 7830, + "src": "370:4:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7821, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "370:4:100", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "369:6:100" + }, + "scope": 7831, + "src": "319:103:100", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 7832, + "src": "56:368:100" + } + ], + "src": "0:425:100" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610463806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a3b0a4f1461004657806321887c3d1461008a57806329092d0e146100e6575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012a565b005b6100cc600480360360208110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610141565b604051808215151515815260200191505060405180910390f35b610128600480360360208110156100fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061015e565b005b61013e81600061017590919063ffffffff16565b50565b600061015782600061025090919063ffffffff16565b9050919050565b61017281600061032e90919063ffffffff16565b50565b61017f8282610250565b156101f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061040d6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6103388282610250565b61038d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806103ec6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a7231582082e74a4af6e0f8e739cd356f8feed0ca38e29e8e2abd974c96ccd59ed0a99b6664736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a3b0a4f1461004657806321887c3d1461008a57806329092d0e146100e6575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012a565b005b6100cc600480360360208110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610141565b604051808215151515815260200191505060405180910390f35b610128600480360360208110156100fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061015e565b005b61013e81600061017590919063ffffffff16565b50565b600061015782600061025090919063ffffffff16565b9050919050565b61017281600061032e90919063ffffffff16565b50565b61017f8282610250565b156101f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061040d6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6103388282610250565b61038d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806103ec6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a7231582082e74a4af6e0f8e739cd356f8feed0ca38e29e8e2abd974c96ccd59ed0a99b6664736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SafeCast.json b/node_modules/@openzeppelin/contracts/build/contracts/SafeCast.json new file mode 100644 index 0000000..4fcc2c6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SafeCast.json @@ -0,0 +1,4457 @@ +{ + "fileName": "SafeCast.sol", + "contractName": "SafeCast", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCast {\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n require(value < 2**128, \"SafeCast: value doesn\\'t fit in 128 bits\");\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n require(value < 2**64, \"SafeCast: value doesn\\'t fit in 64 bits\");\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n require(value < 2**32, \"SafeCast: value doesn\\'t fit in 32 bits\");\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n require(value < 2**16, \"SafeCast: value doesn\\'t fit in 16 bits\");\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits.\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n require(value < 2**8, \"SafeCast: value doesn\\'t fit in 8 bits\");\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n require(value >= 0, \"SafeCast: value must be positive\");\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v3.1._\n */\n function toInt128(int256 value) internal pure returns (int128) {\n require(value >= -2**127 && value < 2**127, \"SafeCast: value doesn\\'t fit in 128 bits\");\n return int128(value);\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v3.1._\n */\n function toInt64(int256 value) internal pure returns (int64) {\n require(value >= -2**63 && value < 2**63, \"SafeCast: value doesn\\'t fit in 64 bits\");\n return int64(value);\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v3.1._\n */\n function toInt32(int256 value) internal pure returns (int32) {\n require(value >= -2**31 && value < 2**31, \"SafeCast: value doesn\\'t fit in 32 bits\");\n return int32(value);\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v3.1._\n */\n function toInt16(int256 value) internal pure returns (int16) {\n require(value >= -2**15 && value < 2**15, \"SafeCast: value doesn\\'t fit in 16 bits\");\n return int16(value);\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits.\n *\n * _Available since v3.1._\n */\n function toInt8(int256 value) internal pure returns (int8) {\n require(value >= -2**7 && value < 2**7, \"SafeCast: value doesn\\'t fit in 8 bits\");\n return int8(value);\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n require(value < 2**255, \"SafeCast: value doesn't fit in an int256\");\n return int256(value);\n }\n}\n", + "sourcePath": "contracts/utils/SafeCast.sol", + "sourceMap": "769:5765:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "769:5765:112:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/SafeCast.sol", + "exportedSymbols": { + "SafeCast": [ + 14350 + ] + }, + "id": 14351, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 14039, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:112" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 14040, + "nodeType": "StructuredDocumentation", + "src": "59:709:112", + "text": " @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting." + }, + "fullyImplemented": true, + "id": 14350, + "linearizedBaseContracts": [ + 14350 + ], + "name": "SafeCast", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 14062, + "nodeType": "Block", + "src": "1144:115:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14049, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14043, + "src": "1162:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 14052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1170:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313238", + "id": 14051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1173:3:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "1170:6:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "src": "1162:14:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473", + "id": 14054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1178:42:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c", + "typeString": "literal_string \"SafeCast: value doesn't fit in 128 bits\"" + }, + "value": "SafeCast: value doesn't fit in 128 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c", + "typeString": "literal_string \"SafeCast: value doesn't fit in 128 bits\"" + } + ], + "id": 14048, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1154:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1154:67:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14056, + "nodeType": "ExpressionStatement", + "src": "1154:67:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14059, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14043, + "src": "1246:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1238:7:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 14057, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1238:7:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1238:14:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 14047, + "id": 14061, + "nodeType": "Return", + "src": "1231:21:112" + } + ] + }, + "documentation": { + "id": 14041, + "nodeType": "StructuredDocumentation", + "src": "793:280:112", + "text": " @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits" + }, + "id": 14063, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14043, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14063, + "src": "1097:13:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1097:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1096:15:112" + }, + "returnParameters": { + "id": 14047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14046, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14063, + "src": "1135:7:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 14045, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1135:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1134:9:112" + }, + "scope": 14350, + "src": "1078:181:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14085, + "nodeType": "Block", + "src": "1610:112:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14072, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14066, + "src": "1628:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + }, + "id": 14075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1636:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3634", + "id": 14074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1639:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "1636:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + }, + "src": "1628:13:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473", + "id": 14077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1643:41:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939", + "typeString": "literal_string \"SafeCast: value doesn't fit in 64 bits\"" + }, + "value": "SafeCast: value doesn't fit in 64 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939", + "typeString": "literal_string \"SafeCast: value doesn't fit in 64 bits\"" + } + ], + "id": 14071, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1620:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1620:65:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14079, + "nodeType": "ExpressionStatement", + "src": "1620:65:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14082, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14066, + "src": "1709:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1702:6:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 14080, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1702:6:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1702:13:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 14070, + "id": 14084, + "nodeType": "Return", + "src": "1695:20:112" + } + ] + }, + "documentation": { + "id": 14064, + "nodeType": "StructuredDocumentation", + "src": "1265:276:112", + "text": " @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits" + }, + "id": 14086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint64", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14066, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14086, + "src": "1564:13:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1564:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1563:15:112" + }, + "returnParameters": { + "id": 14070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14069, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14086, + "src": "1602:6:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 14068, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1602:6:112", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1601:8:112" + }, + "scope": 14350, + "src": "1546:176:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14108, + "nodeType": "Block", + "src": "2073:112:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14095, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14089, + "src": "2091:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 14098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2099:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 14097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2102:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "2099:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "src": "2091:13:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473", + "id": 14100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2106:41:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19", + "typeString": "literal_string \"SafeCast: value doesn't fit in 32 bits\"" + }, + "value": "SafeCast: value doesn't fit in 32 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19", + "typeString": "literal_string \"SafeCast: value doesn't fit in 32 bits\"" + } + ], + "id": 14094, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2083:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2083:65:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14102, + "nodeType": "ExpressionStatement", + "src": "2083:65:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14105, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14089, + "src": "2172:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2165:6:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 14103, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2165:6:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2165:13:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 14093, + "id": 14107, + "nodeType": "Return", + "src": "2158:20:112" + } + ] + }, + "documentation": { + "id": 14087, + "nodeType": "StructuredDocumentation", + "src": "1728:276:112", + "text": " @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits" + }, + "id": 14109, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint32", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14089, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14109, + "src": "2027:13:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2027:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2026:15:112" + }, + "returnParameters": { + "id": 14093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14092, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14109, + "src": "2065:6:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14091, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2065:6:112", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2064:8:112" + }, + "scope": 14350, + "src": "2009:176:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14131, + "nodeType": "Block", + "src": "2536:112:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14118, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14112, + "src": "2554:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + }, + "id": 14121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3136", + "id": 14120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2565:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "2562:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + }, + "src": "2554:13:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473", + "id": 14123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2569:41:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033", + "typeString": "literal_string \"SafeCast: value doesn't fit in 16 bits\"" + }, + "value": "SafeCast: value doesn't fit in 16 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033", + "typeString": "literal_string \"SafeCast: value doesn't fit in 16 bits\"" + } + ], + "id": 14117, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2546:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2546:65:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14125, + "nodeType": "ExpressionStatement", + "src": "2546:65:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14128, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14112, + "src": "2635:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2628:6:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 14126, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2628:6:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2628:13:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 14116, + "id": 14130, + "nodeType": "Return", + "src": "2621:20:112" + } + ] + }, + "documentation": { + "id": 14110, + "nodeType": "StructuredDocumentation", + "src": "2191:276:112", + "text": " @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits" + }, + "id": 14132, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint16", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14112, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14132, + "src": "2490:13:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14111, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2490:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2489:15:112" + }, + "returnParameters": { + "id": 14116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14115, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14132, + "src": "2528:6:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14114, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2528:6:112", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2527:8:112" + }, + "scope": 14350, + "src": "2472:176:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14154, + "nodeType": "Block", + "src": "2994:109:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14141, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14135, + "src": "3012:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 14144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3020:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 14143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3023:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "3020:4:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "3012:12:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473", + "id": 14146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3026:40:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1", + "typeString": "literal_string \"SafeCast: value doesn't fit in 8 bits\"" + }, + "value": "SafeCast: value doesn't fit in 8 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1", + "typeString": "literal_string \"SafeCast: value doesn't fit in 8 bits\"" + } + ], + "id": 14140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3004:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3004:63:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14148, + "nodeType": "ExpressionStatement", + "src": "3004:63:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14151, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14135, + "src": "3090:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3084:5:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 14149, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3084:5:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3084:12:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 14139, + "id": 14153, + "nodeType": "Return", + "src": "3077:19:112" + } + ] + }, + "documentation": { + "id": 14133, + "nodeType": "StructuredDocumentation", + "src": "2654:273:112", + "text": " @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits." + }, + "id": 14155, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint8", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14135, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14155, + "src": "2949:13:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14134, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2949:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2948:15:112" + }, + "returnParameters": { + "id": 14139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14138, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14155, + "src": "2987:5:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 14137, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2987:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2986:7:112" + }, + "scope": 14350, + "src": "2932:171:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14175, + "nodeType": "Block", + "src": "3339:103:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14164, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14158, + "src": "3357:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 14165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3366:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3357:10:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c7565206d75737420626520706f736974697665", + "id": 14167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3369:34:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807", + "typeString": "literal_string \"SafeCast: value must be positive\"" + }, + "value": "SafeCast: value must be positive" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807", + "typeString": "literal_string \"SafeCast: value must be positive\"" + } + ], + "id": 14163, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3349:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3349:55:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14169, + "nodeType": "ExpressionStatement", + "src": "3349:55:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14172, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14158, + "src": "3429:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 14171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3421:7:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 14170, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3421:7:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3421:14:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 14162, + "id": 14174, + "nodeType": "Return", + "src": "3414:21:112" + } + ] + }, + "documentation": { + "id": 14156, + "nodeType": "StructuredDocumentation", + "src": "3109:160:112", + "text": " @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0." + }, + "id": 14176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint256", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14158, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14176, + "src": "3293:12:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14157, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3293:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3292:14:112" + }, + "returnParameters": { + "id": 14162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14161, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14176, + "src": "3330:7:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3330:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3329:9:112" + }, + "scope": 14350, + "src": "3274:168:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14205, + "nodeType": "Block", + "src": "3866:134:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14185, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14179, + "src": "3884:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_170141183460469231731687303715884105728_by_1", + "typeString": "int_const -170...(32 digits omitted)...5728" + }, + "id": 14189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "3893:2:112", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3894:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313237", + "id": 14188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3897:3:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_127_by_1", + "typeString": "int_const 127" + }, + "value": "127" + }, + "src": "3893:7:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_170141183460469231731687303715884105728_by_1", + "typeString": "int_const -170...(32 digits omitted)...5728" + } + }, + "src": "3884:16:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14191, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14179, + "src": "3904:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_170141183460469231731687303715884105728_by_1", + "typeString": "int_const 1701...(31 digits omitted)...5728" + }, + "id": 14194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3912:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313237", + "id": 14193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3915:3:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_127_by_1", + "typeString": "int_const 127" + }, + "value": "127" + }, + "src": "3912:6:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_170141183460469231731687303715884105728_by_1", + "typeString": "int_const 1701...(31 digits omitted)...5728" + } + }, + "src": "3904:14:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3884:34:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473", + "id": 14197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3920:42:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c", + "typeString": "literal_string \"SafeCast: value doesn't fit in 128 bits\"" + }, + "value": "SafeCast: value doesn't fit in 128 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c", + "typeString": "literal_string \"SafeCast: value doesn't fit in 128 bits\"" + } + ], + "id": 14184, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3876:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3876:87:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14199, + "nodeType": "ExpressionStatement", + "src": "3876:87:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14202, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14179, + "src": "3987:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 14201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3980:6:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int128_$", + "typeString": "type(int128)" + }, + "typeName": { + "id": 14200, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "3980:6:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3980:13:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "functionReturnParameters": 14183, + "id": 14204, + "nodeType": "Return", + "src": "3973:20:112" + } + ] + }, + "documentation": { + "id": 14177, + "nodeType": "StructuredDocumentation", + "src": "3448:350:112", + "text": " @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v3.1._" + }, + "id": 14206, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt128", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14179, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14206, + "src": "3821:12:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14178, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3821:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3820:14:112" + }, + "returnParameters": { + "id": 14183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14182, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14206, + "src": "3858:6:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 14181, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "3858:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3857:8:112" + }, + "scope": 14350, + "src": "3803:197:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14235, + "nodeType": "Block", + "src": "4417:130:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14215, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14209, + "src": "4435:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_9223372036854775808_by_1", + "typeString": "int_const -9223372036854775808" + }, + "id": 14219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4444:2:112", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4445:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3633", + "id": 14218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4448:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_63_by_1", + "typeString": "int_const 63" + }, + "value": "63" + }, + "src": "4444:6:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_9223372036854775808_by_1", + "typeString": "int_const -9223372036854775808" + } + }, + "src": "4435:15:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14221, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14209, + "src": "4454:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_9223372036854775808_by_1", + "typeString": "int_const 9223372036854775808" + }, + "id": 14224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4462:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3633", + "id": 14223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4465:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_63_by_1", + "typeString": "int_const 63" + }, + "value": "63" + }, + "src": "4462:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_9223372036854775808_by_1", + "typeString": "int_const 9223372036854775808" + } + }, + "src": "4454:13:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4435:32:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473", + "id": 14227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4469:41:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939", + "typeString": "literal_string \"SafeCast: value doesn't fit in 64 bits\"" + }, + "value": "SafeCast: value doesn't fit in 64 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939", + "typeString": "literal_string \"SafeCast: value doesn't fit in 64 bits\"" + } + ], + "id": 14214, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4427:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4427:84:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14229, + "nodeType": "ExpressionStatement", + "src": "4427:84:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14232, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14209, + "src": "4534:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 14231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4528:5:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int64_$", + "typeString": "type(int64)" + }, + "typeName": { + "id": 14230, + "name": "int64", + "nodeType": "ElementaryTypeName", + "src": "4528:5:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4528:12:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "functionReturnParameters": 14213, + "id": 14234, + "nodeType": "Return", + "src": "4521:19:112" + } + ] + }, + "documentation": { + "id": 14207, + "nodeType": "StructuredDocumentation", + "src": "4006:345:112", + "text": " @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v3.1._" + }, + "id": 14236, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt64", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14209, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14236, + "src": "4373:12:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14208, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "4373:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4372:14:112" + }, + "returnParameters": { + "id": 14213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14212, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14236, + "src": "4410:5:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + }, + "typeName": { + "id": 14211, + "name": "int64", + "nodeType": "ElementaryTypeName", + "src": "4410:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4409:7:112" + }, + "scope": 14350, + "src": "4356:191:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14265, + "nodeType": "Block", + "src": "4964:130:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14245, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14239, + "src": "4982:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_2147483648_by_1", + "typeString": "int_const -2147483648" + }, + "id": 14249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4991:2:112", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4992:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3331", + "id": 14248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4995:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_31_by_1", + "typeString": "int_const 31" + }, + "value": "31" + }, + "src": "4991:6:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2147483648_by_1", + "typeString": "int_const -2147483648" + } + }, + "src": "4982:15:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14251, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14239, + "src": "5001:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_2147483648_by_1", + "typeString": "int_const 2147483648" + }, + "id": 14254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5009:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3331", + "id": 14253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5012:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_31_by_1", + "typeString": "int_const 31" + }, + "value": "31" + }, + "src": "5009:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_2147483648_by_1", + "typeString": "int_const 2147483648" + } + }, + "src": "5001:13:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4982:32:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473", + "id": 14257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5016:41:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19", + "typeString": "literal_string \"SafeCast: value doesn't fit in 32 bits\"" + }, + "value": "SafeCast: value doesn't fit in 32 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19", + "typeString": "literal_string \"SafeCast: value doesn't fit in 32 bits\"" + } + ], + "id": 14244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4974:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4974:84:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14259, + "nodeType": "ExpressionStatement", + "src": "4974:84:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14262, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14239, + "src": "5081:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 14261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5075:5:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int32_$", + "typeString": "type(int32)" + }, + "typeName": { + "id": 14260, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "5075:5:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5075:12:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "functionReturnParameters": 14243, + "id": 14264, + "nodeType": "Return", + "src": "5068:19:112" + } + ] + }, + "documentation": { + "id": 14237, + "nodeType": "StructuredDocumentation", + "src": "4553:345:112", + "text": " @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v3.1._" + }, + "id": 14266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt32", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14239, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14266, + "src": "4920:12:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14238, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "4920:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4919:14:112" + }, + "returnParameters": { + "id": 14243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14242, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14266, + "src": "4957:5:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + }, + "typeName": { + "id": 14241, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "4957:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4956:7:112" + }, + "scope": 14350, + "src": "4903:191:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14295, + "nodeType": "Block", + "src": "5511:130:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14275, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14269, + "src": "5529:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_32768_by_1", + "typeString": "int_const -32768" + }, + "id": 14279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "5538:2:112", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5539:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3135", + "id": 14278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5542:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "15" + }, + "src": "5538:6:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_32768_by_1", + "typeString": "int_const -32768" + } + }, + "src": "5529:15:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14281, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14269, + "src": "5548:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_32768_by_1", + "typeString": "int_const 32768" + }, + "id": 14284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5556:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3135", + "id": 14283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5559:2:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "15" + }, + "src": "5556:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_32768_by_1", + "typeString": "int_const 32768" + } + }, + "src": "5548:13:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5529:32:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473", + "id": 14287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5563:41:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033", + "typeString": "literal_string \"SafeCast: value doesn't fit in 16 bits\"" + }, + "value": "SafeCast: value doesn't fit in 16 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033", + "typeString": "literal_string \"SafeCast: value doesn't fit in 16 bits\"" + } + ], + "id": 14274, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5521:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5521:84:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14289, + "nodeType": "ExpressionStatement", + "src": "5521:84:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14292, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14269, + "src": "5628:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 14291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5622:5:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int16_$", + "typeString": "type(int16)" + }, + "typeName": { + "id": 14290, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "5622:5:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5622:12:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "functionReturnParameters": 14273, + "id": 14294, + "nodeType": "Return", + "src": "5615:19:112" + } + ] + }, + "documentation": { + "id": 14267, + "nodeType": "StructuredDocumentation", + "src": "5100:345:112", + "text": " @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v3.1._" + }, + "id": 14296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt16", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14269, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14296, + "src": "5467:12:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14268, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "5467:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5466:14:112" + }, + "returnParameters": { + "id": 14273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14272, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14296, + "src": "5504:5:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "typeName": { + "id": 14271, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "5504:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5503:7:112" + }, + "scope": 14350, + "src": "5450:191:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14325, + "nodeType": "Block", + "src": "6052:126:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14305, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14299, + "src": "6070:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_128_by_1", + "typeString": "int_const -128" + }, + "id": 14309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "6079:2:112", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6080:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "37", + "id": 14308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6083:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "src": "6079:5:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_128_by_1", + "typeString": "int_const -128" + } + }, + "src": "6070:14:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 14315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14311, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14299, + "src": "6088:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "id": 14314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6096:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "37", + "id": 14313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6099:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "src": "6096:4:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + } + }, + "src": "6088:12:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6070:30:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473", + "id": 14317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6102:40:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1", + "typeString": "literal_string \"SafeCast: value doesn't fit in 8 bits\"" + }, + "value": "SafeCast: value doesn't fit in 8 bits" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1", + "typeString": "literal_string \"SafeCast: value doesn't fit in 8 bits\"" + } + ], + "id": 14304, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6062:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6062:81:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14319, + "nodeType": "ExpressionStatement", + "src": "6062:81:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14322, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14299, + "src": "6165:5:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 14321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6160:4:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int8_$", + "typeString": "type(int8)" + }, + "typeName": { + "id": 14320, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "6160:4:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6160:11:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "functionReturnParameters": 14303, + "id": 14324, + "nodeType": "Return", + "src": "6153:18:112" + } + ] + }, + "documentation": { + "id": 14297, + "nodeType": "StructuredDocumentation", + "src": "5647:341:112", + "text": " @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits.\n _Available since v3.1._" + }, + "id": 14326, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt8", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14299, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14326, + "src": "6009:12:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14298, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "6009:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6008:14:112" + }, + "returnParameters": { + "id": 14303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14302, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14326, + "src": "6046:4:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + }, + "typeName": { + "id": 14301, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "6046:4:112", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6045:6:112" + }, + "scope": 14350, + "src": "5993:185:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14348, + "nodeType": "Block", + "src": "6418:114:112", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14335, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14329, + "src": "6436:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9968" + }, + "id": 14338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 14336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6444:1:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323535", + "id": 14337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6447:3:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "6444:6:112", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9968" + } + }, + "src": "6436:14:112", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536", + "id": 14340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6452:42:112", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227", + "typeString": "literal_string \"SafeCast: value doesn't fit in an int256\"" + }, + "value": "SafeCast: value doesn't fit in an int256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227", + "typeString": "literal_string \"SafeCast: value doesn't fit in an int256\"" + } + ], + "id": 14334, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6428:7:112", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 14341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6428:67:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14342, + "nodeType": "ExpressionStatement", + "src": "6428:67:112" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14345, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14329, + "src": "6519:5:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6512:6:112", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 14343, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "6512:6:112", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6512:13:112", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 14333, + "id": 14347, + "nodeType": "Return", + "src": "6505:20:112" + } + ] + }, + "documentation": { + "id": 14327, + "nodeType": "StructuredDocumentation", + "src": "6184:165:112", + "text": " @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256." + }, + "id": 14349, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt256", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14329, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14349, + "src": "6372:13:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14328, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6372:7:112", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6371:15:112" + }, + "returnParameters": { + "id": 14333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14332, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14349, + "src": "6410:6:112", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 14331, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "6410:6:112", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6409:8:112" + }, + "scope": 14350, + "src": "6354:178:112", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 14351, + "src": "769:5765:112" + } + ], + "src": "33:6502:112" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e067889df40466c0785ab0ef15c669f91dbcf9e500e1da89aa1d274ef5b35df564736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e067889df40466c0785ab0ef15c669f91dbcf9e500e1da89aa1d274ef5b35df564736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SafeCastMock.json b/node_modules/@openzeppelin/contracts/build/contracts/SafeCastMock.json new file mode 100644 index 0000000..5088ba3 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SafeCastMock.json @@ -0,0 +1,1284 @@ +{ + "fileName": "SafeCastMock.sol", + "contractName": "SafeCastMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/SafeCast.sol\";\n\ncontract SafeCastMock {\n using SafeCast for uint;\n using SafeCast for int;\n\n function toUint256(int a) public pure returns (uint256) {\n return a.toUint256();\n }\n\n function toInt256(uint a) public pure returns (int256) {\n return a.toInt256();\n }\n\n function toUint128(uint a) public pure returns (uint128) {\n return a.toUint128();\n }\n\n function toUint64(uint a) public pure returns (uint64) {\n return a.toUint64();\n }\n\n function toUint32(uint a) public pure returns (uint32) {\n return a.toUint32();\n }\n\n function toUint16(uint a) public pure returns (uint16) {\n return a.toUint16();\n }\n\n function toUint8(uint a) public pure returns (uint8) {\n return a.toUint8();\n }\n}\n", + "sourcePath": "contracts/mocks/SafeCastMock.sol", + "sourceMap": "91:763:59:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "91:763:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;764:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;473:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;373:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;667:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;570;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;177:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;764:88;810:5;834:11;:1;:9;:11::i;:::-;827:18;;764:88;;;:::o;473:91::-;520:6;545:12;:1;:10;:12::i;:::-;538:19;;473:91;;;:::o;373:94::-;421:7;447:13;:1;:11;:13::i;:::-;440:20;;373:94;;;:::o;667:91::-;714:6;739:12;:1;:10;:12::i;:::-;732:19;;667:91;;;:::o;570:::-;617:6;642:12;:1;:10;:12::i;:::-;635:19;;570:91;;;:::o;276:::-;323:6;348:12;:1;:10;:12::i;:::-;341:19;;276:91;;;:::o;177:93::-;224:7;250:13;:1;:11;:13::i;:::-;243:20;;177:93;;;:::o;2885:171:99:-;2940:5;2973:4;2965:5;:12;2957:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3043:5;3030:19;;2885:171;;;:::o;1499:176::-;1555:6;1589:5;1581;:13;1573:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1662:5;1648:20;;1499:176;;;:::o;1031:181::-;1088:7;1123:6;1115:5;:14;1107:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:5;1184:21;;1031:181;;;:::o;2425:176::-;2481:6;2515:5;2507;:13;2499:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2588:5;2574:20;;2425:176;;;:::o;1962:::-;2018:6;2052:5;2044;:13;2036:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2125:5;2111:20;;1962:176;;;:::o;3571:178::-;3627:6;3661;3653:5;:14;3645:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:5;3722:20;;3571:178;;;:::o;3227:168::-;3283:7;3319:1;3310:5;:10;;3302:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3382:5;3367:21;;3227:168;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + } + ], + "name": "toInt256", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + } + ], + "name": "toUint128", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + } + ], + "name": "toUint16", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "a", + "type": "int256" + } + ], + "name": "toUint256", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + } + ], + "name": "toUint32", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + } + ], + "name": "toUint64", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + } + ], + "name": "toUint8", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SafeCastMock.sol", + "exportedSymbols": { + "SafeCastMock": [ + 5381 + ] + }, + "id": 5382, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5289, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:59" + }, + { + "absolutePath": "contracts/utils/SafeCast.sol", + "file": "../utils/SafeCast.sol", + "id": 5290, + "nodeType": "ImportDirective", + "scope": 5382, + "sourceUnit": 12281, + "src": "58:31:59", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5381, + "linearizedBaseContracts": [ + 5381 + ], + "name": "SafeCastMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5293, + "libraryName": { + "contractScope": null, + "id": 5291, + "name": "SafeCast", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12280, + "src": "125:8:59", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeCast_$12280", + "typeString": "library SafeCast" + } + }, + "nodeType": "UsingForDirective", + "src": "119:24:59", + "typeName": { + "id": 5292, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "138:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 5296, + "libraryName": { + "contractScope": null, + "id": 5294, + "name": "SafeCast", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12280, + "src": "154:8:59", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeCast_$12280", + "typeString": "library SafeCast" + } + }, + "nodeType": "UsingForDirective", + "src": "148:23:59", + "typeName": { + "id": 5295, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "167:3:59", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + }, + { + "body": { + "id": 5307, + "nodeType": "Block", + "src": "233:37:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5303, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5298, + "src": "250:1:59", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 5304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint256", + "nodeType": "MemberAccess", + "referencedDeclaration": 12256, + "src": "250:11:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$", + "typeString": "function (int256) pure returns (uint256)" + } + }, + "id": 5305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "250:13:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5302, + "id": 5306, + "nodeType": "Return", + "src": "243:20:59" + } + ] + }, + "documentation": null, + "functionSelector": "fdcf791b", + "id": 5308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint256", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5298, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5308, + "src": "196:5:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5297, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "196:3:59", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "195:7:59" + }, + "returnParameters": { + "id": 5302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5301, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5308, + "src": "224:7:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "224:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "223:9:59" + }, + "scope": 5381, + "src": "177:93:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5319, + "nodeType": "Block", + "src": "331:36:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5315, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5310, + "src": "348:1:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toInt256", + "nodeType": "MemberAccess", + "referencedDeclaration": 12279, + "src": "348:10:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 5317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "348:12:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 5314, + "id": 5318, + "nodeType": "Return", + "src": "341:19:59" + } + ] + }, + "documentation": null, + "functionSelector": "dfbe873b", + "id": 5320, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt256", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5310, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5320, + "src": "294:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5309, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "294:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "293:8:59" + }, + "returnParameters": { + "id": 5314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5313, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5320, + "src": "323:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5312, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "323:6:59", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "322:8:59" + }, + "scope": 5381, + "src": "276:91:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5331, + "nodeType": "Block", + "src": "430:37:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5327, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5322, + "src": "447:1:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint128", + "nodeType": "MemberAccess", + "referencedDeclaration": 12143, + "src": "447:11:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 5329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "447:13:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 5326, + "id": 5330, + "nodeType": "Return", + "src": "440:20:59" + } + ] + }, + "documentation": null, + "functionSelector": "809fdd33", + "id": 5332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5322, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5332, + "src": "392:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5321, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "392:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "391:8:59" + }, + "returnParameters": { + "id": 5326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5325, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5332, + "src": "421:7:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5324, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "421:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "420:9:59" + }, + "scope": 5381, + "src": "373:94:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5343, + "nodeType": "Block", + "src": "528:36:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5339, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5334, + "src": "545:1:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint64", + "nodeType": "MemberAccess", + "referencedDeclaration": 12166, + "src": "545:10:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint64)" + } + }, + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "545:12:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 5338, + "id": 5342, + "nodeType": "Return", + "src": "538:19:59" + } + ] + }, + "documentation": null, + "functionSelector": "2665fad0", + "id": 5344, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint64", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5334, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5344, + "src": "491:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5333, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "491:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "490:8:59" + }, + "returnParameters": { + "id": 5338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5337, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5344, + "src": "520:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 5336, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "520:6:59", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "519:8:59" + }, + "scope": 5381, + "src": "473:91:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5355, + "nodeType": "Block", + "src": "625:36:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5351, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5346, + "src": "642:1:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint32", + "nodeType": "MemberAccess", + "referencedDeclaration": 12189, + "src": "642:10:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint32)" + } + }, + "id": 5353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "642:12:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 5350, + "id": 5354, + "nodeType": "Return", + "src": "635:19:59" + } + ] + }, + "documentation": null, + "functionSelector": "c8193255", + "id": 5356, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint32", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5346, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5356, + "src": "588:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5345, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "588:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "587:8:59" + }, + "returnParameters": { + "id": 5350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5349, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5356, + "src": "617:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 5348, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "617:6:59", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:8:59" + }, + "scope": 5381, + "src": "570:91:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5367, + "nodeType": "Block", + "src": "722:36:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5363, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5358, + "src": "739:1:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint16", + "nodeType": "MemberAccess", + "referencedDeclaration": 12212, + "src": "739:10:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint16_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint16)" + } + }, + "id": 5365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "739:12:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 5362, + "id": 5366, + "nodeType": "Return", + "src": "732:19:59" + } + ] + }, + "documentation": null, + "functionSelector": "9374068f", + "id": 5368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint16", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5358, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5368, + "src": "685:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5357, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "685:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "684:8:59" + }, + "returnParameters": { + "id": 5362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5361, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5368, + "src": "714:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5360, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "714:6:59", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "713:8:59" + }, + "scope": 5381, + "src": "667:91:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5379, + "nodeType": "Block", + "src": "817:35:59", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5375, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5370, + "src": "834:1:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toUint8", + "nodeType": "MemberAccess", + "referencedDeclaration": 12235, + "src": "834:9:59", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 5377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "834:11:59", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 5374, + "id": 5378, + "nodeType": "Return", + "src": "827:18:59" + } + ] + }, + "documentation": null, + "functionSelector": "0cc4681e", + "id": 5380, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint8", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5370, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5380, + "src": "781:6:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5369, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "781:4:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "780:8:59" + }, + "returnParameters": { + "id": 5374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5373, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5380, + "src": "810:5:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5372, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "810:5:59", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "809:7:59" + }, + "scope": 5381, + "src": "764:88:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5382, + "src": "91:763:59" + } + ], + "src": "33:822:59" + }, + "bytecode": "0x608060405234801561001057600080fd5b5061074c806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639374068f1161005b5780639374068f14610186578063c8193255146101d0578063dfbe873b1461021e578063fdcf791b146102605761007d565b80630cc4681e146100825780632665fad0146100ca578063809fdd3314610120575b600080fd5b6100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506102a2565b604051808260ff1660ff16815260200191505060405180910390f35b6100f6600480360360208110156100e057600080fd5b81019080803590602001909291905050506102b4565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b61014c6004803603602081101561013657600080fd5b81019080803590602001909291905050506102c6565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b26004803603602081101561019c57600080fd5b81019080803590602001909291905050506102d8565b604051808261ffff1661ffff16815260200191505060405180910390f35b6101fc600480360360208110156101e657600080fd5b81019080803590602001909291905050506102ea565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b61024a6004803603602081101561023457600080fd5b81019080803590602001909291905050506102fc565b6040518082815260200191505060405180910390f35b61028c6004803603602081101561027657600080fd5b810190808035906020019092919050505061030e565b6040518082815260200191505060405180910390f35b60006102ad82610320565b9050919050565b60006102bf82610384565b9050919050565b60006102d1826103ef565b9050919050565b60006102e382610462565b9050919050565b60006102f5826104c7565b9050919050565b60006103078261052e565b9050919050565b6000610319826105b0565b9050919050565b6000610100821061037c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806106576025913960400191505060405180910390fd5b819050919050565b60006801000000000000000082106103e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106a36026913960400191505060405180910390fd5b819050919050565b6000700100000000000000000000000000000000821061045a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061067c6027913960400191505060405180910390fd5b819050919050565b60006201000082106104bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106316026913960400191505060405180910390fd5b819050919050565b60006401000000008210610526576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106c96026913960400191505060405180910390fd5b819050919050565b60007f800000000000000000000000000000000000000000000000000000000000000082106105a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806106ef6028913960400191505060405180910390fd5b819050919050565b600080821215610628576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f53616665436173743a2076616c7565206d75737420626520706f73697469766581525060200191505060405180910390fd5b81905091905056fe53616665436173743a2076616c756520646f65736e27742066697420696e203136206269747353616665436173743a2076616c756520646f65736e27742066697420696e2038206269747353616665436173743a2076616c756520646f65736e27742066697420696e20313238206269747353616665436173743a2076616c756520646f65736e27742066697420696e203634206269747353616665436173743a2076616c756520646f65736e27742066697420696e203332206269747353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536a264697066735822122048d1219e720e1e18701b58da97b5ed4628f76383716dc730ff2770257c34539864736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80639374068f1161005b5780639374068f14610186578063c8193255146101d0578063dfbe873b1461021e578063fdcf791b146102605761007d565b80630cc4681e146100825780632665fad0146100ca578063809fdd3314610120575b600080fd5b6100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506102a2565b604051808260ff1660ff16815260200191505060405180910390f35b6100f6600480360360208110156100e057600080fd5b81019080803590602001909291905050506102b4565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b61014c6004803603602081101561013657600080fd5b81019080803590602001909291905050506102c6565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b26004803603602081101561019c57600080fd5b81019080803590602001909291905050506102d8565b604051808261ffff1661ffff16815260200191505060405180910390f35b6101fc600480360360208110156101e657600080fd5b81019080803590602001909291905050506102ea565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b61024a6004803603602081101561023457600080fd5b81019080803590602001909291905050506102fc565b6040518082815260200191505060405180910390f35b61028c6004803603602081101561027657600080fd5b810190808035906020019092919050505061030e565b6040518082815260200191505060405180910390f35b60006102ad82610320565b9050919050565b60006102bf82610384565b9050919050565b60006102d1826103ef565b9050919050565b60006102e382610462565b9050919050565b60006102f5826104c7565b9050919050565b60006103078261052e565b9050919050565b6000610319826105b0565b9050919050565b6000610100821061037c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806106576025913960400191505060405180910390fd5b819050919050565b60006801000000000000000082106103e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106a36026913960400191505060405180910390fd5b819050919050565b6000700100000000000000000000000000000000821061045a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061067c6027913960400191505060405180910390fd5b819050919050565b60006201000082106104bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106316026913960400191505060405180910390fd5b819050919050565b60006401000000008210610526576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806106c96026913960400191505060405180910390fd5b819050919050565b60007f800000000000000000000000000000000000000000000000000000000000000082106105a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806106ef6028913960400191505060405180910390fd5b819050919050565b600080821215610628576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f53616665436173743a2076616c7565206d75737420626520706f73697469766581525060200191505060405180910390fd5b81905091905056fe53616665436173743a2076616c756520646f65736e27742066697420696e203136206269747353616665436173743a2076616c756520646f65736e27742066697420696e2038206269747353616665436173743a2076616c756520646f65736e27742066697420696e20313238206269747353616665436173743a2076616c756520646f65736e27742066697420696e203634206269747353616665436173743a2076616c756520646f65736e27742066697420696e203332206269747353616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536a264697066735822122048d1219e720e1e18701b58da97b5ed4628f76383716dc730ff2770257c34539864736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SafeERC20.json b/node_modules/@openzeppelin/contracts/build/contracts/SafeERC20.json new file mode 100644 index 0000000..49c5f0e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SafeERC20.json @@ -0,0 +1,3105 @@ +{ + "fileName": "SafeERC20.sol", + "contractName": "SafeERC20", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n // solhint-disable-next-line max-line-length\n require((value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) { // Return data is optional\n // solhint-disable-next-line max-line-length\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n", + "sourcePath": "contracts/token/ERC20/SafeERC20.sol", + "sourceMap": "608:3104:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "608:3104:90:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 9986 + ] + }, + "id": 9987, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9775, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:90" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 9776, + "nodeType": "ImportDirective", + "scope": 9987, + "sourceUnit": 9774, + "src": "58:22:90", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 9777, + "nodeType": "ImportDirective", + "scope": 9987, + "sourceUnit": 2422, + "src": "81:33:90", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 9778, + "nodeType": "ImportDirective", + "scope": 9987, + "sourceUnit": 12815, + "src": "115:33:90", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9779, + "nodeType": "StructuredDocumentation", + "src": "150:457:90", + "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 9986, + "linearizedBaseContracts": [ + 9986 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 9782, + "libraryName": { + "contractScope": null, + "id": 9780, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "638:8:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "632:27:90", + "typeName": { + "id": 9781, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "651:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 9785, + "libraryName": { + "contractScope": null, + "id": 9783, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 12814, + "src": "670:7:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$12814", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "664:26:90", + "typeName": { + "id": 9784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "682:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "body": { + "id": 9806, + "nodeType": "Block", + "src": "768:103:90", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9795, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9787, + "src": "798:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9798, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9787, + "src": "828:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9722, + "src": "828:14:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 9800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "828:23:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 9801, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9789, + "src": "853:2:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9802, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9791, + "src": "857:5:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9796, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "805:3:90", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "805:22:90", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "805:58:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9794, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "778:19:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 9804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "778:86:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9805, + "nodeType": "ExpressionStatement", + "src": "778:86:90" + } + ] + }, + "documentation": null, + "id": 9807, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9787, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9807, + "src": "718:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9786, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "718:6:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9789, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9807, + "src": "732:10:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9788, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "732:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9791, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9807, + "src": "744:13:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9790, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "744:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "717:41:90" + }, + "returnParameters": { + "id": 9793, + "nodeType": "ParameterList", + "parameters": [], + "src": "768:0:90" + }, + "scope": 9986, + "src": "696:175:90", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9831, + "nodeType": "Block", + "src": "967:113:90", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9819, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9809, + "src": "997:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9822, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9809, + "src": "1027:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 9754, + "src": "1027:18:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 9824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1027:27:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 9825, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9811, + "src": "1056:4:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9826, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9813, + "src": "1062:2:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9827, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9815, + "src": "1066:5:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9820, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1004:3:90", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1004:22:90", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1004:68:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9818, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "977:19:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 9829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "977:96:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9830, + "nodeType": "ExpressionStatement", + "src": "977:96:90" + } + ] + }, + "documentation": null, + "id": 9832, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9809, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9832, + "src": "903:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9808, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "903:6:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9811, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9832, + "src": "917:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9810, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "917:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9813, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9832, + "src": "931:10:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9812, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "931:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9815, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9832, + "src": "943:13:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "943:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "902:55:90" + }, + "returnParameters": { + "id": 9817, + "nodeType": "ParameterList", + "parameters": [], + "src": "967:0:90" + }, + "scope": 9986, + "src": "877:203:90", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9874, + "nodeType": "Block", + "src": "1416:537:90", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 9843, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9839, + "src": "1705:5:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1714:1:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1705:10:90", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 9846, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1704:12:90", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9851, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1745:4:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + ], + "id": 9850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1737:7:90", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1737:7:90", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1737:13:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9853, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9837, + "src": "1752:7:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 9847, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9835, + "src": "1721:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 9732, + "src": "1721:15:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 9854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1721:39:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1764:1:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1721:44:90", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 9857, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1720:46:90", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1704:62:90", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", + "id": 9859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1780:56:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + }, + "value": "SafeERC20: approve from non-zero to non-zero allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", + "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"" + } + ], + "id": 9842, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1696:7:90", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1696:150:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9861, + "nodeType": "ExpressionStatement", + "src": "1696:150:90" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9863, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9835, + "src": "1876:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9866, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9835, + "src": "1906:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 9742, + "src": "1906:13:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 9868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1906:22:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 9869, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9837, + "src": "1930:7:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9870, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9839, + "src": "1939:5:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9864, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1883:3:90", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1883:22:90", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1883:62:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9862, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "1856:19:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 9872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1856:90:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9873, + "nodeType": "ExpressionStatement", + "src": "1856:90:90" + } + ] + }, + "documentation": { + "id": 9833, + "nodeType": "StructuredDocumentation", + "src": "1086:249:90", + "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead." + }, + "id": 9875, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9835, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9875, + "src": "1361:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9834, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1361:6:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9837, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9875, + "src": "1375:15:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9836, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1375:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9839, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9875, + "src": "1392:13:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1392:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1360:46:90" + }, + "returnParameters": { + "id": 9841, + "nodeType": "ParameterList", + "parameters": [], + "src": "1416:0:90" + }, + "scope": 9986, + "src": "1340:613:90", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9910, + "nodeType": "Block", + "src": "2045:197:90", + "statements": [ + { + "assignments": [ + 9885 + ], + "declarations": [ + { + "constant": false, + "id": 9885, + "mutability": "mutable", + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9910, + "src": "2055:20:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2055:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9897, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9895, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9881, + "src": "2122:5:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9890, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2102:4:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + ], + "id": 9889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2094:7:90", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2094:7:90", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2094:13:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9892, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9879, + "src": "2109:7:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 9886, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9877, + "src": "2078:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 9732, + "src": "2078:15:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 9893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2078:39:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2254, + "src": "2078:43:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 9896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2078:50:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2055:73:90" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9899, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9877, + "src": "2158:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9902, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9877, + "src": "2188:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 9742, + "src": "2188:13:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 9904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2188:22:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 9905, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9879, + "src": "2212:7:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9906, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9885, + "src": "2221:12:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9900, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2165:3:90", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2165:22:90", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2165:69:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9898, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "2138:19:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 9908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2138:97:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9909, + "nodeType": "ExpressionStatement", + "src": "2138:97:90" + } + ] + }, + "documentation": null, + "id": 9911, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9877, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9911, + "src": "1990:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9876, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1990:6:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9879, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9911, + "src": "2004:15:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2004:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9881, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9911, + "src": "2021:13:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2021:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1989:46:90" + }, + "returnParameters": { + "id": 9883, + "nodeType": "ParameterList", + "parameters": [], + "src": "2045:0:90" + }, + "scope": 9986, + "src": "1959:283:90", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9947, + "nodeType": "Block", + "src": "2334:242:90", + "statements": [ + { + "assignments": [ + 9921 + ], + "declarations": [ + { + "constant": false, + "id": 9921, + "mutability": "mutable", + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9947, + "src": "2344:20:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9920, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2344:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9934, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9931, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9917, + "src": "2411:5:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 9932, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2418:43:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + }, + "value": "SafeERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", + "typeString": "literal_string \"SafeERC20: decreased allowance below zero\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9926, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2391:4:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + ], + "id": 9925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2383:7:90", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2383:7:90", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2383:13:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9928, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9915, + "src": "2398:7:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 9922, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9913, + "src": "2367:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 9732, + "src": "2367:15:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 9929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2367:39:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2299, + "src": "2367:43:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 9933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2367:95:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2344:118:90" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9936, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9913, + "src": "2492:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9939, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9913, + "src": "2522:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 9940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 9742, + "src": "2522:13:90", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 9941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2522:22:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 9942, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9915, + "src": "2546:7:90", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 9943, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "2555:12:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 9937, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2499:3:90", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2499:22:90", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2499:69:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9935, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "2472:19:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 9945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2472:97:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9946, + "nodeType": "ExpressionStatement", + "src": "2472:97:90" + } + ] + }, + "documentation": null, + "id": 9948, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9913, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9948, + "src": "2279:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9912, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "2279:6:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9915, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9948, + "src": "2293:15:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9914, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2293:7:90", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9917, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9948, + "src": "2310:13:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9916, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2310:7:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2278:46:90" + }, + "returnParameters": { + "id": 9919, + "nodeType": "ParameterList", + "parameters": [], + "src": "2334:0:90" + }, + "scope": 9986, + "src": "2248:328:90", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9984, + "nodeType": "Block", + "src": "3029:681:90", + "statements": [ + { + "assignments": [ + 9957 + ], + "declarations": [ + { + "constant": false, + "id": 9957, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9984, + "src": "3378:23:90", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9956, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3378:5:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 9966, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9963, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9953, + "src": "3432:4:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 9964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3438:34:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + }, + "value": "SafeERC20: low-level call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", + "typeString": "literal_string \"SafeERC20: low-level call failed\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9960, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9951, + "src": "3412:5:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + ], + "id": 9959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3404:7:90", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 9958, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3404:7:90", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 9961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3404:14:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 12710, + "src": "3404:27:90", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 9965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3404:69:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3378:95:90" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 9967, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9957, + "src": "3487:10:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 9968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3487:17:90", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 9969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3507:1:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3487:21:90", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 9983, + "nodeType": "IfStatement", + "src": "3483:221:90", + "trueBody": { + "id": 9982, + "nodeType": "Block", + "src": "3510:194:90", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 9974, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9957, + "src": "3627:10:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 9976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3640:4:90", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 9975, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3640:4:90", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 9977, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3639:6:90", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "argumentTypes": null, + "id": 9972, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3616:3:90", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3616:10:90", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3616:30:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", + "id": 9979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3648:44:90", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + }, + "value": "SafeERC20: ERC20 operation did not succeed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", + "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\"" + } + ], + "id": 9971, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3608:7:90", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 9980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3608:85:90", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9981, + "nodeType": "ExpressionStatement", + "src": "3608:85:90" + } + ] + } + } + ] + }, + "documentation": { + "id": 9949, + "nodeType": "StructuredDocumentation", + "src": "2582:372:90", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)." + }, + "id": 9985, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9951, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9985, + "src": "2988:12:90", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9950, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "2988:6:90", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 9953, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 9985, + "src": "3002:17:90", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9952, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3002:5:90", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2987:33:90" + }, + "returnParameters": { + "id": 9955, + "nodeType": "ParameterList", + "parameters": [], + "src": "3029:0:90" + }, + "scope": 9986, + "src": "2959:751:90", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 9987, + "src": "608:3104:90" + } + ], + "src": "33:3680:90" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6bb507ce382912b2f593941e1f48245e0ccf15a8ccb1db2d278a5a83a5eb8e064736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6bb507ce382912b2f593941e1f48245e0ccf15a8ccb1db2d278a5a83a5eb8e064736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SafeERC20Wrapper.json b/node_modules/@openzeppelin/contracts/build/contracts/SafeERC20Wrapper.json new file mode 100644 index 0000000..1d7176a --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SafeERC20Wrapper.json @@ -0,0 +1,4831 @@ +{ + "fileName": "SafeERC20Helper.sol", + "contractName": "SafeERC20Wrapper", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\n\ncontract ERC20ReturnFalseMock is Context {\n uint256 private _allowance;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return false;\n }\n\n function allowance(address, address) public view returns (uint256) {\n require(_dummy == 0); // Duummy read from a state variable so that the function is view\n return 0;\n }\n}\n\ncontract ERC20ReturnTrueMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function transferFrom(address, address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function approve(address, uint256) public returns (bool) {\n _dummy = 0;\n return true;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract ERC20NoReturnMock is Context {\n mapping (address => uint256) private _allowances;\n\n // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,\n // we write to a dummy state variable.\n uint256 private _dummy;\n\n function transfer(address, uint256) public {\n _dummy = 0;\n }\n\n function transferFrom(address, address, uint256) public {\n _dummy = 0;\n }\n\n function approve(address, uint256) public {\n _dummy = 0;\n }\n\n function setAllowance(uint256 allowance_) public {\n _allowances[_msgSender()] = allowance_;\n }\n\n function allowance(address owner, address) public view returns (uint256) {\n return _allowances[owner];\n }\n}\n\ncontract SafeERC20Wrapper is Context {\n using SafeERC20 for IERC20;\n\n IERC20 private _token;\n\n constructor (IERC20 token) public {\n _token = token;\n }\n\n function transfer() public {\n _token.safeTransfer(address(0), 0);\n }\n\n function transferFrom() public {\n _token.safeTransferFrom(address(0), address(0), 0);\n }\n\n function approve(uint256 amount) public {\n _token.safeApprove(address(0), amount);\n }\n\n function increaseAllowance(uint256 amount) public {\n _token.safeIncreaseAllowance(address(0), amount);\n }\n\n function decreaseAllowance(uint256 amount) public {\n _token.safeDecreaseAllowance(address(0), amount);\n }\n\n function setAllowance(uint256 allowance_) public {\n ERC20ReturnTrueMock(address(_token)).setAllowance(allowance_);\n }\n\n function allowance() public view returns (uint256) {\n return _token.allowance(address(0), address(0));\n }\n}\n", + "sourcePath": "contracts/mocks/SafeERC20Helper.sol", + "sourceMap": "2605:956:60:-:0;;;2709:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2762:5;2753:6;;:14;;;;;;;;;;;;;;;;;;2709:65;2605:956;;;;;;", + "deployedSourceMap": "2605:956:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3190:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3069;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3311:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2864:98;;;:::i;:::-;;2780:78;;;:::i;:::-;;2968:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3444:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3190;3250:48;3287:1;3291:6;3250;;;;;;;;;;;:28;;;;:48;;;;;:::i;:::-;3190:115;:::o;3069:::-;3129:48;3166:1;3170:6;3129;;;;;;;;;;;:28;;;;:48;;;;;:::i;:::-;3069:115;:::o;3311:127::-;3398:6;;;;;;;;;;;3370:49;;;3420:10;3370:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3311:127;:::o;2864:98::-;2905:50;2937:1;2949;2953;2905:6;;;;;;;;;;;:23;;;;:50;;;;;;:::i;:::-;2864:98::o;2780:78::-;2817:34;2845:1;2849;2817:6;;;;;;;;;;;:19;;;;:34;;;;;:::i;:::-;2780:78::o;2968:95::-;3018:38;3045:1;3049:6;3018;;;;;;;;;;;:18;;;;:38;;;;;:::i;:::-;2968:95;:::o;3444:115::-;3486:7;3512:6;;;;;;;;;;;:16;;;3537:1;3549;3512:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3505:47;;3444:115;:::o;1993:328:77:-;2089:20;2112:95;2156:5;2112:95;;;;;;;;;;;;;;;;;:5;:15;;;2136:4;2143:7;2112:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;:95;;;;;:::i;:::-;2089:118;;2217:97;2237:5;2267:22;;;2291:7;2300:12;2244:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2217:19;:97::i;:::-;1993:328;;;;:::o;1704:283::-;1800:20;1823:50;1867:5;1823;:15;;;1847:4;1854:7;1823:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;:50;;;;:::i;:::-;1800:73;;1883:97;1903:5;1933:22;;;1957:7;1966:12;1910:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1883:19;:97::i;:::-;1704:283;;;;:::o;876:203::-;976:96;996:5;1026:27;;;1055:4;1061:2;1065:5;1003:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;976:19;:96::i;:::-;876:203;;;;:::o;695:175::-;777:86;797:5;827:23;;;852:2;856:5;804:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;777:19;:86::i;:::-;695:175;;;:::o;1085:613::-;1459:1;1450:5;:10;1449:62;;;;1509:1;1466:5;:15;;;1490:4;1497:7;1466:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;1449:62;1441:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:90;1621:5;1651:22;;;1675:7;1684:5;1628:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:19;:90::i;:::-;1085:613;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;2704:1096:77:-;3300:27;3308:5;3300:25;;;:27::i;:::-;3292:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:12;3448:23;3483:5;3475:19;;3495:4;3475:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3433:67;;;;3518:7;3510:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3597:1;3577:10;:17;:21;3573:221;;;3717:10;3706:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3698:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3573:221;2704:1096;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "allowance_", + "type": "uint256" + } + ], + "name": "setAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SafeERC20Helper.sol", + "exportedSymbols": { + "ERC20NoReturnMock": [ + 5621 + ], + "ERC20ReturnFalseMock": [ + 5461 + ], + "ERC20ReturnTrueMock": [ + 5547 + ], + "SafeERC20Wrapper": [ + 5753 + ] + }, + "id": 5754, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5383, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:60" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 5384, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 27, + "src": "58:28:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 5385, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 7970, + "src": "87:35:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 5386, + "nodeType": "ImportDirective", + "scope": 5754, + "sourceUnit": 8198, + "src": "123:38:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5387, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "196:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5388, + "nodeType": "InheritanceSpecifier", + "src": "196:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5461, + "linearizedBaseContracts": [ + 5461, + 26 + ], + "name": "ERC20ReturnFalseMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5390, + "mutability": "mutable", + "name": "_allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "210:26:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "210:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5392, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5461, + "src": "405:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5407, + "nodeType": "Block", + "src": "492:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5401, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "502:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "511:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "502:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5404, + "nodeType": "ExpressionStatement", + "src": "502:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "529:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5400, + "id": 5406, + "nodeType": "Return", + "src": "522:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5394, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "452:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5393, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5396, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "461:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "461:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:18:60" + }, + "returnParameters": { + "id": 5400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5399, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "486:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5398, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "486:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "485:6:60" + }, + "scope": 5461, + "src": "434:107:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5425, + "nodeType": "Block", + "src": "618:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5419, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "628:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "628:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5422, + "nodeType": "ExpressionStatement", + "src": "628:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5418, + "id": 5424, + "nodeType": "Return", + "src": "648:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5426, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5410, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "569:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "569:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "578:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "587:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "568:27:60" + }, + "returnParameters": { + "id": 5418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5417, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5426, + "src": "612:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "612:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:6:60" + }, + "scope": 5461, + "src": "547:120:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5441, + "nodeType": "Block", + "src": "730:49:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5435, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "740:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "749:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "740:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "740:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "767:5:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 5434, + "id": 5440, + "nodeType": "Return", + "src": "760:12:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5428, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "690:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "690:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "699:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "689:18:60" + }, + "returnParameters": { + "id": 5434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5433, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5442, + "src": "724:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5432, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "724:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "723:6:60" + }, + "scope": 5461, + "src": "673:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5459, + "nodeType": "Block", + "src": "852:121:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5452, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "870:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "870:11:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5451, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "862:7:60", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "862:20:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5456, + "nodeType": "ExpressionStatement", + "src": "862:20:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "965:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5450, + "id": 5458, + "nodeType": "Return", + "src": "958:8:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "804:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "804:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "813:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "803:18:60" + }, + "returnParameters": { + "id": 5450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5449, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5460, + "src": "843:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "843:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "842:9:60" + }, + "scope": 5461, + "src": "785:188:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "163:812:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5462, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1009:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5463, + "nodeType": "InheritanceSpecifier", + "src": "1009:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5547, + "linearizedBaseContracts": [ + 5547, + 26 + ], + "name": "ERC20ReturnTrueMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5467, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1023:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5466, + "keyType": { + "id": 5464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1032:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1023:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5469, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5547, + "src": "1240:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1240:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5484, + "nodeType": "Block", + "src": "1327:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5478, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1337:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1346:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1337:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5481, + "nodeType": "ExpressionStatement", + "src": "1337:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1364:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5477, + "id": 5483, + "nodeType": "Return", + "src": "1357:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5471, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1287:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1287:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5473, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1296:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1296:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1286:18:60" + }, + "returnParameters": { + "id": 5477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5476, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5485, + "src": "1321:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5475, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1321:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1320:6:60" + }, + "scope": 5547, + "src": "1269:106:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5502, + "nodeType": "Block", + "src": "1452:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5496, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1462:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1471:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1462:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5499, + "nodeType": "ExpressionStatement", + "src": "1462:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1489:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5495, + "id": 5501, + "nodeType": "Return", + "src": "1482:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1403:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1403:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5489, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1412:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1412:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5491, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1421:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1421:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1402:27:60" + }, + "returnParameters": { + "id": 5495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5494, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5503, + "src": "1446:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1446:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1445:6:60" + }, + "scope": 5547, + "src": "1381:119:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5518, + "nodeType": "Block", + "src": "1563:48:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5512, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5469, + "src": "1573:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1573:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5515, + "nodeType": "ExpressionStatement", + "src": "1573:10:60" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1600:4:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5511, + "id": 5517, + "nodeType": "Return", + "src": "1593:11:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5505, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1523:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1523:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5507, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1532:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1532:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1522:18:60" + }, + "returnParameters": { + "id": 5511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5510, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5519, + "src": "1557:4:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5509, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1557:4:60", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1556:6:60" + }, + "scope": 5547, + "src": "1506:105:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5531, + "nodeType": "Block", + "src": "1666:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5524, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1676:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5527, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5525, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1688:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1688:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1676:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5528, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5521, + "src": "1704:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1676:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5530, + "nodeType": "ExpressionStatement", + "src": "1676:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5521, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5532, + "src": "1639:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1638:20:60" + }, + "returnParameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [], + "src": "1666:0:60" + }, + "scope": 5547, + "src": "1617:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5545, + "nodeType": "Block", + "src": "1800:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5541, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5467, + "src": "1817:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5543, + "indexExpression": { + "argumentTypes": null, + "id": 5542, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5534, + "src": "1829:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1817:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5540, + "id": 5544, + "nodeType": "Return", + "src": "1810:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5534, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1746:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1746:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5536, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1761:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1761:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1745:24:60" + }, + "returnParameters": { + "id": 5540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5539, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5546, + "src": "1791:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1791:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1790:9:60" + }, + "scope": 5547, + "src": "1727:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "977:867:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5548, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1876:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5549, + "nodeType": "InheritanceSpecifier", + "src": "1876:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5621, + "linearizedBaseContracts": [ + 5621, + 26 + ], + "name": "ERC20NoReturnMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5553, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "1890:48:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5552, + "keyType": { + "id": 5550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1899:7:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1890:28:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1910:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5555, + "mutability": "mutable", + "name": "_dummy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5621, + "src": "2107:22:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5566, + "nodeType": "Block", + "src": "2179:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5562, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2189:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2198:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2189:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5565, + "nodeType": "ExpressionStatement", + "src": "2189:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 5567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2154:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2154:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5559, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5567, + "src": "2163:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2153:18:60" + }, + "returnParameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [], + "src": "2179:0:60" + }, + "scope": 5621, + "src": "2136:70:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5580, + "nodeType": "Block", + "src": "2268:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5576, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2278:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2278:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5579, + "nodeType": "ExpressionStatement", + "src": "2278:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 5581, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5569, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2234:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2234:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2243:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2243:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5573, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5581, + "src": "2252:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2252:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2233:27:60" + }, + "returnParameters": { + "id": 5575, + "nodeType": "ParameterList", + "parameters": [], + "src": "2268:0:60" + }, + "scope": 5621, + "src": "2212:83:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5592, + "nodeType": "Block", + "src": "2343:27:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5588, + "name": "_dummy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5555, + "src": "2353:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2353:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5591, + "nodeType": "ExpressionStatement", + "src": "2353:10:60" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 5593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5583, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2318:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2318:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5585, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5593, + "src": "2327:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2327:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2317:18:60" + }, + "returnParameters": { + "id": 5587, + "nodeType": "ParameterList", + "parameters": [], + "src": "2343:0:60" + }, + "scope": 5621, + "src": "2301:69:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5605, + "nodeType": "Block", + "src": "2425:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5598, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2435:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5601, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5599, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2447:10:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2447:12:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2435:25:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5602, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5595, + "src": "2463:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2435:38:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5604, + "nodeType": "ExpressionStatement", + "src": "2435:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5595, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5606, + "src": "2398:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2398:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2397:20:60" + }, + "returnParameters": { + "id": 5597, + "nodeType": "ParameterList", + "parameters": [], + "src": "2425:0:60" + }, + "scope": 5621, + "src": "2376:104:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5619, + "nodeType": "Block", + "src": "2559:42:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5615, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5553, + "src": "2576:11:60", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5617, + "indexExpression": { + "argumentTypes": null, + "id": 5616, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5608, + "src": "2588:5:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2576:18:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5614, + "id": 5618, + "nodeType": "Return", + "src": "2569:25:60" + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 5620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5608, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2505:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2505:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5610, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2520:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2520:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2504:24:60" + }, + "returnParameters": { + "id": 5614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5613, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5620, + "src": "2550:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2549:9:60" + }, + "scope": 5621, + "src": "2486:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "1846:757:60" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5622, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "2634:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 5623, + "nodeType": "InheritanceSpecifier", + "src": "2634:7:60" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5753, + "linearizedBaseContracts": [ + 5753, + 26 + ], + "name": "SafeERC20Wrapper", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5626, + "libraryName": { + "contractScope": null, + "id": 5624, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8197, + "src": "2654:9:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$8197", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "2648:27:60", + "typeName": { + "contractScope": null, + "id": 5625, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2668:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 5628, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5753, + "src": "2681:21:60", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5627, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2681:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5637, + "nodeType": "Block", + "src": "2743:31:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5633, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2753:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5634, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "2762:5:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "src": "2753:14:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5636, + "nodeType": "ExpressionStatement", + "src": "2753:14:60" + } + ] + }, + "documentation": null, + "id": 5638, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5638, + "src": "2722:12:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5629, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "2722:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2721:14:60" + }, + "returnParameters": { + "id": 5632, + "nodeType": "ParameterList", + "parameters": [], + "src": "2743:0:60" + }, + "scope": 5753, + "src": "2709:65:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5651, + "nodeType": "Block", + "src": "2807:51:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2845:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2837:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2837:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2849:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5641, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2817:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8003, + "src": "2817:19:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2817:34:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5650, + "nodeType": "ExpressionStatement", + "src": "2817:34:60" + } + ] + }, + "documentation": null, + "functionSelector": "8a4068dd", + "id": 5652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [], + "src": "2797:2:60" + }, + "returnParameters": { + "id": 5640, + "nodeType": "ParameterList", + "parameters": [], + "src": "2807:0:60" + }, + "scope": 5753, + "src": "2780:78:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5669, + "nodeType": "Block", + "src": "2895:67:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2937:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2929:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2929:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2949:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2941:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2941:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 5655, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "2905:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8028, + "src": "2905:23:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 5667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2905:50:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5668, + "nodeType": "ExpressionStatement", + "src": "2905:50:60" + } + ] + }, + "documentation": null, + "functionSelector": "811c34d3", + "id": 5670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5653, + "nodeType": "ParameterList", + "parameters": [], + "src": "2885:2:60" + }, + "returnParameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [], + "src": "2895:0:60" + }, + "scope": 5753, + "src": "2864:98:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5685, + "nodeType": "Block", + "src": "3008:55:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3045:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3037:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3037:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5682, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5672, + "src": "3049:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5675, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3018:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 8070, + "src": "3018:18:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3018:38:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5684, + "nodeType": "ExpressionStatement", + "src": "3018:38:60" + } + ] + }, + "documentation": null, + "functionSelector": "b759f954", + "id": 5686, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "2985:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2985:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2984:16:60" + }, + "returnParameters": { + "id": 5674, + "nodeType": "ParameterList", + "parameters": [], + "src": "3008:0:60" + }, + "scope": 5753, + "src": "2968:95:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5701, + "nodeType": "Block", + "src": "3119:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3166:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5694, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3158:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3158:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5698, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5688, + "src": "3170:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5691, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3129:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeIncreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8106, + "src": "3129:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3129:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5700, + "nodeType": "ExpressionStatement", + "src": "3129:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "11e330b2", + "id": 5702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5688, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5702, + "src": "3096:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3096:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:16:60" + }, + "returnParameters": { + "id": 5690, + "nodeType": "ParameterList", + "parameters": [], + "src": "3119:0:60" + }, + "scope": 5753, + "src": "3069:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5717, + "nodeType": "Block", + "src": "3240:65:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3287:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3279:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3279:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5704, + "src": "3291:6:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5707, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3250:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeDecreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8143, + "src": "3250:28:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3250:48:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5716, + "nodeType": "ExpressionStatement", + "src": "3250:48:60" + } + ] + }, + "documentation": null, + "functionSelector": "10bad4cf", + "id": 5718, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5704, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5718, + "src": "3217:14:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3217:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3216:16:60" + }, + "returnParameters": { + "id": 5706, + "nodeType": "ParameterList", + "parameters": [], + "src": "3240:0:60" + }, + "scope": 5753, + "src": "3190:115:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5733, + "nodeType": "Block", + "src": "3360:78:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5730, + "name": "allowance_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5720, + "src": "3420:10:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5726, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3398:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 5725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3390:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3390:15:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5723, + "name": "ERC20ReturnTrueMock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5547, + "src": "3370:19:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20ReturnTrueMock_$5547_$", + "typeString": "type(contract ERC20ReturnTrueMock)" + } + }, + "id": 5728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:36:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20ReturnTrueMock_$5547", + "typeString": "contract ERC20ReturnTrueMock" + } + }, + "id": 5729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5532, + "src": "3370:49:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3370:61:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5732, + "nodeType": "ExpressionStatement", + "src": "3370:61:60" + } + ] + }, + "documentation": null, + "functionSelector": "3ba93f26", + "id": 5734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setAllowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5720, + "mutability": "mutable", + "name": "allowance_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5734, + "src": "3333:18:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3333:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3332:20:60" + }, + "returnParameters": { + "id": 5722, + "nodeType": "ParameterList", + "parameters": [], + "src": "3360:0:60" + }, + "scope": 5753, + "src": "3311:127:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5751, + "nodeType": "Block", + "src": "3495:64:60", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3537:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3529:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3529:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3549:1:60", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3541:7:60", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3541:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 5739, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5628, + "src": "3512:6:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 7928, + "src": "3512:16:60", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3512:40:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5738, + "id": 5750, + "nodeType": "Return", + "src": "3505:47:60" + } + ] + }, + "documentation": null, + "functionSelector": "de242ff4", + "id": 5752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5735, + "nodeType": "ParameterList", + "parameters": [], + "src": "3462:2:60" + }, + "returnParameters": { + "id": 5738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5737, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5752, + "src": "3486:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3486:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3485:9:60" + }, + "scope": 5753, + "src": "3444:115:60", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5754, + "src": "2605:956:60" + } + ], + "src": "33:3529:60" + }, + "bytecode": "0x608060405234801561001057600080fd5b5060405161110e38038061110e8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061107a806100946000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063811c34d31161005b578063811c34d31461010c5780638a4068dd14610116578063b759f95414610120578063de242ff41461014e5761007d565b806310bad4cf1461008257806311e330b2146100b05780633ba93f26146100de575b600080fd5b6100ae6004803603602081101561009857600080fd5b810190808035906020019092919050505061016c565b005b6100dc600480360360208110156100c657600080fd5b81019080803590602001909291905050506101bc565b005b61010a600480360360208110156100f457600080fd5b810190808035906020019092919050505061020c565b005b61011461029b565b005b61011e6102ed565b005b61014c6004803603602081101561013657600080fd5b810190808035906020019092919050505061033c565b005b61015661038c565b6040518082815260200191505060405180910390f35b6101b96000826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166104a19092919063ffffffff16565b50565b6102096000826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106769092919063ffffffff16565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ba93f26826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561028057600080fd5b505af1158015610294573d6000803e3d6000fd5b5050505050565b6102eb60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610831909392919063ffffffff16565b565b61033a6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091e9092919063ffffffff16565b565b6103896000826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109d69092919063ffffffff16565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e6000806040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b8101908080519060200190929190505050905090565b60006105bb82604051806060016040528060298152602001610fbc602991398673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561057157600080fd5b505afa158015610585573d6000803e3d6000fd5b505050506040513d602081101561059b57600080fd5b8101908080519060200190929190505050610bdd9092919063ffffffff16565b90506106708463095ea7b360e01b8584604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b50505050565b6000610776828573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561072d57600080fd5b505afa158015610741573d6000803e3d6000fd5b505050506040513d602081101561075757600080fd5b8101908080519060200190929190505050610ee890919063ffffffff16565b905061082b8463095ea7b360e01b8584604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b50505050565b610918846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b50505050565b6109d18363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b505050565b6000811480610ad0575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a9357600080fd5b505afa158015610aa7573d6000803e3d6000fd5b505050506040513d6020811015610abd57600080fd5b8101908080519060200190929190505050145b610b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061100f6036913960400191505060405180910390fd5b610bd88363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b505050565b6000838311158290610c8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c4f578082015181840152602081019050610c34565b50505050905090810190601f168015610c7c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b610cbc8273ffffffffffffffffffffffffffffffffffffffff16610f70565b610d2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610d7d5780518252602082019150602081019050602083039250610d5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ddf576040519150601f19603f3d011682016040523d82523d6000602084013e610de4565b606091505b509150915081610e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610ee257808060200190516020811015610e7b57600080fd5b8101908080519060200190929190505050610ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610fe5602a913960400191505060405180910390fd5b5b50505050565b600080828401905083811015610f66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610fb257506000801b8214155b9250505091905056fe5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220b389c28cb8a9dc523c88de6aa8f34416b8ec48d1246ff6465f862c9bb210081664736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063811c34d31161005b578063811c34d31461010c5780638a4068dd14610116578063b759f95414610120578063de242ff41461014e5761007d565b806310bad4cf1461008257806311e330b2146100b05780633ba93f26146100de575b600080fd5b6100ae6004803603602081101561009857600080fd5b810190808035906020019092919050505061016c565b005b6100dc600480360360208110156100c657600080fd5b81019080803590602001909291905050506101bc565b005b61010a600480360360208110156100f457600080fd5b810190808035906020019092919050505061020c565b005b61011461029b565b005b61011e6102ed565b005b61014c6004803603602081101561013657600080fd5b810190808035906020019092919050505061033c565b005b61015661038c565b6040518082815260200191505060405180910390f35b6101b96000826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166104a19092919063ffffffff16565b50565b6102096000826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106769092919063ffffffff16565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ba93f26826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561028057600080fd5b505af1158015610294573d6000803e3d6000fd5b5050505050565b6102eb60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610831909392919063ffffffff16565b565b61033a6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091e9092919063ffffffff16565b565b6103896000826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109d69092919063ffffffff16565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e6000806040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b8101908080519060200190929190505050905090565b60006105bb82604051806060016040528060298152602001610fbc602991398673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561057157600080fd5b505afa158015610585573d6000803e3d6000fd5b505050506040513d602081101561059b57600080fd5b8101908080519060200190929190505050610bdd9092919063ffffffff16565b90506106708463095ea7b360e01b8584604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b50505050565b6000610776828573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561072d57600080fd5b505afa158015610741573d6000803e3d6000fd5b505050506040513d602081101561075757600080fd5b8101908080519060200190929190505050610ee890919063ffffffff16565b905061082b8463095ea7b360e01b8584604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b50505050565b610918846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b50505050565b6109d18363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b505050565b6000811480610ad0575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a9357600080fd5b505afa158015610aa7573d6000803e3d6000fd5b505050506040513d6020811015610abd57600080fd5b8101908080519060200190929190505050145b610b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061100f6036913960400191505060405180910390fd5b610bd88363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610c9d565b505050565b6000838311158290610c8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c4f578082015181840152602081019050610c34565b50505050905090810190601f168015610c7c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b610cbc8273ffffffffffffffffffffffffffffffffffffffff16610f70565b610d2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610d7d5780518252602082019150602081019050602083039250610d5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ddf576040519150601f19603f3d011682016040523d82523d6000602084013e610de4565b606091505b509150915081610e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610ee257808060200190516020811015610e7b57600080fd5b8101908080519060200190929190505050610ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610fe5602a913960400191505060405180910390fd5b5b50505050565b600080828401905083811015610f66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610fb257506000801b8214155b9250505091905056fe5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220b389c28cb8a9dc523c88de6aa8f34416b8ec48d1246ff6465f862c9bb210081664736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SafeMath.json b/node_modules/@openzeppelin/contracts/build/contracts/SafeMath.json new file mode 100644 index 0000000..3485494 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SafeMath.json @@ -0,0 +1,2579 @@ +{ + "fileName": "SafeMath.sol", + "contractName": "SafeMath", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b != 0, errorMessage);\n return a % b;\n }\n}\n", + "sourcePath": "contracts/math/SafeMath.sol", + "sourceMap": "622:4578:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "622:4578:17:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 2421 + ] + }, + "id": 2422, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2227, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:17" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2228, + "nodeType": "StructuredDocumentation", + "src": "58:563:17", + "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "fullyImplemented": true, + "id": 2421, + "linearizedBaseContracts": [ + 2421 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2253, + "nodeType": "Block", + "src": "941:109:17", + "statements": [ + { + "assignments": [ + 2239 + ], + "declarations": [ + { + "constant": false, + "id": 2239, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2253, + "src": "951:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "951:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2243, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2240, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2231, + "src": "963:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2241, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2233, + "src": "967:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "963:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "951:17:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2245, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "986:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2246, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2231, + "src": "991:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "986:6:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "994:29:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + }, + "value": "SafeMath: addition overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + } + ], + "id": 2244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "978:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "978:46:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2250, + "nodeType": "ExpressionStatement", + "src": "978:46:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 2251, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "1042:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2237, + "id": 2252, + "nodeType": "Return", + "src": "1035:8:17" + } + ] + }, + "documentation": { + "id": 2229, + "nodeType": "StructuredDocumentation", + "src": "645:224:17", + "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 2254, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2231, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2254, + "src": "887:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "887:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2233, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2254, + "src": "898:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "898:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "886:22:17" + }, + "returnParameters": { + "id": 2237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2236, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2254, + "src": "932:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "932:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "931:9:17" + }, + "scope": 2421, + "src": "874:176:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2270, + "nodeType": "Block", + "src": "1388:67:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2265, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2257, + "src": "1409:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2266, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "1412:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 2267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1415:32:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 2264, + "name": "sub", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2271, + 2299 + ], + "referencedDeclaration": 2299, + "src": "1405:3:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1405:43:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2263, + "id": 2269, + "nodeType": "Return", + "src": "1398:50:17" + } + ] + }, + "documentation": { + "id": 2255, + "nodeType": "StructuredDocumentation", + "src": "1056:260:17", + "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2271, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2257, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2271, + "src": "1334:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2256, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1334:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2259, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2271, + "src": "1345:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1345:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1333:22:17" + }, + "returnParameters": { + "id": 2263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2262, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2271, + "src": "1379:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1379:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1378:9:17" + }, + "scope": 2421, + "src": "1321:134:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2298, + "nodeType": "Block", + "src": "1841:92:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2284, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2276, + "src": "1859:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2285, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2274, + "src": "1864:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1859:6:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 2287, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2278, + "src": "1867:12:17", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2283, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1851:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1851:29:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2289, + "nodeType": "ExpressionStatement", + "src": "1851:29:17" + }, + { + "assignments": [ + 2291 + ], + "declarations": [ + { + "constant": false, + "id": 2291, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2298, + "src": "1890:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1890:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2295, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2292, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2274, + "src": "1902:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2293, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2276, + "src": "1906:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1902:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1890:17:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 2296, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "1925:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2282, + "id": 2297, + "nodeType": "Return", + "src": "1918:8:17" + } + ] + }, + "documentation": { + "id": 2272, + "nodeType": "StructuredDocumentation", + "src": "1461:280:17", + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2299, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2274, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2299, + "src": "1759:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2273, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1759:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2276, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2299, + "src": "1770:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2275, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1770:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2278, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2299, + "src": "1781:26:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2277, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1781:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1758:50:17" + }, + "returnParameters": { + "id": 2282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2281, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2299, + "src": "1832:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1832:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1831:9:17" + }, + "scope": 2421, + "src": "1746:187:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2333, + "nodeType": "Block", + "src": "2247:392:17", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2309, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2302, + "src": "2479:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2484:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2479:6:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2315, + "nodeType": "IfStatement", + "src": "2475:45:17", + "trueBody": { + "id": 2314, + "nodeType": "Block", + "src": "2487:33:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2508:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2308, + "id": 2313, + "nodeType": "Return", + "src": "2501:8:17" + } + ] + } + }, + { + "assignments": [ + 2317 + ], + "declarations": [ + { + "constant": false, + "id": 2317, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2333, + "src": "2530:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2530:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2321, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2318, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2302, + "src": "2542:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2319, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2304, + "src": "2546:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2542:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2530:17:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2323, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "2565:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2324, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2302, + "src": "2569:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2326, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2304, + "src": "2574:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:10:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 2328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2577:35:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + }, + "value": "SafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + } + ], + "id": 2322, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2557:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2557:56:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2330, + "nodeType": "ExpressionStatement", + "src": "2557:56:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 2331, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2317, + "src": "2631:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2308, + "id": 2332, + "nodeType": "Return", + "src": "2624:8:17" + } + ] + }, + "documentation": { + "id": 2300, + "nodeType": "StructuredDocumentation", + "src": "1939:236:17", + "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 2334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2302, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2334, + "src": "2193:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2193:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2304, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2334, + "src": "2204:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2204:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2192:22:17" + }, + "returnParameters": { + "id": 2308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2307, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2334, + "src": "2238:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2238:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2237:9:17" + }, + "scope": 2421, + "src": "2180:459:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2350, + "nodeType": "Block", + "src": "3168:63:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2345, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2337, + "src": "3189:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2346, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2339, + "src": "3192:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 2347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3195:28:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 2344, + "name": "div", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2351, + 2379 + ], + "referencedDeclaration": 2379, + "src": "3185:3:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 2348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3185:39:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2343, + "id": 2349, + "nodeType": "Return", + "src": "3178:46:17" + } + ] + }, + "documentation": { + "id": 2335, + "nodeType": "StructuredDocumentation", + "src": "2645:451:17", + "text": " @dev Returns the integer division of two unsigned integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2351, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2337, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2351, + "src": "3114:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3114:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2339, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2351, + "src": "3125:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3125:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3113:22:17" + }, + "returnParameters": { + "id": 2343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2342, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2351, + "src": "3159:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3159:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3158:9:17" + }, + "scope": 2421, + "src": "3101:130:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2378, + "nodeType": "Block", + "src": "3808:177:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2364, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "3826:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3830:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3826:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 2367, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2358, + "src": "3833:12:17", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2363, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3818:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3818:28:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2369, + "nodeType": "ExpressionStatement", + "src": "3818:28:17" + }, + { + "assignments": [ + 2371 + ], + "declarations": [ + { + "constant": false, + "id": 2371, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2378, + "src": "3856:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3856:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2375, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2372, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2354, + "src": "3868:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2373, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "3872:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3868:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3856:17:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 2376, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2371, + "src": "3977:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2362, + "id": 2377, + "nodeType": "Return", + "src": "3970:8:17" + } + ] + }, + "documentation": { + "id": 2352, + "nodeType": "StructuredDocumentation", + "src": "3237:471:17", + "text": " @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2379, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2354, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2379, + "src": "3726:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2356, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2379, + "src": "3737:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3737:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2358, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2379, + "src": "3748:26:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2357, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3748:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3725:50:17" + }, + "returnParameters": { + "id": 2362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2361, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2379, + "src": "3799:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3799:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3798:9:17" + }, + "scope": 2421, + "src": "3713:272:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2395, + "nodeType": "Block", + "src": "4503:61:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2390, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2382, + "src": "4524:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2391, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2384, + "src": "4527:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 2392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4530:26:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 2389, + "name": "mod", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2420 + ], + "referencedDeclaration": 2420, + "src": "4520:3:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4520:37:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2388, + "id": 2394, + "nodeType": "Return", + "src": "4513:44:17" + } + ] + }, + "documentation": { + "id": 2380, + "nodeType": "StructuredDocumentation", + "src": "3991:440:17", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2396, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2382, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2396, + "src": "4449:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4449:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2384, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2396, + "src": "4460:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4460:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4448:22:17" + }, + "returnParameters": { + "id": 2388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2387, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2396, + "src": "4494:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4494:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4493:9:17" + }, + "scope": 2421, + "src": "4436:128:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2419, + "nodeType": "Block", + "src": "5130:68:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2409, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2401, + "src": "5148:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5153:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5148:6:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 2412, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "5156:12:17", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2408, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5140:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5140:29:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2414, + "nodeType": "ExpressionStatement", + "src": "5140:29:17" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2415, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2399, + "src": "5186:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 2416, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2401, + "src": "5190:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5186:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2407, + "id": 2418, + "nodeType": "Return", + "src": "5179:12:17" + } + ] + }, + "documentation": { + "id": 2397, + "nodeType": "StructuredDocumentation", + "src": "4570:460:17", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2420, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2404, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2399, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2420, + "src": "5048:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2398, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5048:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2401, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2420, + "src": "5059:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2400, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5059:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2403, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2420, + "src": "5070:26:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2402, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5070:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5047:50:17" + }, + "returnParameters": { + "id": 2407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2406, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2420, + "src": "5121:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5121:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5120:9:17" + }, + "scope": 2421, + "src": "5035:163:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2422, + "src": "622:4578:17" + } + ], + "src": "33:5168:17" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202949b23fc2ad9415abf63fc1d1d1275a4c6836f60ab7f637db1ff1dd62219f5a64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202949b23fc2ad9415abf63fc1d1d1275a4c6836f60ab7f637db1ff1dd62219f5a64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SafeMathMock.json b/node_modules/@openzeppelin/contracts/build/contracts/SafeMathMock.json new file mode 100644 index 0000000..6e38d7b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SafeMathMock.json @@ -0,0 +1,1245 @@ +{ + "fileName": "SafeMathMock.sol", + "contractName": "SafeMathMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../math/SafeMath.sol\";\n\ncontract SafeMathMock {\n function mul(uint256 a, uint256 b) public pure returns (uint256) {\n return SafeMath.mul(a, b);\n }\n\n function div(uint256 a, uint256 b) public pure returns (uint256) {\n return SafeMath.div(a, b);\n }\n\n function sub(uint256 a, uint256 b) public pure returns (uint256) {\n return SafeMath.sub(a, b);\n }\n\n function add(uint256 a, uint256 b) public pure returns (uint256) {\n return SafeMath.add(a, b);\n }\n\n function mod(uint256 a, uint256 b) public pure returns (uint256) {\n return SafeMath.mod(a, b);\n }\n}\n", + "sourcePath": "contracts/mocks/SafeMathMock.sol", + "sourceMap": "90:589:61:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "90:589:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;457:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;570;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;457;513:7;539:18;552:1;555;539:12;:18::i;:::-;532:25;;457:107;;;;:::o;231:::-;287:7;313:18;326:1;329;313:12;:18::i;:::-;306:25;;231:107;;;;:::o;344:::-;400:7;426:18;439:1;442;426:12;:18::i;:::-;419:25;;344:107;;;;:::o;118:::-;174:7;200:18;213:1;216;200:12;:18::i;:::-;193:25;;118:107;;;;:::o;570:::-;626:7;652:18;665:1;668;652:12;:18::i;:::-;645:25;;570:107;;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;3066:130::-;3124:7;3150:39;3154:1;3157;3150:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3143:46;;3066:130;;;;:::o;1307:134::-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o;2152:459::-;2210:7;2456:1;2451;:6;2447:45;;;2480:1;2473:8;;;;2447:45;2502:9;2518:1;2514;:5;2502:17;;2546:1;2541;2537;:5;;;;;;:10;2529:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:1;2596:8;;;2152:459;;;;;:::o;4453:128::-;4511:7;4537:37;4541:1;4544;4537:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;4530:44;;4453:128;;;;:::o;3671:338::-;3757:7;3854:1;3850;:5;3857:12;3842:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:9;3896:1;3892;:5;;;;;;3880:17;;4001:1;3994:8;;;3671:338;;;;;:::o;1725:187::-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;5045:163::-;5131:7;5163:1;5158;:6;;5166:12;5150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5200:1;5196;:5;;;;;;5189:12;;5045:163;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "add", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "div", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "mod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "mul", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "b", + "type": "uint256" + } + ], + "name": "sub", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SafeMathMock.sol", + "exportedSymbols": { + "SafeMathMock": [ + 5837 + ] + }, + "id": 5838, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5755, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:61" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 5756, + "nodeType": "ImportDirective", + "scope": 5838, + "sourceUnit": 2810, + "src": "58:30:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5837, + "linearizedBaseContracts": [ + 5837 + ], + "name": "SafeMathMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5771, + "nodeType": "Block", + "src": "183:42:61", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5767, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5758, + "src": "213:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5768, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5760, + "src": "216:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5765, + "name": "SafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2809, + "src": "200:8:61", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeMath_$2809_$", + "typeString": "type(library SafeMath)" + } + }, + "id": 5766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2722, + "src": "200:12:61", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "200:18:61", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5764, + "id": 5770, + "nodeType": "Return", + "src": "193:25:61" + } + ] + }, + "documentation": null, + "functionSelector": "c8a4ac9c", + "id": 5772, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5758, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5772, + "src": "131:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5757, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "131:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5760, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5772, + "src": "142:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "142:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "130:22:61" + }, + "returnParameters": { + "id": 5764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5763, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5772, + "src": "174:7:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "174:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "173:9:61" + }, + "scope": 5837, + "src": "118:107:61", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5787, + "nodeType": "Block", + "src": "296:42:61", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5783, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5774, + "src": "326:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5784, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5776, + "src": "329:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5781, + "name": "SafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2809, + "src": "313:8:61", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeMath_$2809_$", + "typeString": "type(library SafeMath)" + } + }, + "id": 5782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2739, + "src": "313:12:61", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "313:18:61", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5780, + "id": 5786, + "nodeType": "Return", + "src": "306:25:61" + } + ] + }, + "documentation": null, + "functionSelector": "a391c15b", + "id": 5788, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5777, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5774, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5788, + "src": "244:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5773, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "244:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5776, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5788, + "src": "255:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "255:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "243:22:61" + }, + "returnParameters": { + "id": 5780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5779, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5788, + "src": "287:7:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "287:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:9:61" + }, + "scope": 5837, + "src": "231:107:61", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5803, + "nodeType": "Block", + "src": "409:42:61", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5799, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5790, + "src": "439:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5800, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "442:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5797, + "name": "SafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2809, + "src": "426:8:61", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeMath_$2809_$", + "typeString": "type(library SafeMath)" + } + }, + "id": 5798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2659, + "src": "426:12:61", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "426:18:61", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5796, + "id": 5802, + "nodeType": "Return", + "src": "419:25:61" + } + ] + }, + "documentation": null, + "functionSelector": "b67d77c5", + "id": 5804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5790, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5804, + "src": "357:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5789, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "357:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5792, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5804, + "src": "368:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5791, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "368:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "356:22:61" + }, + "returnParameters": { + "id": 5796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5795, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5804, + "src": "400:7:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "400:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "399:9:61" + }, + "scope": 5837, + "src": "344:107:61", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5819, + "nodeType": "Block", + "src": "522:42:61", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5815, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5806, + "src": "552:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5816, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5808, + "src": "555:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5813, + "name": "SafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2809, + "src": "539:8:61", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeMath_$2809_$", + "typeString": "type(library SafeMath)" + } + }, + "id": 5814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2642, + "src": "539:12:61", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "539:18:61", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5812, + "id": 5818, + "nodeType": "Return", + "src": "532:25:61" + } + ] + }, + "documentation": null, + "functionSelector": "771602f7", + "id": 5820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5806, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5820, + "src": "470:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "470:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5808, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5820, + "src": "481:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "481:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "469:22:61" + }, + "returnParameters": { + "id": 5812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5811, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5820, + "src": "513:7:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5810, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "513:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "512:9:61" + }, + "scope": 5837, + "src": "457:107:61", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5835, + "nodeType": "Block", + "src": "635:42:61", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5831, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5822, + "src": "665:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5832, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5824, + "src": "668:1:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5829, + "name": "SafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2809, + "src": "652:8:61", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeMath_$2809_$", + "typeString": "type(library SafeMath)" + } + }, + "id": 5830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mod", + "nodeType": "MemberAccess", + "referencedDeclaration": 2784, + "src": "652:12:61", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "652:18:61", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5828, + "id": 5834, + "nodeType": "Return", + "src": "645:25:61" + } + ] + }, + "documentation": null, + "functionSelector": "f43f523a", + "id": 5836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5822, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5836, + "src": "583:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5821, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "583:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5824, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5836, + "src": "594:9:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5823, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "594:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "582:22:61" + }, + "returnParameters": { + "id": 5828, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5827, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5836, + "src": "626:7:61", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "626:7:61", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:9:61" + }, + "scope": 5837, + "src": "570:107:61", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5838, + "src": "90:589:61" + } + ], + "src": "33:647:61" + }, + "bytecode": "0x608060405234801561001057600080fd5b506106c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063771602f71461005c578063a391c15b146100a8578063b67d77c5146100f4578063c8a4ac9c14610140578063f43f523a1461018c575b600080fd5b6100926004803603604081101561007257600080fd5b8101908080359060200190929190803590602001909291905050506101d8565b6040518082815260200191505060405180910390f35b6100de600480360360408110156100be57600080fd5b8101908080359060200190929190803590602001909291905050506101ec565b6040518082815260200191505060405180910390f35b61012a6004803603604081101561010a57600080fd5b810190808035906020019092919080359060200190929190505050610200565b6040518082815260200191505060405180910390f35b6101766004803603604081101561015657600080fd5b810190808035906020019092919080359060200190929190505050610214565b6040518082815260200191505060405180910390f35b6101c2600480360360408110156101a257600080fd5b810190808035906020019092919080359060200190929190505050610228565b6040518082815260200191505060405180910390f35b60006101e4838361023c565b905092915050565b60006101f883836102c4565b905092915050565b600061020c838361030e565b905092915050565b60006102208383610358565b905092915050565b600061023483836103de565b905092915050565b6000808284019050838110156102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061030683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610428565b905092915050565b600061035083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506104ee565b905092915050565b60008083141561036b57600090506103d8565b600082840290508284828161037c57fe5b04146103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806106706021913960400191505060405180910390fd5b809150505b92915050565b600061042083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506105ae565b905092915050565b600080831182906104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561049957808201518184015260208101905061047e565b50505050905090810190601f1680156104c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816104e057fe5b049050809150509392505050565b600083831115829061059b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610560578082015181840152602081019050610545565b50505050905090810190601f16801561058d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831415829061065b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610620578082015181840152602081019050610605565b50505050905090810190601f16801561064d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082848161066557fe5b069050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207c62e26dd1367ae097417728b25aea49964070cdf92096d41b784ad89b93543d64736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063771602f71461005c578063a391c15b146100a8578063b67d77c5146100f4578063c8a4ac9c14610140578063f43f523a1461018c575b600080fd5b6100926004803603604081101561007257600080fd5b8101908080359060200190929190803590602001909291905050506101d8565b6040518082815260200191505060405180910390f35b6100de600480360360408110156100be57600080fd5b8101908080359060200190929190803590602001909291905050506101ec565b6040518082815260200191505060405180910390f35b61012a6004803603604081101561010a57600080fd5b810190808035906020019092919080359060200190929190505050610200565b6040518082815260200191505060405180910390f35b6101766004803603604081101561015657600080fd5b810190808035906020019092919080359060200190929190505050610214565b6040518082815260200191505060405180910390f35b6101c2600480360360408110156101a257600080fd5b810190808035906020019092919080359060200190929190505050610228565b6040518082815260200191505060405180910390f35b60006101e4838361023c565b905092915050565b60006101f883836102c4565b905092915050565b600061020c838361030e565b905092915050565b60006102208383610358565b905092915050565b600061023483836103de565b905092915050565b6000808284019050838110156102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061030683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610428565b905092915050565b600061035083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506104ee565b905092915050565b60008083141561036b57600090506103d8565b600082840290508284828161037c57fe5b04146103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806106706021913960400191505060405180910390fd5b809150505b92915050565b600061042083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506105ae565b905092915050565b600080831182906104d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561049957808201518184015260208101905061047e565b50505050905090810190601f1680156104c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816104e057fe5b049050809150509392505050565b600083831115829061059b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610560578082015181840152602081019050610545565b50505050905090810190601f16801561058d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831415829061065b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610620578082015181840152602081019050610605565b50505050905090810190601f16801561064d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082848161066557fe5b069050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207c62e26dd1367ae097417728b25aea49964070cdf92096d41b784ad89b93543d64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsale.json new file mode 100644 index 0000000..5ab7608 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsale.json @@ -0,0 +1,1205 @@ +{ + "fileName": "SampleCrowdsale.sol", + "contractName": "SampleCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../crowdsale/validation/CappedCrowdsale.sol\";\nimport \"../crowdsale/distribution/RefundableCrowdsale.sol\";\nimport \"../crowdsale/emission/MintedCrowdsale.sol\";\nimport \"../token/ERC20/ERC20Mintable.sol\";\nimport \"../token/ERC20/ERC20Detailed.sol\";\n\n/**\n * @title SampleCrowdsaleToken\n * @dev Very simple ERC20 Token that can be minted.\n * It is meant to be used in a crowdsale contract.\n */\ncontract SampleCrowdsaleToken is ERC20Mintable, ERC20Detailed {\n constructor () public ERC20Detailed(\"Sample Crowdsale Token\", \"SCT\", 18) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n\n/**\n * @title SampleCrowdsale\n * @dev This is an example of a fully fledged crowdsale.\n * The way to add new features to a base crowdsale is by multiple inheritance.\n * In this example we are providing following extensions:\n * CappedCrowdsale - sets a max boundary for raised funds\n * RefundableCrowdsale - set a min goal to be reached and returns funds if it's not met\n * MintedCrowdsale - assumes the token can be minted by the crowdsale, which does so\n * when receiving purchases.\n *\n * After adding multiple features it's good practice to run integration tests\n * to ensure that subcontracts works together as intended.\n */\ncontract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale {\n constructor (\n uint256 openingTime,\n uint256 closingTime,\n uint256 rate,\n address payable wallet,\n uint256 cap,\n ERC20Mintable token,\n uint256 goal\n )\n public\n Crowdsale(rate, wallet, token)\n CappedCrowdsale(cap)\n TimedCrowdsale(openingTime, closingTime)\n RefundableCrowdsale(goal)\n {\n //As goal needs to be met for a successful crowdsale\n //the value needs to less or equal than a cap which is limit for accepted funds\n require(goal <= cap, \"SampleCrowdSale: goal is greater than cap\");\n }\n}\n", + "sourcePath": "contracts/examples/SampleCrowdsale.sol", + "sourceMap": "1257:694:35:-;;;1345:604;8:9:-1;5:2;;;30:1;27;20:12;5:2;1345:604:35;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1345:604:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:4;1654:11;1667;1626:3;1581:4;1587:6;1595:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;488:1:21;482:3;:7;474:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:3;529:4;:10;;;;431:115;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;459:5:14;446:10;;:18;;;;;;;;;;;;;;;;;;1269:1:16;1262:4;:8;1254:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1342:8;:6;;;:8;;:::i;:::-;1325:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1325:26:16;1315:7;;:36;;;;;;;;;;;;;;;;;;1369:4;1361:5;:12;;;;1210:170;1893:3:35;1885:4;:11;;1877:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1345:604;;;;;;;1257:694;;3258:87:13;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;1257:694:35:-;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "1257:694:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;1257:694:35;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;609:73:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;609:73:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1462:75:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1462:75:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1590:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;801:262:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:262:14;;;:::i;:::-;;800:92:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;800:92:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2046:94:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2046:94:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;561:82:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;561:82:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1436:89:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1687:236:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1687:236:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1687:236:16;;;;;;;;;;;;;;;;;;;:::i;:::-;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;609:73:21:-;645:7;671:4;;664:11;;609:73;:::o;1462:75:16:-;1499:7;1525:5;;1518:12;;1462:75;:::o;3568:85:13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;1590:89::-;1634:7;1660:12;;1653:19;;1590:89;:::o;801:262:14:-;847:10;;;;;;;;;;;846:11;838:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;919:11;:9;:11::i;:::-;911:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:4;978:10;;:17;;;;;;;;;;;;;;;;;;1006:15;:13;:15::i;:::-;1036:20;;;;;;;;;;801:262::o;800:92:21:-;843:4;881;;866:11;:9;:11::i;:::-;:19;;859:26;;800:92;:::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;2046:94:16:-;2090:4;2128:5;;2113:11;:9;:11::i;:::-;:20;;2106:27;;2046:94;:::o;561:82:14:-;603:4;626:10;;;;;;;;;;;619:17;;561:82;:::o;1436:89:24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;1687:236:16:-;1759:11;:9;:11::i;:::-;1751:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:13;:11;:13::i;:::-;1827:14;1819:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:7;;;;;;;;;;;:16;;;1907:8;1890:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:26:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1890:26:16;;;;1687:236;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;2568:97:16:-;2612:7;;;;;;;;;;;:15;;;2634:9;2645:12;:10;:12::i;:::-;2612:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2612:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2612:46:16;;;;;2568:97::o;5728:149:13:-;;;:::o;2234:238:16:-;2282:13;:11;:13::i;:::-;2278:156;;;2311:7;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2311:15:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2311:15:16;;;;2340:7;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2340:29:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2340:29:16;;;;2278:156;;;2400:7;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2400:23:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:23:16;;;;2278:156;2444:21;:19;:21::i;:::-;2234:238::o;1088:237:21:-;1182:50;1209:11;1222:9;1182:26;:50::i;:::-;1280:4;;1250:26;1266:9;1250:11;:9;:11::i;:::-;:15;;:26;;;;:::i;:::-;:34;;1242:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:237;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;510:309:19:-;711:7;:5;:7::i;:::-;689:36;;;726:11;739;689:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;689:62:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;689:62:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;689:62:19;;;;;;;;;;;;;;;;668:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;510:309;;:::o;1272:98:14:-;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cap", + "type": "uint256" + }, + { + "internalType": "contract ERC20Mintable", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "goal", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "capReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/examples/SampleCrowdsale.sol", + "exportedSymbols": { + "SampleCrowdsale": [ + 4542 + ], + "SampleCrowdsaleToken": [ + 4495 + ] + }, + "id": 4543, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4476, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:35" + }, + { + "absolutePath": "contracts/crowdsale/validation/CappedCrowdsale.sol", + "file": "../crowdsale/validation/CappedCrowdsale.sol", + "id": 4477, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 2797, + "src": "25:53:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "file": "../crowdsale/distribution/RefundableCrowdsale.sol", + "id": 4478, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 2440, + "src": "79:59:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/emission/MintedCrowdsale.sol", + "file": "../crowdsale/emission/MintedCrowdsale.sol", + "id": 4479, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 2586, + "src": "139:51:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 4480, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 10046, + "src": "191:42:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Detailed.sol", + "file": "../token/ERC20/ERC20Detailed.sol", + "id": 4481, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 10018, + "src": "234:42:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4482, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "453:13:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 4483, + "nodeType": "InheritanceSpecifier", + "src": "453:13:35" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4484, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10017, + "src": "468:13:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$10017", + "typeString": "contract ERC20Detailed" + } + }, + "id": 4485, + "nodeType": "InheritanceSpecifier", + "src": "468:13:35" + } + ], + "contractDependencies": [ + 26, + 1408, + 9866, + 10017, + 10045, + 10216 + ], + "contractKind": "contract", + "documentation": "@title SampleCrowdsaleToken\n@dev Very simple ERC20 Token that can be minted.\nIt is meant to be used in a crowdsale contract.", + "fullyImplemented": true, + "id": 4495, + "linearizedBaseContracts": [ + 4495, + 10017, + 10045, + 1408, + 9866, + 10216, + 26 + ], + "name": "SampleCrowdsaleToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4493, + "nodeType": "Block", + "src": "561:64:35", + "statements": [] + }, + "documentation": null, + "id": 4494, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "53616d706c652043726f776473616c6520546f6b656e", + "id": 4488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "524:24:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a85b1937a20a5d495de875a4a7af46ff581ccf3f336ab6c1a136ea0b8088ca", + "typeString": "literal_string \"Sample Crowdsale Token\"" + }, + "value": "Sample Crowdsale Token" + }, + { + "argumentTypes": null, + "hexValue": "534354", + "id": 4489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "550:5:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b2b1dc3929a2664c613672dce30cd0d6fe6b6e782ad9ee21092964c70aaaffa9", + "typeString": "literal_string \"SCT\"" + }, + "value": "SCT" + }, + { + "argumentTypes": null, + "hexValue": "3138", + "id": 4490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "557:2:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "id": 4491, + "modifierName": { + "argumentTypes": null, + "id": 4487, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10017, + "src": "510:13:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$10017_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "510:50:35" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4486, + "nodeType": "ParameterList", + "parameters": [], + "src": "500:2:35" + }, + "returnParameters": { + "id": 4492, + "nodeType": "ParameterList", + "parameters": [], + "src": "561:0:35" + }, + "scope": 4495, + "src": "488:137:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4543, + "src": "420:207:35" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4496, + "name": "CappedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2796, + "src": "1285:15:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CappedCrowdsale_$2796", + "typeString": "contract CappedCrowdsale" + } + }, + "id": 4497, + "nodeType": "InheritanceSpecifier", + "src": "1285:15:35" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4498, + "name": "RefundableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2439, + "src": "1302:19:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundableCrowdsale_$2439", + "typeString": "contract RefundableCrowdsale" + } + }, + "id": 4499, + "nodeType": "InheritanceSpecifier", + "src": "1302:19:35" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4500, + "name": "MintedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2585, + "src": "1323:15:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MintedCrowdsale_$2585", + "typeString": "contract MintedCrowdsale" + } + }, + "id": 4501, + "nodeType": "InheritanceSpecifier", + "src": "1323:15:35" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 2439, + 2585, + 2796, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title SampleCrowdsale\n@dev This is an example of a fully fledged crowdsale.\nThe way to add new features to a base crowdsale is by multiple inheritance.\nIn this example we are providing following extensions:\nCappedCrowdsale - sets a max boundary for raised funds\nRefundableCrowdsale - set a min goal to be reached and returns funds if it's not met\nMintedCrowdsale - assumes the token can be minted by the crowdsale, which does so\nwhen receiving purchases.\n * After adding multiple features it's good practice to run integration tests\nto ensure that subcontracts works together as intended.", + "fullyImplemented": true, + "id": 4542, + "linearizedBaseContracts": [ + 4542, + 2585, + 2439, + 2179, + 3087, + 2796, + 2119, + 13820, + 26 + ], + "name": "SampleCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4540, + "nodeType": "Block", + "src": "1718:231:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4534, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "1885:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 4535, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4511, + "src": "1893:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1885:11:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616d706c6543726f776453616c653a20676f616c2069732067726561746572207468616e20636170", + "id": 4537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1898:43:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5c6ad38480d4d604caf976e75a52d6007b5352d16ac172e53fb416aa139c7c7", + "typeString": "literal_string \"SampleCrowdSale: goal is greater than cap\"" + }, + "value": "SampleCrowdSale: goal is greater than cap" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5c6ad38480d4d604caf976e75a52d6007b5352d16ac172e53fb416aa139c7c7", + "typeString": "literal_string \"SampleCrowdSale: goal is greater than cap\"" + } + ], + "id": 4533, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1877:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1877:65:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4539, + "nodeType": "ExpressionStatement", + "src": "1877:65:35" + } + ] + }, + "documentation": null, + "id": 4541, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4518, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4507, + "src": "1581:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4519, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4509, + "src": "1587:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4520, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "1595:5:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + } + ], + "id": 4521, + "modifierName": { + "argumentTypes": null, + "id": 4517, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "1571:9:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1571:30:35" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4523, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4511, + "src": "1626:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4524, + "modifierName": { + "argumentTypes": null, + "id": 4522, + "name": "CappedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2796, + "src": "1610:15:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_CappedCrowdsale_$2796_$", + "typeString": "type(contract CappedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1610:20:35" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4526, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4503, + "src": "1654:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4527, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4505, + "src": "1667:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4528, + "modifierName": { + "argumentTypes": null, + "id": 4525, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "1639:14:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1639:40:35" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4530, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "1708:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4531, + "modifierName": { + "argumentTypes": null, + "id": 4529, + "name": "RefundableCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "1688:19:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RefundableCrowdsale_$2439_$", + "typeString": "type(contract RefundableCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1688:25:35" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4503, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1367:19:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1367:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4505, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1396:19:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1396:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4507, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1425:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1425:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4509, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1447:22:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1447:15:35", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4511, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1479:11:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4513, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1500:19:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 4512, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "1500:13:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4515, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1529:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4514, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1529:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1357:190:35" + }, + "returnParameters": { + "id": 4532, + "nodeType": "ParameterList", + "parameters": [], + "src": "1718:0:35" + }, + "scope": 4542, + "src": "1345:604:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4543, + "src": "1257:694:35" + } + ], + "src": "0:1952:35" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002eab38038062002eab833981810160405260e08110156200003757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508087878588888760016000806101000a81548160ff021916908315150217905550600083116200011c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018062002e866025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200022c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002e396024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050600081116200032f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43617070656443726f776473616c653a2063617020697320300000000000000081525060200191505060405180910390fd5b80600481905550504282101562000392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018062002dcf6033913960400191505060405180910390fd5b818111620003ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018062002e026037913960400191505060405180910390fd5b816005819055508060068190555050506000600760006101000a81548160ff021916908315150217905550600081116200048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f526566756e6461626c6543726f776473616c653a20676f616c2069732030000081525060200191505060405180910390fd5b6200049e620005b060201b60201c565b604051620004ac90620005da565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620004ff573d6000803e3d6000fd5b50600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806008819055505082811115620005a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018062002e5d6029913960400191505060405180910390fd5b50505050505050620005e8565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611660806200176f83390190565b61117780620005f86000396000f3fe6080604052600436106100f35760003560e01c80634f9359451161008a578063b7a8807c11610059578063b7a8807c14610335578063bffa55d514610360578063ec8ac4d8146103b1578063fc0c546a146103f5576100f3565b80634f93594514610251578063521eb273146102805780637d3d6522146102d7578063b3f05b9714610306576100f3565b80634042b66f116100c65780634042b66f146101b557806347535d7b146101e05780634b6753bc1461020f5780634bb278f31461023a576100f3565b80631515bc2b146101055780632c4e722e14610134578063355274ea1461015f578063401938831461018a575b6101036100fe61044c565b610454565b005b34801561011157600080fd5b5061011a6105df565b604051808215151515815260200191505060405180910390f35b34801561014057600080fd5b506101496105eb565b6040518082815260200191505060405180910390f35b34801561016b57600080fd5b506101746105f5565b6040518082815260200191505060405180910390f35b34801561019657600080fd5b5061019f6105ff565b6040518082815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610609565b6040518082815260200191505060405180910390f35b3480156101ec57600080fd5b506101f5610613565b604051808215151515815260200191505060405180910390f35b34801561021b57600080fd5b5061022461062e565b6040518082815260200191505060405180910390f35b34801561024657600080fd5b5061024f610638565b005b34801561025d57600080fd5b50610266610769565b604051808215151515815260200191505060405180910390f35b34801561028c57600080fd5b5061029561077d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b506102ec6107a7565b604051808215151515815260200191505060405180910390f35b34801561031257600080fd5b5061031b6107bb565b604051808215151515815260200191505060405180910390f35b34801561034157600080fd5b5061034a6107d2565b6040518082815260200191505060405180910390f35b34801561036c57600080fd5b506103af6004803603602081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dc565b005b6103f3600480360360208110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610454565b005b34801561040157600080fd5b5061040a610953565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166104d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506104fe828261097c565b600061050982610a04565b905061052082600354610a2290919063ffffffff16565b6003819055506105308382610aaa565b8273ffffffffffffffffffffffffffffffffffffffff1661054f61044c565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36105ae8383610ab8565b6105b6610abc565b6105c08383610b7f565b505060016000806101000a81548160ff02191690831515021790555050565b60006006544211905090565b6000600254905090565b6000600454905090565b6000600854905090565b6000600354905090565b6000600554421015801561062957506006544211155b905090565b6000600654905090565b600760009054906101000a900460ff161561069e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806110af6027913960400191505060405180910390fd5b6106a66105df565b610718576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555061073b610b83565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600454610776610609565b1015905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006008546107b4610609565b1015905090565b6000600760009054906101000a900460ff16905090565b6000600554905090565b6107e46107bb565b610839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111216022913960400191505060405180910390fd5b6108416107a7565b15610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110d66021913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b5050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610984610613565b6109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b610a008282610d26565b5050565b6000610a1b60025483610dc590919063ffffffff16565b9050919050565b600080828401905083811015610aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610ab48282610e4b565b5050565b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134610b0361044c565b6040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b5050505050565b5050565b610b8b6107a7565b15610c9957600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bfa57600080fd5b505af1158015610c0e573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af6549a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b50505050610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050505b610d24610f8a565b565b610d308282610f8c565b600454610d4d82610d3f610609565b610a2290919063ffffffff16565b1115610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43617070656443726f776473616c653a2063617020657863656564656400000081525060200191505060405180910390fd5b5050565b600080831415610dd85760009050610e45565b6000828402905082848281610de957fe5b0414610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061108e6021913960400191505060405180910390fd5b809150505b92915050565b610e53610953565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b8101908080519060200190929190505050610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e74656443726f776473616c653a206d696e74696e67206661696c65640081525060200191505060405180910390fd5b5050565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806110f7602a913960400191505060405180910390fd5b6000811415611089576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564526566756e6461626c6543726f776473616c653a20676f616c207265616368656443726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a6564a265627a7a7231582028814708ca06a31547d3543d59181084584044fdc611f93c15e125b40bdf316b64736f6c63430005110032608060405234801561001057600080fd5b506040516116603803806116608339818101604052602081101561003357600080fd5b810190808051906020019092919050505060006100546101eb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611633602d913960400191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548160ff021916908360028111156101e057fe5b0217905550506101f3565b600033905090565b611431806102026000396000f3fe6080604052600436106100a75760003560e01c80638c52dc41116100645780638c52dc41146102765780639af6549a1461028d578063c19d93fb146102a4578063c6dbdf61146102dd578063e3a9db1a14610334578063f340fa0114610399576100a7565b80632348238c146100ac57806338af3eed146100fd57806343d726d61461015457806351cff8d91461016b5780636809691a146101bc578063685ca1941461020d575b600080fd5b3480156100b857600080fd5b506100fb600480360360208110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103dd565b005b34801561010957600080fd5b506101126105b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016057600080fd5b506101696105df565b005b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061075a565b005b3480156101c857600080fd5b5061020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b005b34801561021957600080fd5b5061025c6004803603602081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610974565b604051808215151515815260200191505060405180910390f35b34801561028257600080fd5b5061028b6109a6565b005b34801561029957600080fd5b506102a2610b22565b005b3480156102b057600080fd5b506102b9610c21565b604051808260028111156102c957fe5b60ff16815260200191505060405180910390f35b3480156102e957600080fd5b506102f2610c38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034057600080fd5b506103836004803603602081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c61565b6040518082815260200191505060405180910390f35b6103db600480360360208110156103af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610caa565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661041d610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561050f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611375602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061f610d34565b73ffffffffffffffffffffffffffffffffffffffff161461068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600281111561069857fe5b600260009054906101000a900460ff1660028111156106b357fe5b14610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061134c6029913960400191505060405180910390fd5b60028060006101000a81548160ff0219169083600281111561072757fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b61076381610974565b6107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806113196033913960400191505060405180910390fd5b6107c181610d3c565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610804610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610922818373ffffffffffffffffffffffffffffffffffffffff16610f0a90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b60006001600281111561098357fe5b600260009054906101000a900460ff16600281111561099e57fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e6610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b60006002811115610a5f57fe5b600260009054906101000a900460ff166002811115610a7a57fe5b14610ad0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806113cb6032913960400191505060405180910390fd5b6001600260006101000a81548160ff02191690836002811115610aef57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b600280811115610b2e57fe5b600260009054906101000a900460ff166002811115610b4957fe5b14610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061127c6038913960400191505060405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610c1e573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006002811115610cb757fe5b600260009054906101000a900460ff166002811115610cd257fe5b14610d28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112ee602b913960400191505060405180910390fd5b610d318161105b565b50565b600033905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7c610d34565b73ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eb7573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b803073ffffffffffffffffffffffffffffffffffffffff16311015610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b5050905080611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806112b4603a913960400191505060405180910390fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661109b610d34565b73ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061139f602c913960400191505060405180910390fd5b600034905061115e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f390919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b600080828401905083811015611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe526566756e64457363726f773a2062656e65666963696172792063616e206f6e6c79207769746864726177207768696c6520636c6f736564416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564526566756e64457363726f773a2063616e206f6e6c79206465706f736974207768696c6520616374697665436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420616c6c6f77656420746f207769746864726177526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696c65206163746976655365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726566756e6473207768696c6520616374697665a265627a7a723158207e90e52044eac4bae591559c12753cb1a3c276178e36e8ce56440d66bf7a959f64736f6c63430005110032526566756e64457363726f773a2062656e656669636961727920697320746865207a65726f206164647265737354696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d6554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d6543726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737353616d706c6543726f776453616c653a20676f616c2069732067726561746572207468616e2063617043726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100f35760003560e01c80634f9359451161008a578063b7a8807c11610059578063b7a8807c14610335578063bffa55d514610360578063ec8ac4d8146103b1578063fc0c546a146103f5576100f3565b80634f93594514610251578063521eb273146102805780637d3d6522146102d7578063b3f05b9714610306576100f3565b80634042b66f116100c65780634042b66f146101b557806347535d7b146101e05780634b6753bc1461020f5780634bb278f31461023a576100f3565b80631515bc2b146101055780632c4e722e14610134578063355274ea1461015f578063401938831461018a575b6101036100fe61044c565b610454565b005b34801561011157600080fd5b5061011a6105df565b604051808215151515815260200191505060405180910390f35b34801561014057600080fd5b506101496105eb565b6040518082815260200191505060405180910390f35b34801561016b57600080fd5b506101746105f5565b6040518082815260200191505060405180910390f35b34801561019657600080fd5b5061019f6105ff565b6040518082815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610609565b6040518082815260200191505060405180910390f35b3480156101ec57600080fd5b506101f5610613565b604051808215151515815260200191505060405180910390f35b34801561021b57600080fd5b5061022461062e565b6040518082815260200191505060405180910390f35b34801561024657600080fd5b5061024f610638565b005b34801561025d57600080fd5b50610266610769565b604051808215151515815260200191505060405180910390f35b34801561028c57600080fd5b5061029561077d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b506102ec6107a7565b604051808215151515815260200191505060405180910390f35b34801561031257600080fd5b5061031b6107bb565b604051808215151515815260200191505060405180910390f35b34801561034157600080fd5b5061034a6107d2565b6040518082815260200191505060405180910390f35b34801561036c57600080fd5b506103af6004803603602081101561038357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dc565b005b6103f3600480360360208110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610454565b005b34801561040157600080fd5b5061040a610953565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff166104d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555060003490506104fe828261097c565b600061050982610a04565b905061052082600354610a2290919063ffffffff16565b6003819055506105308382610aaa565b8273ffffffffffffffffffffffffffffffffffffffff1661054f61044c565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a36105ae8383610ab8565b6105b6610abc565b6105c08383610b7f565b505060016000806101000a81548160ff02191690831515021790555050565b60006006544211905090565b6000600254905090565b6000600454905090565b6000600854905090565b6000600354905090565b6000600554421015801561062957506006544211155b905090565b6000600654905090565b600760009054906101000a900460ff161561069e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806110af6027913960400191505060405180910390fd5b6106a66105df565b610718576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f46696e616c697a61626c6543726f776473616c653a206e6f7420636c6f73656481525060200191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555061073b610b83565b7f9270cc390c096600a1c17c44345a1ba689fafd99d97487b10cfccf86cf73183660405160405180910390a1565b6000600454610776610609565b1015905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006008546107b4610609565b1015905090565b6000600760009054906101000a900460ff16905090565b6000600554905090565b6107e46107bb565b610839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111216022913960400191505060405180910390fd5b6108416107a7565b15610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110d66021913960400191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b5050505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610984610613565b6109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b610a008282610d26565b5050565b6000610a1b60025483610dc590919063ffffffff16565b9050919050565b600080828401905083811015610aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610ab48282610e4b565b5050565b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134610b0361044c565b6040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610b6457600080fd5b505af1158015610b78573d6000803e3d6000fd5b5050505050565b5050565b610b8b6107a7565b15610c9957600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bfa57600080fd5b505af1158015610c0e573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af6549a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b50505050610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050505b610d24610f8a565b565b610d308282610f8c565b600454610d4d82610d3f610609565b610a2290919063ffffffff16565b1115610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f43617070656443726f776473616c653a2063617020657863656564656400000081525060200191505060405180910390fd5b5050565b600080831415610dd85760009050610e45565b6000828402905082848281610de957fe5b0414610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061108e6021913960400191505060405180910390fd5b809150505b92915050565b610e53610953565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b8101908080519060200190929190505050610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e74656443726f776473616c653a206d696e74696e67206661696c65640081525060200191505060405180910390fd5b5050565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806110f7602a913960400191505060405180910390fd5b6000811415611089576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7746696e616c697a61626c6543726f776473616c653a20616c72656164792066696e616c697a6564526566756e6461626c6543726f776473616c653a20676f616c207265616368656443726f776473616c653a2062656e656669636961727920697320746865207a65726f2061646472657373526566756e6461626c6543726f776473616c653a206e6f742066696e616c697a6564a265627a7a7231582028814708ca06a31547d3543d59181084584044fdc611f93c15e125b40bdf316b64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsaleToken.json b/node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsaleToken.json new file mode 100644 index 0000000..297f26d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SampleCrowdsaleToken.json @@ -0,0 +1,1263 @@ +{ + "fileName": "SampleCrowdsale.sol", + "contractName": "SampleCrowdsaleToken", + "source": "pragma solidity ^0.5.0;\n\nimport \"../crowdsale/validation/CappedCrowdsale.sol\";\nimport \"../crowdsale/distribution/RefundableCrowdsale.sol\";\nimport \"../crowdsale/emission/MintedCrowdsale.sol\";\nimport \"../token/ERC20/ERC20Mintable.sol\";\nimport \"../token/ERC20/ERC20Detailed.sol\";\n\n/**\n * @title SampleCrowdsaleToken\n * @dev Very simple ERC20 Token that can be minted.\n * It is meant to be used in a crowdsale contract.\n */\ncontract SampleCrowdsaleToken is ERC20Mintable, ERC20Detailed {\n constructor () public ERC20Detailed(\"Sample Crowdsale Token\", \"SCT\", 18) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n\n/**\n * @title SampleCrowdsale\n * @dev This is an example of a fully fledged crowdsale.\n * The way to add new features to a base crowdsale is by multiple inheritance.\n * In this example we are providing following extensions:\n * CappedCrowdsale - sets a max boundary for raised funds\n * RefundableCrowdsale - set a min goal to be reached and returns funds if it's not met\n * MintedCrowdsale - assumes the token can be minted by the crowdsale, which does so\n * when receiving purchases.\n *\n * After adding multiple features it's good practice to run integration tests\n * to ensure that subcontracts works together as intended.\n */\ncontract SampleCrowdsale is CappedCrowdsale, RefundableCrowdsale, MintedCrowdsale {\n constructor (\n uint256 openingTime,\n uint256 closingTime,\n uint256 rate,\n address payable wallet,\n uint256 cap,\n ERC20Mintable token,\n uint256 goal\n )\n public\n Crowdsale(rate, wallet, token)\n CappedCrowdsale(cap)\n TimedCrowdsale(openingTime, closingTime)\n RefundableCrowdsale(goal)\n {\n //As goal needs to be met for a successful crowdsale\n //the value needs to less or equal than a cap which is limit for accepted funds\n require(goal <= cap, \"SampleCrowdSale: goal is greater than cap\");\n }\n}\n", + "sourcePath": "contracts/examples/SampleCrowdsale.sol", + "sourceMap": "420:207:35:-;;;488:137;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:137:35;416:163:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;557:2:35;318:24:8;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;512:4:122;504:5;:12;;;;;;;;;;;;:::i;:::-;;536:6;526:7;:16;;;;;;;;;;;;:::i;:::-;;564:8;552:9;;:20;;;;;;;;;;;;;;;;;;416:163;;;420:207:35;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:8:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;420:207:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "420:207:35:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;420:207:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;644:81:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1472:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;502:140:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;502:140:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;838:85:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:85:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:90:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;703:77;;;:::i;:::-;;4496:258:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;494:107:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;644:81:122;681:13;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:119:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;1472:81:122:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;3802:207:119:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;502:140:123:-;576:4;395:22:8;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:123;598:7;607:6;592:5;:22::i;:::-;631:4;624:11;;502:140;;;;:::o;1706:108:119:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;838:85:122:-;877:13;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:85;:::o;607:90:8:-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:119:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;494:107:8:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;2230:132:119:-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:119:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;5962:302:119:-;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;786:119:8:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/examples/SampleCrowdsale.sol", + "exportedSymbols": { + "SampleCrowdsale": [ + 4542 + ], + "SampleCrowdsaleToken": [ + 4495 + ] + }, + "id": 4543, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4476, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:35" + }, + { + "absolutePath": "contracts/crowdsale/validation/CappedCrowdsale.sol", + "file": "../crowdsale/validation/CappedCrowdsale.sol", + "id": 4477, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 2797, + "src": "25:53:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "file": "../crowdsale/distribution/RefundableCrowdsale.sol", + "id": 4478, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 2440, + "src": "79:59:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/emission/MintedCrowdsale.sol", + "file": "../crowdsale/emission/MintedCrowdsale.sol", + "id": 4479, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 2586, + "src": "139:51:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 4480, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 10046, + "src": "191:42:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Detailed.sol", + "file": "../token/ERC20/ERC20Detailed.sol", + "id": 4481, + "nodeType": "ImportDirective", + "scope": 4543, + "sourceUnit": 10018, + "src": "234:42:35", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4482, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "453:13:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "id": 4483, + "nodeType": "InheritanceSpecifier", + "src": "453:13:35" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4484, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10017, + "src": "468:13:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$10017", + "typeString": "contract ERC20Detailed" + } + }, + "id": 4485, + "nodeType": "InheritanceSpecifier", + "src": "468:13:35" + } + ], + "contractDependencies": [ + 26, + 1408, + 9866, + 10017, + 10045, + 10216 + ], + "contractKind": "contract", + "documentation": "@title SampleCrowdsaleToken\n@dev Very simple ERC20 Token that can be minted.\nIt is meant to be used in a crowdsale contract.", + "fullyImplemented": true, + "id": 4495, + "linearizedBaseContracts": [ + 4495, + 10017, + 10045, + 1408, + 9866, + 10216, + 26 + ], + "name": "SampleCrowdsaleToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4493, + "nodeType": "Block", + "src": "561:64:35", + "statements": [] + }, + "documentation": null, + "id": 4494, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "53616d706c652043726f776473616c6520546f6b656e", + "id": 4488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "524:24:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_57a85b1937a20a5d495de875a4a7af46ff581ccf3f336ab6c1a136ea0b8088ca", + "typeString": "literal_string \"Sample Crowdsale Token\"" + }, + "value": "Sample Crowdsale Token" + }, + { + "argumentTypes": null, + "hexValue": "534354", + "id": 4489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "550:5:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b2b1dc3929a2664c613672dce30cd0d6fe6b6e782ad9ee21092964c70aaaffa9", + "typeString": "literal_string \"SCT\"" + }, + "value": "SCT" + }, + { + "argumentTypes": null, + "hexValue": "3138", + "id": 4490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "557:2:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "id": 4491, + "modifierName": { + "argumentTypes": null, + "id": 4487, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10017, + "src": "510:13:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$10017_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "510:50:35" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4486, + "nodeType": "ParameterList", + "parameters": [], + "src": "500:2:35" + }, + "returnParameters": { + "id": 4492, + "nodeType": "ParameterList", + "parameters": [], + "src": "561:0:35" + }, + "scope": 4495, + "src": "488:137:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4543, + "src": "420:207:35" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4496, + "name": "CappedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2796, + "src": "1285:15:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CappedCrowdsale_$2796", + "typeString": "contract CappedCrowdsale" + } + }, + "id": 4497, + "nodeType": "InheritanceSpecifier", + "src": "1285:15:35" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4498, + "name": "RefundableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2439, + "src": "1302:19:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundableCrowdsale_$2439", + "typeString": "contract RefundableCrowdsale" + } + }, + "id": 4499, + "nodeType": "InheritanceSpecifier", + "src": "1302:19:35" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4500, + "name": "MintedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2585, + "src": "1323:15:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MintedCrowdsale_$2585", + "typeString": "contract MintedCrowdsale" + } + }, + "id": 4501, + "nodeType": "InheritanceSpecifier", + "src": "1323:15:35" + } + ], + "contractDependencies": [ + 26, + 2119, + 2179, + 2439, + 2585, + 2796, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title SampleCrowdsale\n@dev This is an example of a fully fledged crowdsale.\nThe way to add new features to a base crowdsale is by multiple inheritance.\nIn this example we are providing following extensions:\nCappedCrowdsale - sets a max boundary for raised funds\nRefundableCrowdsale - set a min goal to be reached and returns funds if it's not met\nMintedCrowdsale - assumes the token can be minted by the crowdsale, which does so\nwhen receiving purchases.\n * After adding multiple features it's good practice to run integration tests\nto ensure that subcontracts works together as intended.", + "fullyImplemented": true, + "id": 4542, + "linearizedBaseContracts": [ + 4542, + 2585, + 2439, + 2179, + 3087, + 2796, + 2119, + 13820, + 26 + ], + "name": "SampleCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4540, + "nodeType": "Block", + "src": "1718:231:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4534, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "1885:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 4535, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4511, + "src": "1893:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1885:11:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "53616d706c6543726f776453616c653a20676f616c2069732067726561746572207468616e20636170", + "id": 4537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1898:43:35", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5c6ad38480d4d604caf976e75a52d6007b5352d16ac172e53fb416aa139c7c7", + "typeString": "literal_string \"SampleCrowdSale: goal is greater than cap\"" + }, + "value": "SampleCrowdSale: goal is greater than cap" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5c6ad38480d4d604caf976e75a52d6007b5352d16ac172e53fb416aa139c7c7", + "typeString": "literal_string \"SampleCrowdSale: goal is greater than cap\"" + } + ], + "id": 4533, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1877:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1877:65:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4539, + "nodeType": "ExpressionStatement", + "src": "1877:65:35" + } + ] + }, + "documentation": null, + "id": 4541, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4518, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4507, + "src": "1581:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4519, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4509, + "src": "1587:6:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4520, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "1595:5:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + } + ], + "id": 4521, + "modifierName": { + "argumentTypes": null, + "id": 4517, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "1571:9:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1571:30:35" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4523, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4511, + "src": "1626:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4524, + "modifierName": { + "argumentTypes": null, + "id": 4522, + "name": "CappedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2796, + "src": "1610:15:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_CappedCrowdsale_$2796_$", + "typeString": "type(contract CappedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1610:20:35" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4526, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4503, + "src": "1654:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4527, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4505, + "src": "1667:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4528, + "modifierName": { + "argumentTypes": null, + "id": 4525, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "1639:14:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1639:40:35" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4530, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "1708:4:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4531, + "modifierName": { + "argumentTypes": null, + "id": 4529, + "name": "RefundableCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "1688:19:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RefundableCrowdsale_$2439_$", + "typeString": "type(contract RefundableCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1688:25:35" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4503, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1367:19:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1367:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4505, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1396:19:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1396:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4507, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1425:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1425:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4509, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1447:22:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1447:15:35", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4511, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1479:11:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1479:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4513, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1500:19:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 4512, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10045, + "src": "1500:13:35", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$10045", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4515, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 4541, + "src": "1529:12:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4514, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1529:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1357:190:35" + }, + "returnParameters": { + "id": 4532, + "nodeType": "ParameterList", + "parameters": [], + "src": "1718:0:35" + }, + "scope": 4542, + "src": "1345:604:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4543, + "src": "1257:694:35" + } + ], + "src": "0:1952:35" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280601681526020017f53616d706c652043726f776473616c6520546f6b656e000000000000000000008152506040518060400160405280600381526020017f53435400000000000000000000000000000000000000000000000000000000008152506012620000a062000094620000f660201b60201c565b620000fe60201b60201c565b8260049080519060200190620000b892919062000323565b508160059080519060200190620000d192919062000323565b5080600660006101000a81548160ff021916908360ff160217905550505050620003d2565b600033905090565b620001198160036200015f60201b6200156e1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6200017182826200024360201b60201c565b15620001e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001c916022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200036657805160ff191683800117855562000397565b8280016001018555821562000397579182015b828111156200039657825182559160200191906001019062000379565b5b509050620003a69190620003aa565b5090565b620003cf91905b80821115620003cb576000816000905550600101620003b1565b5090565b90565b6118af80620003e26000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146104a0578063a9059cbb14610506578063aa271e1a1461056c578063dd62ed3e146105c8576100f5565b806370a082311461037757806395d89b41146103cf578063983b2d56146104525780639865027514610496576100f5565b806323b872dd116100d357806323b872dd14610201578063313ce5671461028757806339509351146102ab57806340c10f1914610311576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b610102610640565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e2565b604051808215151515815260200191505060405180910390f35b6101eb610700565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061070a565b604051808215151515815260200191505060405180910390f35b61028f6107e3565b604051808260ff1660ff16815260200191505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107fa565b604051808215151515815260200191505060405180910390f35b61035d6004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ad565b604051808215151515815260200191505060405180910390f35b6103b96004803603602081101561038d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610928565b6040518082815260200191505060405180910390f35b6103d7610970565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104175780820151818401526020810190506103fc565b50505050905090810190601f1680156104445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104946004803603602081101561046857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a12565b005b61049e610a83565b005b6104ec600480360360408110156104b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a95565b604051808215151515815260200191505060405180910390f35b6105526004803603604081101561051c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b62565b604051808215151515815260200191505060405180910390f35b6105ae6004803603602081101561058257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b80565b604051808215151515815260200191505060405180910390f35b61062a600480360360408110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b9d565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106d85780601f106106ad576101008083540402835291602001916106d8565b820191906000526020600020905b8154815290600101906020018083116106bb57829003601f168201915b5050505050905090565b60006106f66106ef610c24565b8484610c2c565b6001905092915050565b6000600254905090565b6000610717848484610e23565b6107d884610723610c24565b6107d3856040518060600160405280602881526020016117c360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610789610c24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d99092919063ffffffff16565b610c2c565b600190509392505050565b6000600660009054906101000a900460ff16905090565b60006108a3610807610c24565b8461089e8560016000610818610c24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461119990919063ffffffff16565b610c2c565b6001905092915050565b60006108bf6108ba610c24565b610b80565b610914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806117726030913960400191505060405180910390fd5b61091e8383611221565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a085780601f106109dd57610100808354040283529160200191610a08565b820191906000526020600020905b8154815290600101906020018083116109eb57829003601f168201915b5050505050905090565b610a22610a1d610c24565b610b80565b610a77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806117726030913960400191505060405180910390fd5b610a80816113dc565b50565b610a93610a8e610c24565b611436565b565b6000610b58610aa2610c24565b84610b53856040518060600160405280602581526020016118566025913960016000610acc610c24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d99092919063ffffffff16565b610c2c565b6001905092915050565b6000610b76610b6f610c24565b8484610e23565b6001905092915050565b6000610b9682600361149090919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806118326024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061172a6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061180d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117076023913960400191505060405180910390fd5b610f9a8160405180606001604052806026815260200161174c602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d99092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061102d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461119990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561114b578082015181840152602081019050611130565b50505050905090810190601f1680156111785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6112d98160025461119990919063ffffffff16565b600281905550611330816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461119990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6113f081600361156e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61144a81600361164990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117eb6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115788282611490565b156115eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116538282611490565b6116a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117a26021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820e2854deeeb7d8a60917d523cfce5e96870c0dadddd97750b9c196fdb3c675b2764736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146104a0578063a9059cbb14610506578063aa271e1a1461056c578063dd62ed3e146105c8576100f5565b806370a082311461037757806395d89b41146103cf578063983b2d56146104525780639865027514610496576100f5565b806323b872dd116100d357806323b872dd14610201578063313ce5671461028757806339509351146102ab57806340c10f1914610311576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b610102610640565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e2565b604051808215151515815260200191505060405180910390f35b6101eb610700565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061070a565b604051808215151515815260200191505060405180910390f35b61028f6107e3565b604051808260ff1660ff16815260200191505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107fa565b604051808215151515815260200191505060405180910390f35b61035d6004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ad565b604051808215151515815260200191505060405180910390f35b6103b96004803603602081101561038d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610928565b6040518082815260200191505060405180910390f35b6103d7610970565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104175780820151818401526020810190506103fc565b50505050905090810190601f1680156104445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104946004803603602081101561046857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a12565b005b61049e610a83565b005b6104ec600480360360408110156104b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a95565b604051808215151515815260200191505060405180910390f35b6105526004803603604081101561051c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b62565b604051808215151515815260200191505060405180910390f35b6105ae6004803603602081101561058257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b80565b604051808215151515815260200191505060405180910390f35b61062a600480360360408110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b9d565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106d85780601f106106ad576101008083540402835291602001916106d8565b820191906000526020600020905b8154815290600101906020018083116106bb57829003601f168201915b5050505050905090565b60006106f66106ef610c24565b8484610c2c565b6001905092915050565b6000600254905090565b6000610717848484610e23565b6107d884610723610c24565b6107d3856040518060600160405280602881526020016117c360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610789610c24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d99092919063ffffffff16565b610c2c565b600190509392505050565b6000600660009054906101000a900460ff16905090565b60006108a3610807610c24565b8461089e8560016000610818610c24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461119990919063ffffffff16565b610c2c565b6001905092915050565b60006108bf6108ba610c24565b610b80565b610914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806117726030913960400191505060405180910390fd5b61091e8383611221565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a085780601f106109dd57610100808354040283529160200191610a08565b820191906000526020600020905b8154815290600101906020018083116109eb57829003601f168201915b5050505050905090565b610a22610a1d610c24565b610b80565b610a77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806117726030913960400191505060405180910390fd5b610a80816113dc565b50565b610a93610a8e610c24565b611436565b565b6000610b58610aa2610c24565b84610b53856040518060600160405280602581526020016118566025913960016000610acc610c24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d99092919063ffffffff16565b610c2c565b6001905092915050565b6000610b76610b6f610c24565b8484610e23565b6001905092915050565b6000610b9682600361149090919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806118326024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061172a6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061180d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117076023913960400191505060405180910390fd5b610f9a8160405180606001604052806026815260200161174c602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d99092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061102d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461119990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561114b578082015181840152602081019050611130565b50505050905090810190601f1680156111785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6112d98160025461119990919063ffffffff16565b600281905550611330816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461119990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6113f081600361156e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61144a81600361164990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806117eb6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6115788282611490565b156115eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6116538282611490565b6116a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117a26021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820e2854deeeb7d8a60917d523cfce5e96870c0dadddd97750b9c196fdb3c675b2764736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Secondary.json b/node_modules/@openzeppelin/contracts/build/contracts/Secondary.json new file mode 100644 index 0000000..b9a6e05 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Secondary.json @@ -0,0 +1,983 @@ +{ + "fileName": "Secondary.sol", + "contractName": "Secondary", + "source": "pragma solidity ^0.5.0;\n\nimport \"../GSN/Context.sol\";\n/**\n * @dev A Secondary contract can only be used by its primary account (the one that created it).\n */\ncontract Secondary is Context {\n address private _primary;\n\n /**\n * @dev Emitted when the primary contract changes.\n */\n event PrimaryTransferred(\n address recipient\n );\n\n /**\n * @dev Sets the primary account to the one that is creating the Secondary contract.\n */\n constructor () internal {\n address msgSender = _msgSender();\n _primary = msgSender;\n emit PrimaryTransferred(msgSender);\n }\n\n /**\n * @dev Reverts if called from any account other than the primary.\n */\n modifier onlyPrimary() {\n require(_msgSender() == _primary, \"Secondary: caller is not the primary account\");\n _;\n }\n\n /**\n * @return the address of the primary.\n */\n function primary() public view returns (address) {\n return _primary;\n }\n\n /**\n * @dev Transfers contract to a new primary.\n * @param recipient The address of new primary.\n */\n function transferPrimary(address recipient) public onlyPrimary {\n require(recipient != address(0), \"Secondary: new primary is the zero address\");\n _primary = recipient;\n emit PrimaryTransferred(recipient);\n }\n}\n", + "sourcePath": "contracts/ownership/Secondary.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/ownership/Secondary.sol", + "exportedSymbols": { + "Secondary": [ + 8779 + ] + }, + "id": 8780, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8707, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:113" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 8708, + "nodeType": "ImportDirective", + "scope": 8780, + "sourceUnit": 27, + "src": "25:28:113", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8709, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "180:7:113", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 8710, + "nodeType": "InheritanceSpecifier", + "src": "180:7:113" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": "@dev A Secondary contract can only be used by its primary account (the one that created it).", + "fullyImplemented": true, + "id": 8779, + "linearizedBaseContracts": [ + 8779, + 26 + ], + "name": "Secondary", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 8712, + "name": "_primary", + "nodeType": "VariableDeclaration", + "scope": 8779, + "src": "194:24:113", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "194:7:113", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": "@dev Emitted when the primary contract changes.", + "id": 8716, + "name": "PrimaryTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 8715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8714, + "indexed": false, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 8716, + "src": "330:17:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "330:7:113", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "320:33:113" + }, + "src": "296:58:113" + }, + { + "body": { + "id": 8732, + "nodeType": "Block", + "src": "489:123:113", + "statements": [ + { + "assignments": [ + 8720 + ], + "declarations": [ + { + "constant": false, + "id": 8720, + "name": "msgSender", + "nodeType": "VariableDeclaration", + "scope": 8732, + "src": "499:17:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "499:7:113", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 8723, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8721, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "519:10:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "519:12:113", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "499:32:113" + }, + { + "expression": { + "argumentTypes": null, + "id": 8726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 8724, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8712, + "src": "541:8:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 8725, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8720, + "src": "552:9:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "541:20:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8727, + "nodeType": "ExpressionStatement", + "src": "541:20:113" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8729, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8720, + "src": "595:9:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8728, + "name": "PrimaryTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "576:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "576:29:113", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8731, + "nodeType": "EmitStatement", + "src": "571:34:113" + } + ] + }, + "documentation": "@dev Sets the primary account to the one that is creating the Secondary contract.", + "id": 8733, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8717, + "nodeType": "ParameterList", + "parameters": [], + "src": "477:2:113" + }, + "returnParameters": { + "id": 8718, + "nodeType": "ParameterList", + "parameters": [], + "src": "489:0:113" + }, + "scope": 8779, + "src": "465:147:113", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 8744, + "nodeType": "Block", + "src": "728:109:113", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8736, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "746:10:113", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 8737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "746:12:113", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 8738, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8712, + "src": "762:8:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "746:24:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74", + "id": 8740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "772:46:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c4712475d2d6028b616998502d5ba5483942315abd60cf35b74a8ca311ef5575", + "typeString": "literal_string \"Secondary: caller is not the primary account\"" + }, + "value": "Secondary: caller is not the primary account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c4712475d2d6028b616998502d5ba5483942315abd60cf35b74a8ca311ef5575", + "typeString": "literal_string \"Secondary: caller is not the primary account\"" + } + ], + "id": 8735, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "738:7:113", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "738:81:113", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8742, + "nodeType": "ExpressionStatement", + "src": "738:81:113" + }, + { + "id": 8743, + "nodeType": "PlaceholderStatement", + "src": "829:1:113" + } + ] + }, + "documentation": "@dev Reverts if called from any account other than the primary.", + "id": 8745, + "name": "onlyPrimary", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 8734, + "nodeType": "ParameterList", + "parameters": [], + "src": "725:2:113" + }, + "src": "705:132:113", + "visibility": "internal" + }, + { + "body": { + "id": 8752, + "nodeType": "Block", + "src": "951:32:113", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 8750, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8712, + "src": "968:8:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 8749, + "id": 8751, + "nodeType": "Return", + "src": "961:15:113" + } + ] + }, + "documentation": "@return the address of the primary.", + "id": 8753, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "primary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8746, + "nodeType": "ParameterList", + "parameters": [], + "src": "918:2:113" + }, + "returnParameters": { + "id": 8749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8748, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 8753, + "src": "942:7:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "942:7:113", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "941:9:113" + }, + "scope": 8779, + "src": "902:81:113", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 8777, + "nodeType": "Block", + "src": "1169:169:113", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 8761, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8755, + "src": "1187:9:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 8763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1208:1:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 8762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1200:7:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 8764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1200:10:113", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1187:23:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f2061646472657373", + "id": 8766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1212:44:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a60f0c70d794ac81ff220fb01136a8b68d4bc14fa4d72f7395e6f0e260414350", + "typeString": "literal_string \"Secondary: new primary is the zero address\"" + }, + "value": "Secondary: new primary is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a60f0c70d794ac81ff220fb01136a8b68d4bc14fa4d72f7395e6f0e260414350", + "typeString": "literal_string \"Secondary: new primary is the zero address\"" + } + ], + "id": 8760, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1179:7:113", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 8767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1179:78:113", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8768, + "nodeType": "ExpressionStatement", + "src": "1179:78:113" + }, + { + "expression": { + "argumentTypes": null, + "id": 8771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 8769, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8712, + "src": "1267:8:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 8770, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8755, + "src": "1278:9:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1267:20:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8772, + "nodeType": "ExpressionStatement", + "src": "1267:20:113" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8774, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8755, + "src": "1321:9:113", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8773, + "name": "PrimaryTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8716, + "src": "1302:18:113", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1302:29:113", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8776, + "nodeType": "EmitStatement", + "src": "1297:34:113" + } + ] + }, + "documentation": "@dev Transfers contract to a new primary.\n@param recipient The address of new primary.", + "id": 8778, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 8758, + "modifierName": { + "argumentTypes": null, + "id": 8757, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "1157:11:113", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1157:11:113" + } + ], + "name": "transferPrimary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8755, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 8778, + "src": "1131:17:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1131:7:113", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1130:19:113" + }, + "returnParameters": { + "id": 8759, + "nodeType": "ParameterList", + "parameters": [], + "src": "1169:0:113" + }, + "scope": 8779, + "src": "1106:232:113", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 8780, + "src": "158:1182:113" + } + ], + "src": "0:1341:113" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SecondaryMock.json b/node_modules/@openzeppelin/contracts/build/contracts/SecondaryMock.json new file mode 100644 index 0000000..6fd1903 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SecondaryMock.json @@ -0,0 +1,201 @@ +{ + "fileName": "SecondaryMock.sol", + "contractName": "SecondaryMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../ownership/Secondary.sol\";\n\ncontract SecondaryMock is Secondary {\n function onlyPrimaryMock() public view onlyPrimary {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/SecondaryMock.sol", + "sourceMap": "63:159:104:-;;;499:17:113;519:12;:10;;;:12;;:::i;:::-;499:32;;552:9;541:8;;:20;;;;;;;;;;;;;;;;;;576:29;595:9;576:29;;;;;;;;;;;;;;;;;;;;;;465:147;63:159:104;;788:96:0;833:15;867:10;860:17;;788:96;:::o;63:159:104:-;;;;;;;", + "deployedSourceMap": "63:159:104:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;63:159:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1106:232:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1106:232:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;105:115:104;;;:::i;:::-;;902:81:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1106:232;762:8;;;;;;;;;;;746:24;;:12;:10;:12::i;:::-;:24;;;738:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:1;1187:23;;:9;:23;;;;1179:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1278:9;1267:8;;:20;;;;;;;;;;;;;;;;;;1302:29;1321:9;1302:29;;;;;;;;;;;;;;;;;;;;;;1106:232;:::o;105:115:104:-;762:8:113;;;;;;;;;;;746:24;;:12;:10;:12::i;:::-;:24;;;738:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;105:115:104:o;902:81:113:-;942:7;968:8;;;;;;;;;;;961:15;;902:81;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "onlyPrimaryMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SecondaryMock.sol", + "exportedSymbols": { + "SecondaryMock": [ + 8357 + ] + }, + "id": 8358, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8347, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:104" + }, + { + "absolutePath": "contracts/ownership/Secondary.sol", + "file": "../ownership/Secondary.sol", + "id": 8348, + "nodeType": "ImportDirective", + "scope": 8358, + "sourceUnit": 8780, + "src": "25:36:104", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8349, + "name": "Secondary", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8779, + "src": "89:9:104", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Secondary_$8779", + "typeString": "contract Secondary" + } + }, + "id": 8350, + "nodeType": "InheritanceSpecifier", + "src": "89:9:104" + } + ], + "contractDependencies": [ + 26, + 8779 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 8357, + "linearizedBaseContracts": [ + 8357, + 8779, + 26 + ], + "name": "SecondaryMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8355, + "nodeType": "Block", + "src": "156:64:104", + "statements": [] + }, + "documentation": null, + "id": 8356, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 8353, + "modifierName": { + "argumentTypes": null, + "id": 8352, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "144:11:104", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "144:11:104" + } + ], + "name": "onlyPrimaryMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8351, + "nodeType": "ParameterList", + "parameters": [], + "src": "129:2:104" + }, + "returnParameters": { + "id": 8354, + "nodeType": "ParameterList", + "parameters": [], + "src": "156:0:104" + }, + "scope": 8357, + "src": "105:115:104", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 8358, + "src": "63:159:104" + } + ], + "src": "0:223:104" + }, + "bytecode": "0x608060405260006100146100bf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1506100c7565b600033905090565b610420806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632348238c14610046578063846224251461008a578063c6dbdf6114610094575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100de565b005b6100926102b6565b005b61009c610364565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661011e61038d565b73ffffffffffffffffffffffffffffffffffffffff161461018a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806103c0602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610396602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166102f661038d565b73ffffffffffffffffffffffffffffffffffffffff1614610362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806103c0602c913960400191505060405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003390509056fe5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74a265627a7a72315820e66738918eff74ce11c5d5c0f58fddb4ba17dec2ed979929b7b061d28265bf7764736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632348238c14610046578063846224251461008a578063c6dbdf6114610094575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100de565b005b6100926102b6565b005b61009c610364565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661011e61038d565b73ffffffffffffffffffffffffffffffffffffffff161461018a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806103c0602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610396602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166102f661038d565b73ffffffffffffffffffffffffffffffffffffffff1614610362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806103c0602c913960400191505060405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003390509056fe5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74a265627a7a72315820e66738918eff74ce11c5d5c0f58fddb4ba17dec2ed979929b7b061d28265bf7764736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMath.json b/node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMath.json new file mode 100644 index 0000000..689c0e4 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMath.json @@ -0,0 +1,2578 @@ +{ + "fileName": "SignedSafeMath.sol", + "contractName": "SignedSafeMath", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @title SignedSafeMath\n * @dev Signed math operations with safety checks that revert on error.\n */\nlibrary SignedSafeMath {\n int256 constant private _INT256_MIN = -2**255;\n\n /**\n * @dev Returns the multiplication of two signed integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(int256 a, int256 b) internal pure returns (int256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n require(!(a == -1 && b == _INT256_MIN), \"SignedSafeMath: multiplication overflow\");\n\n int256 c = a * b;\n require(c / a == b, \"SignedSafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two signed integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(int256 a, int256 b) internal pure returns (int256) {\n require(b != 0, \"SignedSafeMath: division by zero\");\n require(!(b == -1 && a == _INT256_MIN), \"SignedSafeMath: division overflow\");\n\n int256 c = a / b;\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n require((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n require((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\n\n return c;\n }\n}\n", + "sourcePath": "contracts/math/SignedSafeMath.sol", + "sourceMap": "163:2499:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "163:2499:18:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/math/SignedSafeMath.sol", + "exportedSymbols": { + "SignedSafeMath": [ + 2600 + ] + }, + "id": 2601, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2423, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:18" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2424, + "nodeType": "StructuredDocumentation", + "src": "58:104:18", + "text": " @title SignedSafeMath\n @dev Signed math operations with safety checks that revert on error." + }, + "fullyImplemented": true, + "id": 2600, + "linearizedBaseContracts": [ + 2600 + ], + "name": "SignedSafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2430, + "mutability": "constant", + "name": "_INT256_MIN", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2600, + "src": "192:45:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2425, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "192:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const -578...(70 digits omitted)...9968" + }, + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "230:2:18", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "231:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323535", + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "234:3:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "230:7:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const -578...(70 digits omitted)...9968" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 2478, + "nodeType": "Block", + "src": "551:490:18", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2440, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "783:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "788:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "783:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2446, + "nodeType": "IfStatement", + "src": "779:45:18", + "trueBody": { + "id": 2445, + "nodeType": "Block", + "src": "791:33:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "812:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2439, + "id": 2444, + "nodeType": "Return", + "src": "805:8:18" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "842:30:18", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2448, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "844:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "849:2:18", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "850:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "844:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2452, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "855:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2453, + "name": "_INT256_MIN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2430, + "src": "860:11:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "855:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "844:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2456, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "843:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "874:41:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", + "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" + }, + "value": "SignedSafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", + "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" + } + ], + "id": 2447, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "834:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "834:82:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2460, + "nodeType": "ExpressionStatement", + "src": "834:82:18" + }, + { + "assignments": [ + 2462 + ], + "declarations": [ + { + "constant": false, + "id": 2462, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2478, + "src": "927:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2461, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "927:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2466, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2463, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "938:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2464, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "942:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "938:5:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "927:16:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2468, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "961:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2469, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "965:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "961:5:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2471, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "970:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "961:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "973:41:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", + "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" + }, + "value": "SignedSafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", + "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" + } + ], + "id": 2467, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "953:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "953:62:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2475, + "nodeType": "ExpressionStatement", + "src": "953:62:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 2476, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "1033:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2439, + "id": 2477, + "nodeType": "Return", + "src": "1026:8:18" + } + ] + }, + "documentation": { + "id": 2431, + "nodeType": "StructuredDocumentation", + "src": "248:234:18", + "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 2479, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2433, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2479, + "src": "500:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2432, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "500:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2435, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2479, + "src": "510:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2434, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "510:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:20:18" + }, + "returnParameters": { + "id": 2439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2438, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2479, + "src": "543:6:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2437, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "543:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "542:8:18" + }, + "scope": 2600, + "src": "487:554:18", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2518, + "nodeType": "Block", + "src": "1565:200:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2490, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2484, + "src": "1583:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1588:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1583:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206279207a65726f", + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1591:34:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd", + "typeString": "literal_string \"SignedSafeMath: division by zero\"" + }, + "value": "SignedSafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd", + "typeString": "literal_string \"SignedSafeMath: division by zero\"" + } + ], + "id": 2489, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1575:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1575:51:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2495, + "nodeType": "ExpressionStatement", + "src": "1575:51:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1644:30:18", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2497, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2484, + "src": "1646:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1651:2:18", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1652:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "1646:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2501, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2482, + "src": "1657:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2502, + "name": "_INT256_MIN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2430, + "src": "1662:11:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1657:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1646:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2505, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1645:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77", + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1676:35:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81", + "typeString": "literal_string \"SignedSafeMath: division overflow\"" + }, + "value": "SignedSafeMath: division overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81", + "typeString": "literal_string \"SignedSafeMath: division overflow\"" + } + ], + "id": 2496, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1636:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1636:76:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2509, + "nodeType": "ExpressionStatement", + "src": "1636:76:18" + }, + { + "assignments": [ + 2511 + ], + "declarations": [ + { + "constant": false, + "id": 2511, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2518, + "src": "1723:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2510, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1723:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2515, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2512, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2482, + "src": "1734:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2513, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2484, + "src": "1738:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1734:5:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1723:16:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 2516, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2511, + "src": "1757:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2488, + "id": 2517, + "nodeType": "Return", + "src": "1750:8:18" + } + ] + }, + "documentation": { + "id": 2480, + "nodeType": "StructuredDocumentation", + "src": "1047:449:18", + "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 2519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2482, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2519, + "src": "1514:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2481, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1514:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2484, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2519, + "src": "1524:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2483, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1524:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1513:20:18" + }, + "returnParameters": { + "id": 2488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2487, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2519, + "src": "1557:6:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2486, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1557:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1556:8:18" + }, + "scope": 2600, + "src": "1501:264:18", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2558, + "nodeType": "Block", + "src": "2068:149:18", + "statements": [ + { + "assignments": [ + 2530 + ], + "declarations": [ + { + "constant": false, + "id": 2530, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2558, + "src": "2078:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2529, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2078:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2534, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2531, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "2089:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2532, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "2093:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2089:5:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2078:16:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2536, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "2113:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2118:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2113:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2539, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "2123:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2540, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "2128:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2123:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2113:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2543, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2112:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2544, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "2135:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2139:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2135:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2547, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "2144:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2548, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "2148:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2144:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2135:14:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2551, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2134:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2112:38:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 2553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2152:38:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd", + "typeString": "literal_string \"SignedSafeMath: subtraction overflow\"" + }, + "value": "SignedSafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd", + "typeString": "literal_string \"SignedSafeMath: subtraction overflow\"" + } + ], + "id": 2535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2104:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2104:87:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2555, + "nodeType": "ExpressionStatement", + "src": "2104:87:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 2556, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "2209:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2528, + "id": 2557, + "nodeType": "Return", + "src": "2202:8:18" + } + ] + }, + "documentation": { + "id": 2520, + "nodeType": "StructuredDocumentation", + "src": "1771:228:18", + "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 2559, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2522, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2559, + "src": "2017:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2521, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2017:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2524, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2559, + "src": "2027:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2523, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2027:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2016:20:18" + }, + "returnParameters": { + "id": 2528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2527, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2559, + "src": "2060:6:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2526, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2060:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2059:8:18" + }, + "scope": 2600, + "src": "2004:213:18", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2598, + "nodeType": "Block", + "src": "2514:146:18", + "statements": [ + { + "assignments": [ + 2570 + ], + "declarations": [ + { + "constant": false, + "id": 2570, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2598, + "src": "2524:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2569, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2524:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2574, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2571, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "2535:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2572, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "2539:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2535:5:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2524:16:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2576, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "2559:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2564:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2559:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2579, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "2569:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2580, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "2574:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2569:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2559:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2583, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2558:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2584, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "2581:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2585:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2581:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2587, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "2590:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2588, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2562, + "src": "2594:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2590:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2581:14:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2591, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2580:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2558:38:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 2593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2598:35:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb", + "typeString": "literal_string \"SignedSafeMath: addition overflow\"" + }, + "value": "SignedSafeMath: addition overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb", + "typeString": "literal_string \"SignedSafeMath: addition overflow\"" + } + ], + "id": 2575, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2550:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2550:84:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2595, + "nodeType": "ExpressionStatement", + "src": "2550:84:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 2596, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "2652:1:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2568, + "id": 2597, + "nodeType": "Return", + "src": "2645:8:18" + } + ] + }, + "documentation": { + "id": 2560, + "nodeType": "StructuredDocumentation", + "src": "2223:222:18", + "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 2599, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2562, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2599, + "src": "2463:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2561, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2463:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2564, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2599, + "src": "2473:8:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2563, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2473:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2462:20:18" + }, + "returnParameters": { + "id": 2568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2567, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2599, + "src": "2506:6:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2566, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2506:6:18", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2505:8:18" + }, + "scope": 2600, + "src": "2450:210:18", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2601, + "src": "163:2499:18" + } + ], + "src": "33:2630:18" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc92ad44f0ed80210e1c80992a74e1e7d0bb3aa807f367d897078ce1ea40753f64736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc92ad44f0ed80210e1c80992a74e1e7d0bb3aa807f367d897078ce1ea40753f64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMathMock.json b/node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMathMock.json new file mode 100644 index 0000000..3e3aae4 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SignedSafeMathMock.json @@ -0,0 +1,1011 @@ +{ + "fileName": "SignedSafeMathMock.sol", + "contractName": "SignedSafeMathMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../math/SignedSafeMath.sol\";\n\ncontract SignedSafeMathMock {\n function mul(int256 a, int256 b) public pure returns (int256) {\n return SignedSafeMath.mul(a, b);\n }\n\n function div(int256 a, int256 b) public pure returns (int256) {\n return SignedSafeMath.div(a, b);\n }\n\n function sub(int256 a, int256 b) public pure returns (int256) {\n return SignedSafeMath.sub(a, b);\n }\n\n function add(int256 a, int256 b) public pure returns (int256) {\n return SignedSafeMath.add(a, b);\n }\n}\n", + "sourcePath": "contracts/mocks/SignedSafeMathMock.sol", + "sourceMap": "96:494:62:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "96:494:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;246:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;246;300:6;325:24;344:1;347;325:18;:24::i;:::-;318:31;;246:110;;;;:::o;478:::-;532:6;557:24;576:1;579;557:18;:24::i;:::-;550:31;;478:110;;;;:::o;362:::-;416:6;441:24;460:1;463;441:18;:24::i;:::-;434:31;;362:110;;;;:::o;130:::-;184:6;209:24;228:1;231;209:18;:24::i;:::-;202:31;;130:110;;;;:::o;1007:264:19:-;1063:6;1094:1;1089;:6;;1081:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1157:2;1152:1;:7;:27;;;;;230:7;1163:1;:16;1152:27;1150:30;1142:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1229:8;1244:1;1240;:5;;;;;;1229:16;;1263:1;1256:8;;;1007:264;;;;:::o;1651:210::-;1707:6;1725:8;1740:1;1736;:5;1725:16;;1765:1;1760;:6;;:16;;;;;1775:1;1770;:6;;1760:16;1759:38;;;;1786:1;1782;:5;:14;;;;;1795:1;1791;:5;1782:14;1759:38;1751:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1853:1;1846:8;;;1651:210;;;;:::o;1357:213::-;1413:6;1431:8;1446:1;1442;:5;1431:16;;1471:1;1466;:6;;:16;;;;;1481:1;1476;:6;;1466:16;1465:38;;;;1492:1;1488;:5;:14;;;;;1501:1;1497;:5;1488:14;1465:38;1457:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1562:1;1555:8;;;1357:213;;;;:::o;325:554::-;381:6;626:1;621;:6;617:45;;;650:1;643:8;;;;617:45;687:2;682:1;:7;:27;;;;;230:7;693:1;:16;682:27;680:30;672:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:8;780:1;776;:5;765:16;;808:1;803;799;:5;;;;;;:10;791:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;871:1;864:8;;;325:554;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "int256", + "name": "a", + "type": "int256" + }, + { + "internalType": "int256", + "name": "b", + "type": "int256" + } + ], + "name": "add", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "a", + "type": "int256" + }, + { + "internalType": "int256", + "name": "b", + "type": "int256" + } + ], + "name": "div", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "a", + "type": "int256" + }, + { + "internalType": "int256", + "name": "b", + "type": "int256" + } + ], + "name": "mul", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "a", + "type": "int256" + }, + { + "internalType": "int256", + "name": "b", + "type": "int256" + } + ], + "name": "sub", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SignedSafeMathMock.sol", + "exportedSymbols": { + "SignedSafeMathMock": [ + 5905 + ] + }, + "id": 5906, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5839, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:62" + }, + { + "absolutePath": "contracts/math/SignedSafeMath.sol", + "file": "../math/SignedSafeMath.sol", + "id": 5840, + "nodeType": "ImportDirective", + "scope": 5906, + "sourceUnit": 2989, + "src": "58:36:62", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5905, + "linearizedBaseContracts": [ + 5905 + ], + "name": "SignedSafeMathMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5855, + "nodeType": "Block", + "src": "192:48:62", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5851, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5842, + "src": "228:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "argumentTypes": null, + "id": 5852, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5844, + "src": "231:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5849, + "name": "SignedSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2988, + "src": "209:14:62", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignedSafeMath_$2988_$", + "typeString": "type(library SignedSafeMath)" + } + }, + "id": 5850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2867, + "src": "209:18:62", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 5853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "209:24:62", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 5848, + "id": 5854, + "nodeType": "Return", + "src": "202:31:62" + } + ] + }, + "documentation": null, + "functionSelector": "bbe93d91", + "id": 5856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5845, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5842, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5856, + "src": "143:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5841, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "143:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5844, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5856, + "src": "153:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5843, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "153:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "142:20:62" + }, + "returnParameters": { + "id": 5848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5847, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5856, + "src": "184:6:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5846, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "184:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "183:8:62" + }, + "scope": 5905, + "src": "130:110:62", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5871, + "nodeType": "Block", + "src": "308:48:62", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5867, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5858, + "src": "344:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "argumentTypes": null, + "id": 5868, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5860, + "src": "347:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5865, + "name": "SignedSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2988, + "src": "325:14:62", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignedSafeMath_$2988_$", + "typeString": "type(library SignedSafeMath)" + } + }, + "id": 5866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2907, + "src": "325:18:62", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 5869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "325:24:62", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 5864, + "id": 5870, + "nodeType": "Return", + "src": "318:31:62" + } + ] + }, + "documentation": null, + "functionSelector": "43509138", + "id": 5872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5858, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5872, + "src": "259:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5857, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "259:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5860, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5872, + "src": "269:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5859, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "269:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "258:20:62" + }, + "returnParameters": { + "id": 5864, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5863, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5872, + "src": "300:6:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5862, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "300:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "299:8:62" + }, + "scope": 5905, + "src": "246:110:62", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5887, + "nodeType": "Block", + "src": "424:48:62", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5883, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5874, + "src": "460:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "argumentTypes": null, + "id": 5884, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5876, + "src": "463:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5881, + "name": "SignedSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2988, + "src": "441:14:62", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignedSafeMath_$2988_$", + "typeString": "type(library SignedSafeMath)" + } + }, + "id": 5882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2947, + "src": "441:18:62", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 5885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "441:24:62", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 5880, + "id": 5886, + "nodeType": "Return", + "src": "434:31:62" + } + ] + }, + "documentation": null, + "functionSelector": "adefc37b", + "id": 5888, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5874, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5888, + "src": "375:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5873, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "375:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5876, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5888, + "src": "385:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5875, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "385:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "374:20:62" + }, + "returnParameters": { + "id": 5880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5879, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5888, + "src": "416:6:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5878, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "416:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "415:8:62" + }, + "scope": 5905, + "src": "362:110:62", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5903, + "nodeType": "Block", + "src": "540:48:62", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5899, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5890, + "src": "576:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "argumentTypes": null, + "id": 5900, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5892, + "src": "579:1:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5897, + "name": "SignedSafeMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2988, + "src": "557:14:62", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignedSafeMath_$2988_$", + "typeString": "type(library SignedSafeMath)" + } + }, + "id": 5898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "557:18:62", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$", + "typeString": "function (int256,int256) pure returns (int256)" + } + }, + "id": 5901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "557:24:62", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 5896, + "id": 5902, + "nodeType": "Return", + "src": "550:31:62" + } + ] + }, + "documentation": null, + "functionSelector": "a5f3c23b", + "id": 5904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5890, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5904, + "src": "491:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5889, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "491:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5892, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5904, + "src": "501:8:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5891, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "501:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "490:20:62" + }, + "returnParameters": { + "id": 5896, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5895, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5904, + "src": "532:6:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5894, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "532:6:62", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "531:8:62" + }, + "scope": 5905, + "src": "478:110:62", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5906, + "src": "96:494:62" + } + ], + "src": "33:558:62" + }, + "bytecode": "0x608060405234801561001057600080fd5b5061060e806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634350913814610051578063a5f3c23b1461009d578063adefc37b146100e9578063bbe93d9114610135575b600080fd5b6100876004803603604081101561006757600080fd5b810190808035906020019092919080359060200190929190505050610181565b6040518082815260200191505060405180910390f35b6100d3600480360360408110156100b357600080fd5b810190808035906020019092919080359060200190929190505050610195565b6040518082815260200191505060405180910390f35b61011f600480360360408110156100ff57600080fd5b8101908080359060200190929190803590602001909291905050506101a9565b6040518082815260200191505060405180910390f35b61016b6004803603604081101561014b57600080fd5b8101908080359060200190929190803590602001909291905050506101bd565b6040518082815260200191505060405180910390f35b600061018d83836101d1565b905092915050565b60006101a18383610305565b905092915050565b60006101b58383610393565b905092915050565b60006101c98383610421565b905092915050565b600080821415610249576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f81525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214801561029757507f800000000000000000000000000000000000000000000000000000000000000083145b156102ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061056d6021913960400191505060405180910390fd5b60008284816102f857fe5b0590508091505092915050565b60008082840190506000831215801561031e5750838112155b80610334575060008312801561033357508381125b5b610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061054c6021913960400191505060405180910390fd5b8091505092915050565b6000808284039050600083121580156103ac5750838113155b806103c257506000831280156103c157508381135b5b610417576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806105b56024913960400191505060405180910390fd5b8091505092915050565b6000808314156104345760009050610545565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314801561048257507f800000000000000000000000000000000000000000000000000000000000000082145b156104d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061058e6027913960400191505060405180910390fd5b60008284029050828482816104e957fe5b0514610540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061058e6027913960400191505060405180910390fd5b809150505b9291505056fe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f775369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122022115021020691bcca5e41aaafac7aa80728161b1aacb7362e2d4054f7255ac064736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80634350913814610051578063a5f3c23b1461009d578063adefc37b146100e9578063bbe93d9114610135575b600080fd5b6100876004803603604081101561006757600080fd5b810190808035906020019092919080359060200190929190505050610181565b6040518082815260200191505060405180910390f35b6100d3600480360360408110156100b357600080fd5b810190808035906020019092919080359060200190929190505050610195565b6040518082815260200191505060405180910390f35b61011f600480360360408110156100ff57600080fd5b8101908080359060200190929190803590602001909291905050506101a9565b6040518082815260200191505060405180910390f35b61016b6004803603604081101561014b57600080fd5b8101908080359060200190929190803590602001909291905050506101bd565b6040518082815260200191505060405180910390f35b600061018d83836101d1565b905092915050565b60006101a18383610305565b905092915050565b60006101b58383610393565b905092915050565b60006101c98383610421565b905092915050565b600080821415610249576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f81525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214801561029757507f800000000000000000000000000000000000000000000000000000000000000083145b156102ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061056d6021913960400191505060405180910390fd5b60008284816102f857fe5b0590508091505092915050565b60008082840190506000831215801561031e5750838112155b80610334575060008312801561033357508381125b5b610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061054c6021913960400191505060405180910390fd5b8091505092915050565b6000808284039050600083121580156103ac5750838113155b806103c257506000831280156103c157508381135b5b610417576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806105b56024913960400191505060405180910390fd5b8091505092915050565b6000808314156104345760009050610545565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314801561048257507f800000000000000000000000000000000000000000000000000000000000000082145b156104d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061058e6027913960400191505060405180910390fd5b60008284029050828482816104e957fe5b0514610540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061058e6027913960400191505060405180910390fd5b809150505b9291505056fe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f775369676e6564536166654d6174683a206469766973696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77a264697066735822122022115021020691bcca5e41aaafac7aa80728161b1aacb7362e2d4054f7255ac064736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SignerRole.json b/node_modules/@openzeppelin/contracts/build/contracts/SignerRole.json new file mode 100644 index 0000000..16e7dab --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SignerRole.json @@ -0,0 +1,1356 @@ +{ + "fileName": "SignerRole.sol", + "contractName": "SignerRole", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../Roles.sol\";\n\ncontract SignerRole is Context {\n using Roles for Roles.Role;\n\n event SignerAdded(address indexed account);\n event SignerRemoved(address indexed account);\n\n Roles.Role private _signers;\n\n constructor () internal {\n _addSigner(_msgSender());\n }\n\n modifier onlySigner() {\n require(isSigner(_msgSender()), \"SignerRole: caller does not have the Signer role\");\n _;\n }\n\n function isSigner(address account) public view returns (bool) {\n return _signers.has(account);\n }\n\n function addSigner(address account) public onlySigner {\n _addSigner(account);\n }\n\n function renounceSigner() public {\n _removeSigner(_msgSender());\n }\n\n function _addSigner(address account) internal {\n _signers.add(account);\n emit SignerAdded(account);\n }\n\n function _removeSigner(address account) internal {\n _signers.remove(account);\n emit SignerRemoved(account);\n }\n}\n", + "sourcePath": "contracts/access/roles/SignerRole.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "SignerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "SignerRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/roles/SignerRole.sol", + "exportedSymbols": { + "SignerRole": [ + 1622 + ] + }, + "id": 1623, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1517, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 1518, + "nodeType": "ImportDirective", + "scope": 1623, + "sourceUnit": 27, + "src": "25:31:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 1519, + "nodeType": "ImportDirective", + "scope": 1623, + "sourceUnit": 1195, + "src": "57:22:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1520, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "104:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1521, + "nodeType": "InheritanceSpecifier", + "src": "104:7:10" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1622, + "linearizedBaseContracts": [ + 1622, + 26 + ], + "name": "SignerRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1524, + "libraryName": { + "contractScope": null, + "id": 1522, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "124:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "118:27:10", + "typeName": { + "contractScope": null, + "id": 1523, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "134:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1528, + "name": "SignerAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 1527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1526, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1528, + "src": "169:23:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "169:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "168:25:10" + }, + "src": "151:43:10" + }, + { + "anonymous": false, + "documentation": null, + "id": 1532, + "name": "SignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 1531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1530, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1532, + "src": "219:23:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "219:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "218:25:10" + }, + "src": "199:45:10" + }, + { + "constant": false, + "id": 1534, + "name": "_signers", + "nodeType": "VariableDeclaration", + "scope": 1622, + "src": "250:27:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1533, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "250:10:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1542, + "nodeType": "Block", + "src": "308:41:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1538, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "329:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1537, + "name": "_addSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1605, + "src": "318:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "318:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1541, + "nodeType": "ExpressionStatement", + "src": "318:24:10" + } + ] + }, + "documentation": null, + "id": 1543, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1535, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:2:10" + }, + "returnParameters": { + "id": 1536, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:0:10" + }, + "scope": 1622, + "src": "284:65:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1554, + "nodeType": "Block", + "src": "377:111:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1547, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "404:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "404:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1546, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "395:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "395:22:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205369676e657220726f6c65", + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "419:50:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b6891e5b4d475f0920654fe3ac5946509ff820cec51e2251e557a368dd1a533c", + "typeString": "literal_string \"SignerRole: caller does not have the Signer role\"" + }, + "value": "SignerRole: caller does not have the Signer role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b6891e5b4d475f0920654fe3ac5946509ff820cec51e2251e557a368dd1a533c", + "typeString": "literal_string \"SignerRole: caller does not have the Signer role\"" + } + ], + "id": 1545, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "387:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "387:83:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1552, + "nodeType": "ExpressionStatement", + "src": "387:83:10" + }, + { + "id": 1553, + "nodeType": "PlaceholderStatement", + "src": "480:1:10" + } + ] + }, + "documentation": null, + "id": 1555, + "name": "onlySigner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1544, + "nodeType": "ParameterList", + "parameters": [], + "src": "374:2:10" + }, + "src": "355:133:10", + "visibility": "internal" + }, + { + "body": { + "id": 1567, + "nodeType": "Block", + "src": "556:45:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1564, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "586:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1562, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "573:8:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "573:12:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "573:21:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1561, + "id": 1566, + "nodeType": "Return", + "src": "566:28:10" + } + ] + }, + "documentation": null, + "id": 1568, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1557, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1568, + "src": "512:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "512:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "511:17:10" + }, + "returnParameters": { + "id": 1561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1560, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1568, + "src": "550:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1559, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "550:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "549:6:10" + }, + "scope": 1622, + "src": "494:107:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1579, + "nodeType": "Block", + "src": "661:36:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1576, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1570, + "src": "682:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1575, + "name": "_addSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1605, + "src": "671:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "671:19:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1578, + "nodeType": "ExpressionStatement", + "src": "671:19:10" + } + ] + }, + "documentation": null, + "id": 1580, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1573, + "modifierName": { + "argumentTypes": null, + "id": 1572, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "650:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "650:10:10" + } + ], + "name": "addSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1570, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1580, + "src": "626:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1569, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:17:10" + }, + "returnParameters": { + "id": 1574, + "nodeType": "ParameterList", + "parameters": [], + "src": "661:0:10" + }, + "scope": 1622, + "src": "607:90:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1588, + "nodeType": "Block", + "src": "736:44:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1584, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "760:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1583, + "name": "_removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1621, + "src": "746:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "746:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1587, + "nodeType": "ExpressionStatement", + "src": "746:27:10" + } + ] + }, + "documentation": null, + "id": 1589, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1581, + "nodeType": "ParameterList", + "parameters": [], + "src": "726:2:10" + }, + "returnParameters": { + "id": 1582, + "nodeType": "ParameterList", + "parameters": [], + "src": "736:0:10" + }, + "scope": 1622, + "src": "703:77:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1604, + "nodeType": "Block", + "src": "832:73:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1597, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "855:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1594, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "842:8:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1596, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "842:12:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "842:21:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1599, + "nodeType": "ExpressionStatement", + "src": "842:21:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1601, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "890:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1600, + "name": "SignerAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1528, + "src": "878:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "878:20:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1603, + "nodeType": "EmitStatement", + "src": "873:25:10" + } + ] + }, + "documentation": null, + "id": 1605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1591, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1605, + "src": "806:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1590, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "806:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "805:17:10" + }, + "returnParameters": { + "id": 1593, + "nodeType": "ParameterList", + "parameters": [], + "src": "832:0:10" + }, + "scope": 1622, + "src": "786:119:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1620, + "nodeType": "Block", + "src": "960:78:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1613, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1607, + "src": "986:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1610, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "970:8:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1612, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "970:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1615, + "nodeType": "ExpressionStatement", + "src": "970:24:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1617, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1607, + "src": "1023:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1616, + "name": "SignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1532, + "src": "1009:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:22:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1619, + "nodeType": "EmitStatement", + "src": "1004:27:10" + } + ] + }, + "documentation": null, + "id": 1621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1607, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1621, + "src": "934:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "934:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "933:17:10" + }, + "returnParameters": { + "id": 1609, + "nodeType": "ParameterList", + "parameters": [], + "src": "960:0:10" + }, + "scope": 1622, + "src": "911:127:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1623, + "src": "81:959:10" + } + ], + "src": "0:1041:10" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SignerRoleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/SignerRoleMock.json new file mode 100644 index 0000000..099bd86 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SignerRoleMock.json @@ -0,0 +1,492 @@ +{ + "fileName": "SignerRoleMock.sol", + "contractName": "SignerRoleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/SignerRole.sol\";\n\ncontract SignerRoleMock is SignerRole {\n function removeSigner(address account) public {\n _removeSigner(account);\n }\n\n function onlySignerMock() public view onlySigner {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Causes a compilation error if super._removeSigner is not internal\n function _removeSigner(address account) internal {\n super._removeSigner(account);\n }\n}\n", + "sourcePath": "contracts/mocks/SignerRoleMock.sol", + "sourceMap": "67:423:106:-;;;318:24:10;329:12;:10;;;:12;;:::i;:::-;318:10;;;:24;;:::i;:::-;67:423:106;;788:96:0;833:15;867:10;860:17;;788:96;:::o;786:119:10:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;67:423:106:-;;;;;;;", + "deployedSourceMap": "67:423:106:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;67:423:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;111:85;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;111:85:106;;;;;;;;;;;;;;;;;;;:::i;:::-;;494:107:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;494:107:10;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;202:113:106;;;:::i;:::-;;703:77:10;;;:::i;:::-;;607:90;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;607:90:10;;;;;;;;;;;;;;;;;;;:::i;:::-;;111:85:106;167:22;181:7;167:13;:22::i;:::-;111:85;:::o;494:107:10:-;550:4;573:21;586:7;573:8;:12;;:21;;;;:::i;:::-;566:28;;494:107;;;:::o;202:113:106:-;395:22:10;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;202:113:106:o;703:77:10:-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;607:90::-;395:22;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;394:94:106:-;453:28;473:7;453:19;:28::i;:::-;394:94;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;786:119:10:-;842:21;855:7;842:8;:12;;:21;;;;:::i;:::-;890:7;878:20;;;;;;;;;;;;786:119;:::o;911:127::-;970:24;986:7;970:8;:15;;:24;;;;:::i;:::-;1023:7;1009:22;;;;;;;;;;;;911:127;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "SignerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "SignerRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlySignerMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/SignerRoleMock.sol", + "exportedSymbols": { + "SignerRoleMock": [ + 8459 + ] + }, + "id": 8460, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8427, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:106" + }, + { + "absolutePath": "contracts/access/roles/SignerRole.sol", + "file": "../access/roles/SignerRole.sol", + "id": 8428, + "nodeType": "ImportDirective", + "scope": 8460, + "sourceUnit": 1623, + "src": "25:40:106", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8429, + "name": "SignerRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1622, + "src": "94:10:106", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignerRole_$1622", + "typeString": "contract SignerRole" + } + }, + "id": 8430, + "nodeType": "InheritanceSpecifier", + "src": "94:10:106" + } + ], + "contractDependencies": [ + 26, + 1622 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 8459, + "linearizedBaseContracts": [ + 8459, + 1622, + 26 + ], + "name": "SignerRoleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8439, + "nodeType": "Block", + "src": "157:39:106", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8436, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8432, + "src": "181:7:106", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8435, + "name": "_removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8458 + ], + "referencedDeclaration": 8458, + "src": "167:13:106", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "167:22:106", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8438, + "nodeType": "ExpressionStatement", + "src": "167:22:106" + } + ] + }, + "documentation": null, + "id": 8440, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8432, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 8440, + "src": "133:15:106", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "133:7:106", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "132:17:106" + }, + "returnParameters": { + "id": 8434, + "nodeType": "ParameterList", + "parameters": [], + "src": "157:0:106" + }, + "scope": 8459, + "src": "111:85:106", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 8445, + "nodeType": "Block", + "src": "251:64:106", + "statements": [] + }, + "documentation": null, + "id": 8446, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 8443, + "modifierName": { + "argumentTypes": null, + "id": 8442, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1555, + "src": "240:10:106", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "240:10:106" + } + ], + "name": "onlySignerMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8441, + "nodeType": "ParameterList", + "parameters": [], + "src": "225:2:106" + }, + "returnParameters": { + "id": 8444, + "nodeType": "ParameterList", + "parameters": [], + "src": "251:0:106" + }, + "scope": 8459, + "src": "202:113:106", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 8457, + "nodeType": "Block", + "src": "443:45:106", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8454, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8448, + "src": "473:7:106", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 8451, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14256, + "src": "453:5:106", + "typeDescriptions": { + "typeIdentifier": "t_super$_SignerRoleMock_$8459", + "typeString": "contract super SignerRoleMock" + } + }, + "id": 8453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_removeSigner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1621, + "src": "453:19:106", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "453:28:106", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8456, + "nodeType": "ExpressionStatement", + "src": "453:28:106" + } + ] + }, + "documentation": null, + "id": 8458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8448, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 8458, + "src": "417:15:106", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:106", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "416:17:106" + }, + "returnParameters": { + "id": 8450, + "nodeType": "ParameterList", + "parameters": [], + "src": "443:0:106" + }, + "scope": 8459, + "src": "394:94:106", + "stateMutability": "nonpayable", + "superFunction": 1621, + "visibility": "internal" + } + ], + "scope": 8460, + "src": "67:423:106" + } + ], + "src": "0:491:106" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b61040d1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2460405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108a66022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61064d806102596000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630e316ab71461005c5780637df73e27146100a0578063b44e2ab9146100fc578063e5c8b03d14610106578063eb12d61e14610110575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b005b6100e2600480360360208110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610160565b604051808215151515815260200191505060405180910390f35b61010461017d565b005b61010e6101e4565b005b6101526004803603602081101561012657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101f6565b005b61015d81610267565b50565b600061017682600061027390919063ffffffff16565b9050919050565b61018d610188610351565b610160565b6101e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b565b6101f46101ef610351565b610267565b565b610206610201610351565b610160565b61025b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b61026481610359565b50565b610270816103b3565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105c76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b61036d81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2460405160405180910390a250565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b60405160405180910390a250565b6104178282610273565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f28282610273565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105a66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f20616464726573735369676e6572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205369676e657220726f6c65a265627a7a723158207429003a9e950530f2e2684f78e16dd08c41a971e394e0c06c9683b02fdf4b1764736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630e316ab71461005c5780637df73e27146100a0578063b44e2ab9146100fc578063e5c8b03d14610106578063eb12d61e14610110575b600080fd5b61009e6004803603602081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b005b6100e2600480360360208110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610160565b604051808215151515815260200191505060405180910390f35b61010461017d565b005b61010e6101e4565b005b6101526004803603602081101561012657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101f6565b005b61015d81610267565b50565b600061017682600061027390919063ffffffff16565b9050919050565b61018d610188610351565b610160565b6101e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b565b6101f46101ef610351565b610267565b565b610206610201610351565b610160565b61025b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806105e96030913960400191505060405180910390fd5b61026481610359565b50565b610270816103b3565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156102fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105c76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b61036d81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2460405160405180910390a250565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b60405160405180910390a250565b6104178282610273565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f28282610273565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105a66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f20616464726573735369676e6572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205369676e657220726f6c65a265627a7a723158207429003a9e950530f2e2684f78e16dd08c41a971e394e0c06c9683b02fdf4b1764736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SimpleToken.json b/node_modules/@openzeppelin/contracts/build/contracts/SimpleToken.json new file mode 100644 index 0000000..255c7f1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SimpleToken.json @@ -0,0 +1,799 @@ +{ + "fileName": "SimpleToken.sol", + "contractName": "SimpleToken", + "source": "pragma solidity ^0.5.0;\n\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../token/ERC20/ERC20Detailed.sol\";\n\n/**\n * @title SimpleToken\n * @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.\n * Note they can later distribute these tokens as they wish using `transfer` and other\n * `ERC20` functions.\n */\ncontract SimpleToken is Context, ERC20, ERC20Detailed {\n\n /**\n * @dev Constructor that gives _msgSender() all of existing tokens.\n */\n constructor () public ERC20Detailed(\"SimpleToken\", \"SIM\", 18) {\n _mint(_msgSender(), 10000 * (10 ** uint256(decimals())));\n }\n}\n", + "sourcePath": "contracts/examples/SimpleToken.sol", + "sourceMap": "363:286:36:-;;;512:135;8:9:-1;5:2;;;30:1;27;20:12;5:2;512:135:36;416:163:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;570:2:36;512:4:122;504:5;:12;;;;;;;;;;;;:::i;:::-;;536:6;526:7;:16;;;;;;;;;;;;:::i;:::-;;564:8;552:9;;:20;;;;;;;;;;;;;;;;;;416:163;;;584:56:36;590:12;:10;;;:12;;:::i;:::-;627:10;:8;;;:10;;:::i;:::-;619:19;;613:2;:25;604:5;:35;584:5;;;:56;;:::i;:::-;363:286;;788:96:0;833:15;867:10;860:17;;788:96;:::o;1472:81:122:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;5962:302:119:-;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;;;;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;363:286:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "363:286:36:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;363:286:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;644:81:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1472:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;838:85:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:85:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:258:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;644:81:122;681:13;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:119:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;1472:81:122:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;3802:207:119:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;1706:108::-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;838:85:122:-;877:13;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:85;:::o;4496:258:119:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;2230:132::-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:119:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/examples/SimpleToken.sol", + "exportedSymbols": { + "SimpleToken": [ + 4577 + ] + }, + "id": 4578, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4544, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:36" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 4545, + "nodeType": "ImportDirective", + "scope": 4578, + "sourceUnit": 27, + "src": "25:28:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 4546, + "nodeType": "ImportDirective", + "scope": 4578, + "sourceUnit": 9867, + "src": "54:34:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Detailed.sol", + "file": "../token/ERC20/ERC20Detailed.sol", + "id": 4547, + "nodeType": "ImportDirective", + "scope": 4578, + "sourceUnit": 10018, + "src": "89:42:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4548, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "387:7:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 4549, + "nodeType": "InheritanceSpecifier", + "src": "387:7:36" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4550, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9866, + "src": "396:5:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + }, + "id": 4551, + "nodeType": "InheritanceSpecifier", + "src": "396:5:36" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4552, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10017, + "src": "403:13:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$10017", + "typeString": "contract ERC20Detailed" + } + }, + "id": 4553, + "nodeType": "InheritanceSpecifier", + "src": "403:13:36" + } + ], + "contractDependencies": [ + 26, + 9866, + 10017, + 10216 + ], + "contractKind": "contract", + "documentation": "@title SimpleToken\n@dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.\nNote they can later distribute these tokens as they wish using `transfer` and other\n`ERC20` functions.", + "fullyImplemented": true, + "id": 4577, + "linearizedBaseContracts": [ + 4577, + 10017, + 9866, + 10216, + 26 + ], + "name": "SimpleToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4575, + "nodeType": "Block", + "src": "574:73:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4562, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "590:10:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 4563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "590:12:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 4564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "604:5:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 4565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "613:2:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4567, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10016, + "src": "627:8:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$", + "typeString": "function () view returns (uint8)" + } + }, + "id": 4568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "627:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 4566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "619:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 4569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "619:19:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "613:25:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4571, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "612:27:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "604:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4561, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "584:5:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "584:56:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4574, + "nodeType": "ExpressionStatement", + "src": "584:56:36" + } + ] + }, + "documentation": "@dev Constructor that gives _msgSender() all of existing tokens.", + "id": 4576, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "53696d706c65546f6b656e", + "id": 4556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "548:13:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da035752f00a45fb4b10b269b9dcdc58efd98a12eda6b33da179acab837f7818", + "typeString": "literal_string \"SimpleToken\"" + }, + "value": "SimpleToken" + }, + { + "argumentTypes": null, + "hexValue": "53494d", + "id": 4557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "563:5:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f6fc0e115f393f52de8a1783205484e2c47c0ae0af6904170edd370a74c376e8", + "typeString": "literal_string \"SIM\"" + }, + "value": "SIM" + }, + { + "argumentTypes": null, + "hexValue": "3138", + "id": 4558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "570:2:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "id": 4559, + "modifierName": { + "argumentTypes": null, + "id": 4555, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10017, + "src": "534:13:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$10017_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "534:39:36" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4554, + "nodeType": "ParameterList", + "parameters": [], + "src": "524:2:36" + }, + "returnParameters": { + "id": 4560, + "nodeType": "ParameterList", + "parameters": [], + "src": "574:0:36" + }, + "scope": 4577, + "src": "512:135:36", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4578, + "src": "363:286:36" + } + ], + "src": "0:650:36" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f53696d706c65546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53494d0000000000000000000000000000000000000000000000000000000000815250601282600390805190602001906200009892919062000382565b508160049080519060200190620000b192919062000382565b5080600560006101000a81548160ff021916908360ff1602179055505050506200010a620000e46200011060201b60201c565b620000f46200011860201b60201c565b60ff16600a0a612710026200012f60201b60201c565b62000431565b600033905090565b6000600560009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001ef81600254620002f960201b62000f221790919060201c565b6002819055506200024d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002f960201b62000f221790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008082840190508381101562000378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c557805160ff1916838001178555620003f6565b82800160010185558215620003f6579182015b82811115620003f5578251825591602001919060010190620003d8565b5b50905062000405919062000409565b5090565b6200042e91905b808211156200042a57600081600090555060010162000410565b5090565b90565b6110e080620004416000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161101660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161108760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110636024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fce6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fab6023913960400191505060405180910390fd5b610d2381604051806060016040528060268152602001610ff0602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed4578082015181840152602081019050610eb9565b50505050905090810190601f168015610f015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158200d4b8f66ca773da1880b7c9f7d45b5bd3adc92a516ca0207b2b3ef04ae05f96a64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161101660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161108760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110636024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fce6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061103e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fab6023913960400191505060405180910390fd5b610d2381604051806060016040528060268152602001610ff0602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e629092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ed4578082015181840152602081019050610eb9565b50505050905090810190601f168015610f015780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158200d4b8f66ca773da1880b7c9f7d45b5bd3adc92a516ca0207b2b3ef04ae05f96a64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/Strings.json b/node_modules/@openzeppelin/contracts/build/contracts/Strings.json new file mode 100644 index 0000000..ecbfb8d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/Strings.json @@ -0,0 +1,1161 @@ +{ + "fileName": "Strings.sol", + "contractName": "Strings", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n /**\n * @dev Converts a `uint256` to its ASCII `string` representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n uint256 index = digits - 1;\n temp = value;\n while (temp != 0) {\n buffer[index--] = byte(uint8(48 + temp % 10));\n temp /= 10;\n }\n return string(buffer);\n }\n}\n", + "sourcePath": "contracts/utils/Strings.sol", + "sourceMap": "93:834:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "93:834:113:-:0;;;;;;;;", + "abi": [], + "ast": { + "absolutePath": "contracts/utils/Strings.sol", + "exportedSymbols": { + "Strings": [ + 14437 + ] + }, + "id": 14438, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 14352, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:113" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 14353, + "nodeType": "StructuredDocumentation", + "src": "58:34:113", + "text": " @dev String operations." + }, + "fullyImplemented": true, + "id": 14437, + "linearizedBaseContracts": [ + 14437 + ], + "name": "Strings", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 14435, + "nodeType": "Block", + "src": "273:652:113", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14361, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14356, + "src": "475:5:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 14362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "484:1:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "475:10:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 14367, + "nodeType": "IfStatement", + "src": "471:51:113", + "trueBody": { + "id": 14366, + "nodeType": "Block", + "src": "487:35:113", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 14364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "508:3:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "functionReturnParameters": 14360, + "id": 14365, + "nodeType": "Return", + "src": "501:10:113" + } + ] + } + }, + { + "assignments": [ + 14369 + ], + "declarations": [ + { + "constant": false, + "id": 14369, + "mutability": "mutable", + "name": "temp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14435, + "src": "531:12:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14368, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "531:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 14371, + "initialValue": { + "argumentTypes": null, + "id": 14370, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14356, + "src": "546:5:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "531:20:113" + }, + { + "assignments": [ + 14373 + ], + "declarations": [ + { + "constant": false, + "id": 14373, + "mutability": "mutable", + "name": "digits", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14435, + "src": "561:14:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "561:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 14374, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "561:14:113" + }, + { + "body": { + "id": 14385, + "nodeType": "Block", + "src": "603:57:113", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 14379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "617:8:113", + "subExpression": { + "argumentTypes": null, + "id": 14378, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14373, + "src": "617:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14380, + "nodeType": "ExpressionStatement", + "src": "617:8:113" + }, + { + "expression": { + "argumentTypes": null, + "id": 14383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 14381, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14369, + "src": "639:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 14382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "647:2:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "639:10:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14384, + "nodeType": "ExpressionStatement", + "src": "639:10:113" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14375, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14369, + "src": "592:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 14376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "600:1:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "592:9:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14386, + "nodeType": "WhileStatement", + "src": "585:75:113" + }, + { + "assignments": [ + 14388 + ], + "declarations": [ + { + "constant": false, + "id": 14388, + "mutability": "mutable", + "name": "buffer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14435, + "src": "669:19:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 14387, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "669:5:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 14393, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14391, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14373, + "src": "701:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "691:9:113", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 14389, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "695:5:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 14392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "691:17:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "669:39:113" + }, + { + "assignments": [ + 14395 + ], + "declarations": [ + { + "constant": false, + "id": 14395, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14435, + "src": "718:13:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "718:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 14399, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14396, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14373, + "src": "734:6:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 14397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "743:1:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "734:10:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "718:26:113" + }, + { + "expression": { + "argumentTypes": null, + "id": 14402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 14400, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14369, + "src": "754:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 14401, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14356, + "src": "761:5:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "754:12:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14403, + "nodeType": "ExpressionStatement", + "src": "754:12:113" + }, + { + "body": { + "id": 14428, + "nodeType": "Block", + "src": "794:94:113", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 14422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 14407, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14388, + "src": "808:6:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 14410, + "indexExpression": { + "argumentTypes": null, + "id": 14409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "815:7:113", + "subExpression": { + "argumentTypes": null, + "id": 14408, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14395, + "src": "815:5:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "808:15:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 14415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "837:2:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14416, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14369, + "src": "842:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 14417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "849:2:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "842:9:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "837:14:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "831:5:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 14413, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "831:5:113", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "831:21:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 14412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "826:4:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 14411, + "name": "byte", + "nodeType": "ElementaryTypeName", + "src": "826:4:113", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "826:27:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "808:45:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 14423, + "nodeType": "ExpressionStatement", + "src": "808:45:113" + }, + { + "expression": { + "argumentTypes": null, + "id": 14426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 14424, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14369, + "src": "867:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 14425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:2:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "867:10:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14427, + "nodeType": "ExpressionStatement", + "src": "867:10:113" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14404, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14369, + "src": "783:4:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 14405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "791:1:113", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "783:9:113", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14429, + "nodeType": "WhileStatement", + "src": "776:112:113" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 14432, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14388, + "src": "911:6:113", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 14431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "904:6:113", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 14430, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "904:6:113", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 14433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "904:14:113", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 14360, + "id": 14434, + "nodeType": "Return", + "src": "897:21:113" + } + ] + }, + "documentation": { + "id": 14354, + "nodeType": "StructuredDocumentation", + "src": "115:82:113", + "text": " @dev Converts a `uint256` to its ASCII `string` representation." + }, + "id": 14436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 14357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14356, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14436, + "src": "220:13:113", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "220:7:113", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "219:15:113" + }, + "returnParameters": { + "id": 14360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14359, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 14436, + "src": "258:13:113", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 14358, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "258:6:113", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "257:15:113" + }, + "scope": 14437, + "src": "202:723:113", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 14438, + "src": "93:834:113" + } + ], + "src": "33:895:113" + }, + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ed3de2f747bf842d48fb87041ed451b0af3929d129623741722961615b3e3e3864736f6c634300060a0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ed3de2f747bf842d48fb87041ed451b0af3929d129623741722961615b3e3e3864736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/StringsMock.json b/node_modules/@openzeppelin/contracts/build/contracts/StringsMock.json new file mode 100644 index 0000000..48f8672 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/StringsMock.json @@ -0,0 +1,259 @@ +{ + "fileName": "StringsMock.sol", + "contractName": "StringsMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../utils/Strings.sol\";\n\ncontract StringsMock {\n function fromUint256(uint256 value) public pure returns (string memory) {\n return Strings.toString(value);\n }\n}\n", + "sourcePath": "contracts/mocks/StringsMock.sol", + "sourceMap": "90:148:63:-:0;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "90:148:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;117:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;174:13;206:23;223:5;206:16;:23::i;:::-;199:30;;117:119;;;:::o;202:723:100:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "fromUint256", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/StringsMock.sol", + "exportedSymbols": { + "StringsMock": [ + 5922 + ] + }, + "id": 5923, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5907, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:63" + }, + { + "absolutePath": "contracts/utils/Strings.sol", + "file": "../utils/Strings.sol", + "id": 5908, + "nodeType": "ImportDirective", + "scope": 5923, + "sourceUnit": 12368, + "src": "58:30:63", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5922, + "linearizedBaseContracts": [ + 5922 + ], + "name": "StringsMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5920, + "nodeType": "Block", + "src": "189:47:63", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5917, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5910, + "src": "223:5:63", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5915, + "name": "Strings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12367, + "src": "206:7:63", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Strings_$12367_$", + "typeString": "type(library Strings)" + } + }, + "id": 5916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toString", + "nodeType": "MemberAccess", + "referencedDeclaration": 12366, + "src": "206:16:63", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "206:23:63", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5914, + "id": 5919, + "nodeType": "Return", + "src": "199:30:63" + } + ] + }, + "documentation": null, + "functionSelector": "a2bd3644", + "id": 5921, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "fromUint256", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5910, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5921, + "src": "138:13:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "138:7:63", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "137:15:63" + }, + "returnParameters": { + "id": 5914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5913, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5921, + "src": "174:13:63", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5912, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "174:6:63", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "173:15:63" + }, + "scope": 5922, + "src": "117:119:63", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 5923, + "src": "90:148:63" + } + ], + "src": "33:206:63" + }, + "bytecode": "0x608060405234801561001057600080fd5b50610266806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063a2bd364414610030575b600080fd5b61005c6004803603602081101561004657600080fd5b81019080803590602001909291905050506100d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561009c578082015181840152602081019050610081565b50505050905090810190601f1680156100c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100e2826100e9565b9050919050565b60606000821415610131576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061022b565b600082905060005b6000821461015b578080600101915050600a828161015357fe5b049150610139565b60608167ffffffffffffffff8111801561017457600080fd5b506040519080825280601f01601f1916602001820160405280156101a75781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461022357600a84816101c857fe5b0660300160f81b828280600190039350815181106101e257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161021b57fe5b0493506101b6565b819450505050505b91905056fea2646970667358221220fdaa46be900d2d2c66ba7adfb840d366071366af8a87438e273e986924c3e96564736f6c63430006090033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063a2bd364414610030575b600080fd5b61005c6004803603602081101561004657600080fd5b81019080803590602001909291905050506100d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561009c578082015181840152602081019050610081565b50505050905090810190601f1680156100c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606100e2826100e9565b9050919050565b60606000821415610131576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061022b565b600082905060005b6000821461015b578080600101915050600a828161015357fe5b049150610139565b60608167ffffffffffffffff8111801561017457600080fd5b506040519080825280601f01601f1916602001820160405280156101a75781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461022357600a84816101c857fe5b0660300160f81b828280600190039350815181106101e257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161021b57fe5b0493506101b6565b819450505050505b91905056fea2646970667358221220fdaa46be900d2d2c66ba7adfb840d366071366af8a87438e273e986924c3e96564736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/SupportsInterfaceWithLookupMock.json b/node_modules/@openzeppelin/contracts/build/contracts/SupportsInterfaceWithLookupMock.json new file mode 100644 index 0000000..73045b4 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/SupportsInterfaceWithLookupMock.json @@ -0,0 +1,1110 @@ +{ + "fileName": "ERC165InterfacesSupported.sol", + "contractName": "SupportsInterfaceWithLookupMock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * https://eips.ethereum.org/EIPS/eip-214#specification\n * From the specification:\n * > Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead\n * throw an exception.\n * > These operations include [...], LOG0, LOG1, LOG2, [...]\n *\n * therefore, because this contract is staticcall'd we need to not emit events (which is how solidity-coverage works)\n * solidity-coverage ignores the /mocks folder, so we duplicate its implementation here to avoid instrumenting it\n */\ncontract SupportsInterfaceWithLookupMock is IERC165 {\n /*\n * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n */\n bytes4 public constant INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n /**\n * @dev A mapping of interface id to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev A contract implementing SupportsInterfaceWithLookup\n * implement ERC165 itself.\n */\n constructor () public {\n _registerInterface(INTERFACE_ID_ERC165);\n }\n\n /**\n * @dev Implement supportsInterface(bytes4) using a lookup table.\n */\n function supportsInterface(bytes4 interfaceId) public view override returns (bool) {\n return _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Private method for registering an interface.\n */\n function _registerInterface(bytes4 interfaceId) internal {\n require(interfaceId != 0xffffffff, \"ERC165InterfacesSupported: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n\ncontract ERC165InterfacesSupported is SupportsInterfaceWithLookupMock {\n constructor (bytes4[] memory interfaceIds) public {\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n _registerInterface(interfaceIds[i]);\n }\n }\n}\n", + "sourcePath": "contracts/mocks/ERC165/ERC165InterfacesSupported.sol", + "sourceMap": "629:1062:28:-:0;;;1091:78;;;;;;;;;;1123:39;815:10;1142:19;;1123:18;;;:39;;:::i;:::-;629:1062;;1480:209;1570:10;1555:25;;:11;:25;;;;;1547:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1678:4;1642:20;:33;1663:11;1642:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1480:209;:::o;629:1062::-;;;;;;;", + "deployedSourceMap": "629:1062:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1261:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;770:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1261:140;1338:4;1361:20;:33;1382:11;1361:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1354:40;;1261:140;;;:::o;770:55::-;815:10;770:55;;;:::o", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "INTERFACE_ID_ERC165", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/ERC165/ERC165InterfacesSupported.sol", + "exportedSymbols": { + "ERC165InterfacesSupported": [ + 3435 + ], + "SupportsInterfaceWithLookupMock": [ + 3406 + ] + }, + "id": 3436, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3350, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:28" + }, + { + "absolutePath": "contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 3351, + "nodeType": "ImportDirective", + "scope": 3436, + "sourceUnit": 2437, + "src": "58:41:28", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3353, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2436, + "src": "673:7:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$2436", + "typeString": "contract IERC165" + } + }, + "id": 3354, + "nodeType": "InheritanceSpecifier", + "src": "673:7:28" + } + ], + "contractDependencies": [ + 2436 + ], + "contractKind": "contract", + "documentation": { + "id": 3352, + "nodeType": "StructuredDocumentation", + "src": "101:527:28", + "text": " https://eips.ethereum.org/EIPS/eip-214#specification\n From the specification:\n > Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead\n throw an exception.\n > These operations include [...], LOG0, LOG1, LOG2, [...]\n therefore, because this contract is staticcall'd we need to not emit events (which is how solidity-coverage works)\n solidity-coverage ignores the /mocks folder, so we duplicate its implementation here to avoid instrumenting it" + }, + "fullyImplemented": true, + "id": 3406, + "linearizedBaseContracts": [ + 3406, + 2436 + ], + "name": "SupportsInterfaceWithLookupMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "34d7006c", + "id": 3357, + "mutability": "constant", + "name": "INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "770:55:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3355, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "770:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "815:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "public" + }, + { + "constant": false, + "documentation": { + "id": 3358, + "nodeType": "StructuredDocumentation", + "src": "832:83:28", + "text": " @dev A mapping of interface id to whether or not it's supported." + }, + "id": 3362, + "mutability": "mutable", + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3406, + "src": "920:52:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 3361, + "keyType": { + "id": 3359, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "928:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "920:23:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 3360, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "938:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3370, + "nodeType": "Block", + "src": "1113:56:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3367, + "name": "INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3357, + "src": "1142:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3366, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "1123:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1123:39:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3369, + "nodeType": "ExpressionStatement", + "src": "1123:39:28" + } + ] + }, + "documentation": { + "id": 3363, + "nodeType": "StructuredDocumentation", + "src": "979:107:28", + "text": " @dev A contract implementing SupportsInterfaceWithLookup\n implement ERC165 itself." + }, + "id": 3371, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3364, + "nodeType": "ParameterList", + "parameters": [], + "src": "1103:2:28" + }, + "returnParameters": { + "id": 3365, + "nodeType": "ParameterList", + "parameters": [], + "src": "1113:0:28" + }, + "scope": 3406, + "src": "1091:78:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 2435 + ], + "body": { + "id": 3384, + "nodeType": "Block", + "src": "1344:57:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3380, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "1361:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3382, + "indexExpression": { + "argumentTypes": null, + "id": 3381, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3374, + "src": "1382:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1361:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3379, + "id": 3383, + "nodeType": "Return", + "src": "1354:40:28" + } + ] + }, + "documentation": { + "id": 3372, + "nodeType": "StructuredDocumentation", + "src": "1175:81:28", + "text": " @dev Implement supportsInterface(bytes4) using a lookup table." + }, + "functionSelector": "01ffc9a7", + "id": 3385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3376, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1320:8:28" + }, + "parameters": { + "id": 3375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3374, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3385, + "src": "1288:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3373, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1288:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1287:20:28" + }, + "returnParameters": { + "id": 3379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3378, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3385, + "src": "1338:4:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3377, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1338:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1337:6:28" + }, + "scope": 3406, + "src": "1261:140:28", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 3404, + "nodeType": "Block", + "src": "1537:152:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3392, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3388, + "src": "1555:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 3393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1570:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1555:25:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313635496e7465726661636573537570706f727465643a20696e76616c696420696e74657266616365206964", + "id": 3395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:49:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab988774bd2736ab186ba4a48b62a1df6ee4d364b326b9ef43e1c20f8f72aade", + "typeString": "literal_string \"ERC165InterfacesSupported: invalid interface id\"" + }, + "value": "ERC165InterfacesSupported: invalid interface id" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ab988774bd2736ab186ba4a48b62a1df6ee4d364b326b9ef43e1c20f8f72aade", + "typeString": "literal_string \"ERC165InterfacesSupported: invalid interface id\"" + } + ], + "id": 3391, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1547:7:28", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1547:85:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3397, + "nodeType": "ExpressionStatement", + "src": "1547:85:28" + }, + { + "expression": { + "argumentTypes": null, + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3398, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3362, + "src": "1642:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3400, + "indexExpression": { + "argumentTypes": null, + "id": 3399, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3388, + "src": "1663:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1642:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1678:4:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1642:40:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3403, + "nodeType": "ExpressionStatement", + "src": "1642:40:28" + } + ] + }, + "documentation": { + "id": 3386, + "nodeType": "StructuredDocumentation", + "src": "1407:68:28", + "text": " @dev Private method for registering an interface." + }, + "id": 3405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3388, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3405, + "src": "1508:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3387, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1508:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1507:20:28" + }, + "returnParameters": { + "id": 3390, + "nodeType": "ParameterList", + "parameters": [], + "src": "1537:0:28" + }, + "scope": 3406, + "src": "1480:209:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3436, + "src": "629:1062:28" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3407, + "name": "SupportsInterfaceWithLookupMock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3406, + "src": "1731:31:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SupportsInterfaceWithLookupMock_$3406", + "typeString": "contract SupportsInterfaceWithLookupMock" + } + }, + "id": 3408, + "nodeType": "InheritanceSpecifier", + "src": "1731:31:28" + } + ], + "contractDependencies": [ + 2436, + 3406 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3435, + "linearizedBaseContracts": [ + 3435, + 3406, + 2436 + ], + "name": "ERC165InterfacesSupported", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3433, + "nodeType": "Block", + "src": "1819:126:28", + "statements": [ + { + "body": { + "id": 3431, + "nodeType": "Block", + "src": "1879:60:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3426, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3411, + "src": "1912:12:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3428, + "indexExpression": { + "argumentTypes": null, + "id": 3427, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1925:1:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1912:15:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3425, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "1893:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1893:35:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3430, + "nodeType": "ExpressionStatement", + "src": "1893:35:28" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3418, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1849:1:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3419, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3411, + "src": "1853:12:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1853:19:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1849:23:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3432, + "initializationExpression": { + "assignments": [ + 3415 + ], + "declarations": [ + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3432, + "src": "1834:9:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1834:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3417, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1846:1:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1834:13:28" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1874:3:28", + "subExpression": { + "argumentTypes": null, + "id": 3422, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1874:1:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3424, + "nodeType": "ExpressionStatement", + "src": "1874:3:28" + }, + "nodeType": "ForStatement", + "src": "1829:110:28" + } + ] + }, + "documentation": null, + "id": 3434, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3411, + "mutability": "mutable", + "name": "interfaceIds", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3434, + "src": "1782:28:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 3409, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1782:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3410, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1782:8:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1781:30:28" + }, + "returnParameters": { + "id": 3413, + "nodeType": "ParameterList", + "parameters": [], + "src": "1819:0:28" + }, + "scope": 3435, + "src": "1769:176:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 3436, + "src": "1693:254:28" + } + ], + "src": "33:1915:28" + }, + "bytecode": "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61002c60201b60201c565b610117565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156100ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806102ca602f913960400191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6101a4806101266000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806334d7006c146100a0575b600080fd5b6100866004803603602081101561005157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506100fc565b604051808215151515815260200191505060405180910390f35b6100a8610163565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6301ffc9a760e01b8156fea26469706673582212207a9bd0f3475fa5deda3c454b81160b4865b189d20f7eb0488039d7d485584b5964736f6c63430006090033455243313635496e7465726661636573537570706f727465643a20696e76616c696420696e74657266616365206964", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b57806334d7006c146100a0575b600080fd5b6100866004803603602081101561005157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506100fc565b604051808215151515815260200191505060405180910390f35b6100a8610163565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6301ffc9a760e01b8156fea26469706673582212207a9bd0f3475fa5deda3c454b81160b4865b189d20f7eb0488039d7d485584b5964736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsale.json new file mode 100644 index 0000000..e609e04 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsale.json @@ -0,0 +1,2089 @@ +{ + "fileName": "TimedCrowdsale.sol", + "contractName": "TimedCrowdsale", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../Crowdsale.sol\";\n\n/**\n * @title TimedCrowdsale\n * @dev Crowdsale accepting contributions only within a time frame.\n */\ncontract TimedCrowdsale is Crowdsale {\n using SafeMath for uint256;\n\n uint256 private _openingTime;\n uint256 private _closingTime;\n\n /**\n * Event for crowdsale extending\n * @param newClosingTime new closing time\n * @param prevClosingTime old closing time\n */\n event TimedCrowdsaleExtended(uint256 prevClosingTime, uint256 newClosingTime);\n\n /**\n * @dev Reverts if not in crowdsale time range.\n */\n modifier onlyWhileOpen {\n require(isOpen(), \"TimedCrowdsale: not open\");\n _;\n }\n\n /**\n * @dev Constructor, takes crowdsale opening and closing times.\n * @param openingTime Crowdsale opening time\n * @param closingTime Crowdsale closing time\n */\n constructor (uint256 openingTime, uint256 closingTime) public {\n // solhint-disable-next-line not-rely-on-time\n require(openingTime >= block.timestamp, \"TimedCrowdsale: opening time is before current time\");\n // solhint-disable-next-line max-line-length\n require(closingTime > openingTime, \"TimedCrowdsale: opening time is not before closing time\");\n\n _openingTime = openingTime;\n _closingTime = closingTime;\n }\n\n /**\n * @return the crowdsale opening time.\n */\n function openingTime() public view returns (uint256) {\n return _openingTime;\n }\n\n /**\n * @return the crowdsale closing time.\n */\n function closingTime() public view returns (uint256) {\n return _closingTime;\n }\n\n /**\n * @return true if the crowdsale is open, false otherwise.\n */\n function isOpen() public view returns (bool) {\n // solhint-disable-next-line not-rely-on-time\n return block.timestamp >= _openingTime && block.timestamp <= _closingTime;\n }\n\n /**\n * @dev Checks whether the period in which the crowdsale is open has already elapsed.\n * @return Whether crowdsale period has elapsed\n */\n function hasClosed() public view returns (bool) {\n // solhint-disable-next-line not-rely-on-time\n return block.timestamp > _closingTime;\n }\n\n /**\n * @dev Extend parent behavior requiring to be within contributing period.\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal onlyWhileOpen view {\n super._preValidatePurchase(beneficiary, weiAmount);\n }\n\n /**\n * @dev Extend crowdsale.\n * @param newClosingTime Crowdsale closing time\n */\n function _extendTime(uint256 newClosingTime) internal {\n require(!hasClosed(), \"TimedCrowdsale: already closed\");\n // solhint-disable-next-line max-line-length\n require(newClosingTime > _closingTime, \"TimedCrowdsale: new closing time is before current closing time\");\n\n emit TimedCrowdsaleExtended(_closingTime, newClosingTime);\n _closingTime = newClosingTime;\n }\n}\n", + "sourcePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "exportedSymbols": { + "TimedCrowdsale": [ + 3087 + ] + }, + "id": 3088, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2939, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:24" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2940, + "nodeType": "ImportDirective", + "scope": 3088, + "sourceUnit": 5300, + "src": "25:33:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 2941, + "nodeType": "ImportDirective", + "scope": 3088, + "sourceUnit": 2120, + "src": "59:26:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2942, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "215:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 2943, + "nodeType": "InheritanceSpecifier", + "src": "215:9:24" + } + ], + "contractDependencies": [ + 26, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": "@title TimedCrowdsale\n@dev Crowdsale accepting contributions only within a time frame.", + "fullyImplemented": false, + "id": 3087, + "linearizedBaseContracts": [ + 3087, + 2119, + 13820, + 26 + ], + "name": "TimedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2946, + "libraryName": { + "contractScope": null, + "id": 2944, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "237:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "231:27:24", + "typeName": { + "id": 2945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2948, + "name": "_openingTime", + "nodeType": "VariableDeclaration", + "scope": 3087, + "src": "264:28:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2950, + "name": "_closingTime", + "nodeType": "VariableDeclaration", + "scope": 3087, + "src": "298:28:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "298:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": "Event for crowdsale extending\n@param newClosingTime new closing time\n@param prevClosingTime old closing time", + "id": 2956, + "name": "TimedCrowdsaleExtended", + "nodeType": "EventDefinition", + "parameters": { + "id": 2955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2952, + "indexed": false, + "name": "prevClosingTime", + "nodeType": "VariableDeclaration", + "scope": 2956, + "src": "508:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "508:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2954, + "indexed": false, + "name": "newClosingTime", + "nodeType": "VariableDeclaration", + "scope": 2956, + "src": "533:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "533:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "507:49:24" + }, + "src": "479:78:24" + }, + { + "body": { + "id": 2965, + "nodeType": "Block", + "src": "654:73:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2959, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3029, + "src": "672:6:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "672:8:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54696d656443726f776473616c653a206e6f74206f70656e", + "id": 2961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "682:26:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2bf2360fbfefd7b9839cf0bcb3fd2dde1898d3583a14ae764b84d5dfe6555739", + "typeString": "literal_string \"TimedCrowdsale: not open\"" + }, + "value": "TimedCrowdsale: not open" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2bf2360fbfefd7b9839cf0bcb3fd2dde1898d3583a14ae764b84d5dfe6555739", + "typeString": "literal_string \"TimedCrowdsale: not open\"" + } + ], + "id": 2958, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "664:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "664:45:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2963, + "nodeType": "ExpressionStatement", + "src": "664:45:24" + }, + { + "id": 2964, + "nodeType": "PlaceholderStatement", + "src": "719:1:24" + } + ] + }, + "documentation": "@dev Reverts if not in crowdsale time range.", + "id": 2966, + "name": "onlyWhileOpen", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2957, + "nodeType": "ParameterList", + "parameters": [], + "src": "654:0:24" + }, + "src": "631:96:24", + "visibility": "internal" + }, + { + "body": { + "id": 2996, + "nodeType": "Block", + "src": "977:394:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2974, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2968, + "src": "1049:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2975, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13933, + "src": "1064:5:24", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1064:15:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1049:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d65", + "id": 2978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1081:53:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_049ff370aa07a5b137b2f9ceff31b2cbde98f43948a6244366d58c828d6914cd", + "typeString": "literal_string \"TimedCrowdsale: opening time is before current time\"" + }, + "value": "TimedCrowdsale: opening time is before current time" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_049ff370aa07a5b137b2f9ceff31b2cbde98f43948a6244366d58c828d6914cd", + "typeString": "literal_string \"TimedCrowdsale: opening time is before current time\"" + } + ], + "id": 2973, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1041:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1041:94:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2980, + "nodeType": "ExpressionStatement", + "src": "1041:94:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2982, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2970, + "src": "1206:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2983, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2968, + "src": "1220:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1206:25:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d65", + "id": 2985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1233:57:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4568c1d5864c9af3db68fa3e123fb60f1806b0545cf51e08bc4fdd1258bd2e4b", + "typeString": "literal_string \"TimedCrowdsale: opening time is not before closing time\"" + }, + "value": "TimedCrowdsale: opening time is not before closing time" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4568c1d5864c9af3db68fa3e123fb60f1806b0545cf51e08bc4fdd1258bd2e4b", + "typeString": "literal_string \"TimedCrowdsale: opening time is not before closing time\"" + } + ], + "id": 2981, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "1198:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1198:93:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2987, + "nodeType": "ExpressionStatement", + "src": "1198:93:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 2990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2988, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "1302:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2989, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2968, + "src": "1317:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1302:26:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2991, + "nodeType": "ExpressionStatement", + "src": "1302:26:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 2994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2992, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "1338:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2993, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2970, + "src": "1353:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1338:26:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2995, + "nodeType": "ExpressionStatement", + "src": "1338:26:24" + } + ] + }, + "documentation": "@dev Constructor, takes crowdsale opening and closing times.\n@param openingTime Crowdsale opening time\n@param closingTime Crowdsale closing time", + "id": 2997, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2968, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 2997, + "src": "928:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "928:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2970, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 2997, + "src": "949:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "927:42:24" + }, + "returnParameters": { + "id": 2972, + "nodeType": "ParameterList", + "parameters": [], + "src": "977:0:24" + }, + "scope": 3087, + "src": "915:456:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3004, + "nodeType": "Block", + "src": "1489:36:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3002, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "1506:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3001, + "id": 3003, + "nodeType": "Return", + "src": "1499:19:24" + } + ] + }, + "documentation": "@return the crowdsale opening time.", + "id": 3005, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "openingTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2998, + "nodeType": "ParameterList", + "parameters": [], + "src": "1456:2:24" + }, + "returnParameters": { + "id": 3001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3000, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3005, + "src": "1480:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1480:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1479:9:24" + }, + "scope": 3087, + "src": "1436:89:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3012, + "nodeType": "Block", + "src": "1643:36:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3010, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "1660:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3009, + "id": 3011, + "nodeType": "Return", + "src": "1653:19:24" + } + ] + }, + "documentation": "@return the crowdsale closing time.", + "id": 3013, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closingTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3006, + "nodeType": "ParameterList", + "parameters": [], + "src": "1610:2:24" + }, + "returnParameters": { + "id": 3009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3008, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3013, + "src": "1634:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1634:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1633:9:24" + }, + "scope": 3087, + "src": "1590:89:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3028, + "nodeType": "Block", + "src": "1809:144:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3018, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13933, + "src": "1880:5:24", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1880:15:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3020, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2948, + "src": "1899:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1880:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3022, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13933, + "src": "1915:5:24", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1915:15:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 3024, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "1934:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1915:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1880:66:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3017, + "id": 3027, + "nodeType": "Return", + "src": "1873:73:24" + } + ] + }, + "documentation": "@return true if the crowdsale is open, false otherwise.", + "id": 3029, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOpen", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3014, + "nodeType": "ParameterList", + "parameters": [], + "src": "1779:2:24" + }, + "returnParameters": { + "id": 3017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3016, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3029, + "src": "1803:4:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3015, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1803:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1802:6:24" + }, + "scope": 3087, + "src": "1764:189:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3039, + "nodeType": "Block", + "src": "2165:108:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3034, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13933, + "src": "2236:5:24", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2236:15:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 3036, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "2254:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2236:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3033, + "id": 3038, + "nodeType": "Return", + "src": "2229:37:24" + } + ] + }, + "documentation": "@dev Checks whether the period in which the crowdsale is open has already elapsed.\n@return Whether crowdsale period has elapsed", + "id": 3040, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasClosed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3030, + "nodeType": "ParameterList", + "parameters": [], + "src": "2135:2:24" + }, + "returnParameters": { + "id": 3033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3032, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3040, + "src": "2159:4:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3031, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2159:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2158:6:24" + }, + "scope": 3087, + "src": "2117:156:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3056, + "nodeType": "Block", + "src": "2564:67:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3052, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3042, + "src": "2601:11:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3053, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3044, + "src": "2614:9:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3049, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14006, + "src": "2574:5:24", + "typeDescriptions": { + "typeIdentifier": "t_super$_TimedCrowdsale_$3087", + "typeString": "contract super TimedCrowdsale" + } + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 2050, + "src": "2574:26:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2574:50:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3055, + "nodeType": "ExpressionStatement", + "src": "2574:50:24" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring to be within contributing period.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 3057, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3047, + "modifierName": { + "argumentTypes": null, + "id": 3046, + "name": "onlyWhileOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2966, + "src": "2545:13:24", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2545:13:24" + } + ], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3042, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 3057, + "src": "2496:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3041, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2496:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3044, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 3057, + "src": "2517:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2517:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2495:40:24" + }, + "returnParameters": { + "id": 3048, + "nodeType": "ParameterList", + "parameters": [], + "src": "2564:0:24" + }, + "scope": 3087, + "src": "2466:165:24", + "stateMutability": "view", + "superFunction": 2050, + "visibility": "internal" + }, + { + "body": { + "id": 3085, + "nodeType": "Block", + "src": "2789:347:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2807:12:24", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3063, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3040, + "src": "2808:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 3064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2808:11:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54696d656443726f776473616c653a20616c726561647920636c6f736564", + "id": 3066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2821:32:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_634cbd3056ed66fa4fcc9199d612886e4e9f90ebde3b0c138adb38373b973e15", + "typeString": "literal_string \"TimedCrowdsale: already closed\"" + }, + "value": "TimedCrowdsale: already closed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_634cbd3056ed66fa4fcc9199d612886e4e9f90ebde3b0c138adb38373b973e15", + "typeString": "literal_string \"TimedCrowdsale: already closed\"" + } + ], + "id": 3062, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2799:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2799:55:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3068, + "nodeType": "ExpressionStatement", + "src": "2799:55:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3070, + "name": "newClosingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3059, + "src": "2925:14:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 3071, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "2942:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2925:29:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54696d656443726f776473616c653a206e657720636c6f73696e672074696d65206973206265666f72652063757272656e7420636c6f73696e672074696d65", + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2956:65:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_800b650950b0df3fae7606c8f23fafd9964a9f77f965079b0fc21e897862f129", + "typeString": "literal_string \"TimedCrowdsale: new closing time is before current closing time\"" + }, + "value": "TimedCrowdsale: new closing time is before current closing time" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_800b650950b0df3fae7606c8f23fafd9964a9f77f965079b0fc21e897862f129", + "typeString": "literal_string \"TimedCrowdsale: new closing time is before current closing time\"" + } + ], + "id": 3069, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "2917:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2917:105:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3075, + "nodeType": "ExpressionStatement", + "src": "2917:105:24" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3077, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "3061:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3078, + "name": "newClosingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3059, + "src": "3075:14:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3076, + "name": "TimedCrowdsaleExtended", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2956, + "src": "3038:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3038:52:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3080, + "nodeType": "EmitStatement", + "src": "3033:57:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 3083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3081, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2950, + "src": "3100:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3082, + "name": "newClosingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3059, + "src": "3115:14:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3100:29:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3084, + "nodeType": "ExpressionStatement", + "src": "3100:29:24" + } + ] + }, + "documentation": "@dev Extend crowdsale.\n@param newClosingTime Crowdsale closing time", + "id": 3086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_extendTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3059, + "name": "newClosingTime", + "nodeType": "VariableDeclaration", + "scope": 3086, + "src": "2756:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2756:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2755:24:24" + }, + "returnParameters": { + "id": 3061, + "nodeType": "ParameterList", + "parameters": [], + "src": "2789:0:24" + }, + "scope": 3087, + "src": "2735:401:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3088, + "src": "188:2950:24" + } + ], + "src": "0:3139:24" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsaleImpl.json new file mode 100644 index 0000000..efb2c14 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/TimedCrowdsaleImpl.json @@ -0,0 +1,735 @@ +{ + "fileName": "TimedCrowdsaleImpl.sol", + "contractName": "TimedCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/validation/TimedCrowdsale.sol\";\n\ncontract TimedCrowdsaleImpl is TimedCrowdsale {\n constructor (uint256 openingTime, uint256 closingTime, uint256 rate, address payable wallet, IERC20 token)\n public\n Crowdsale(rate, wallet, token)\n TimedCrowdsale(openingTime, closingTime)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function extendTime(uint256 closingTime) public {\n _extendTime(closingTime);\n }\n}\n", + "sourcePath": "contracts/mocks/TimedCrowdsaleImpl.sol", + "sourceMap": "115:427:108:-;;;167:278;8:9:-1;5:2;;;30:1;27;20:12;5:2;167:278:108;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;167:278:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:11;364;307:4;313:6;321:5;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;1064:15:24;1049:11;:30;;1041:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1220:11;1206;:25;1198:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1317:11;1302:12;:26;;;;1353:11;1338:12;:26;;;;915:456;;167:278:108;;;;;115:427;;;;;;", + "deployedSourceMap": "115:427:108:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;115:427:108;2117:156:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2117:156:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1764:189:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1764:189:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1590:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;451:89:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;451:89:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;451:89:108;;;;;;;;;;;;;;;;;:::i;:::-;;1436::24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:89:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;2117:156:24:-;2159:4;2254:12;;2236:15;:30;2229:37;;2117:156;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;3568:85::-;3610:7;3636:10;;3629:17;;3568:85;:::o;1764:189:24:-;1803:4;1899:12;;1880:15;:31;;:66;;;;;1934:12;;1915:15;:31;;1880:66;1873:73;;1764:189;:::o;1590:89::-;1634:7;1660:12;;1653:19;;1590:89;:::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;451:89:108:-;509:24;521:11;509;:24::i;:::-;451:89;:::o;1436::24:-;1480:7;1506:12;;1499:19;;1436:89;:::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;2466:165:24:-;672:8;:6;:8::i;:::-;664:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2574:50;2601:11;2614:9;2574:26;:50::i;:::-;2466:165;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;2735:401:24:-;2808:11;:9;:11::i;:::-;2807:12;2799:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2942:12;;2925:14;:29;2917:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3038:52;3061:12;;3075:14;3038:52;;;;;;;;;;;;;;;;;;;;;;;;3115:14;3100:12;:29;;;;2735:401;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "openingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "prevClosingTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newClosingTime", + "type": "uint256" + } + ], + "name": "TimedCrowdsaleExtended", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "closingTime", + "type": "uint256" + } + ], + "name": "extendTime", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/TimedCrowdsaleImpl.sol", + "exportedSymbols": { + "TimedCrowdsaleImpl": [ + 8516 + ] + }, + "id": 8517, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8478, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:108" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 8479, + "nodeType": "ImportDirective", + "scope": 8517, + "sourceUnit": 10217, + "src": "25:35:108", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../crowdsale/validation/TimedCrowdsale.sol", + "id": 8480, + "nodeType": "ImportDirective", + "scope": 8517, + "sourceUnit": 3088, + "src": "61:52:108", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8481, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3087, + "src": "146:14:108", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$3087", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 8482, + "nodeType": "InheritanceSpecifier", + "src": "146:14:108" + } + ], + "contractDependencies": [ + 26, + 2119, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 8516, + "linearizedBaseContracts": [ + 8516, + 3087, + 2119, + 13820, + 26 + ], + "name": "TimedCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8504, + "nodeType": "Block", + "src": "381:64:108", + "statements": [] + }, + "documentation": null, + "id": 8505, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 8495, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8488, + "src": "307:4:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8496, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8490, + "src": "313:6:108", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8497, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8492, + "src": "321:5:108", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 8498, + "modifierName": { + "argumentTypes": null, + "id": 8494, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "297:9:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "297:30:108" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 8500, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8484, + "src": "351:11:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8501, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8486, + "src": "364:11:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 8502, + "modifierName": { + "argumentTypes": null, + "id": 8499, + "name": "TimedCrowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "336:14:108", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TimedCrowdsale_$3087_$", + "typeString": "type(contract TimedCrowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "336:40:108" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8484, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "180:19:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "180:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8486, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "201:19:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "201:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8488, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "222:12:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "222:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8490, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "236:22:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 8489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "236:15:108", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8492, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "260:12:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 8491, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "260:6:108", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "179:94:108" + }, + "returnParameters": { + "id": 8503, + "nodeType": "ParameterList", + "parameters": [], + "src": "381:0:108" + }, + "scope": 8516, + "src": "167:278:108", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 8514, + "nodeType": "Block", + "src": "499:41:108", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8511, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8507, + "src": "521:11:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8510, + "name": "_extendTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "509:11:108", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 8512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "509:24:108", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8513, + "nodeType": "ExpressionStatement", + "src": "509:24:108" + } + ] + }, + "documentation": null, + "id": 8515, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "extendTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8507, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 8515, + "src": "471:19:108", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "471:7:108", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "470:21:108" + }, + "returnParameters": { + "id": 8509, + "nodeType": "ParameterList", + "parameters": [], + "src": "499:0:108" + }, + "scope": 8516, + "src": "451:89:108", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 8517, + "src": "115:427:108" + } + ], + "src": "0:543:108" + }, + "bytecode": "0x608060405234801561001057600080fd5b50604051611233380380611233833981810160405260a081101561003357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050848484848460016000806101000a81548160ff02191690831515021790555060008311610101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061120e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806111ea6024913960400191505060405180910390fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050428210156102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806111806033913960400191505060405180910390fd5b81811161034a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806111b36037913960400191505060405180910390fd5b816004819055508060058190555050505050505050610e128061036e6000396000f3fe6080604052600436106100915760003560e01c8063521eb27311610059578063521eb27314610182578063a27aebbc146101d9578063b7a8807c14610214578063ec8ac4d81461023f578063fc0c546a1461028357610091565b80631515bc2b146100a35780632c4e722e146100d25780634042b66f146100fd57806347535d7b146101285780634b6753bc14610157575b6100a161009c6102da565b6102e2565b005b3480156100af57600080fd5b506100b861046d565b604051808215151515815260200191505060405180910390f35b3480156100de57600080fd5b506100e7610479565b6040518082815260200191505060405180910390f35b34801561010957600080fd5b50610112610483565b6040518082815260200191505060405180910390f35b34801561013457600080fd5b5061013d61048d565b604051808215151515815260200191505060405180910390f35b34801561016357600080fd5b5061016c6104a8565b6040518082815260200191505060405180910390f35b34801561018e57600080fd5b506101976104b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e557600080fd5b50610212600480360360208110156101fc57600080fd5b81019080803590602001909291905050506104dc565b005b34801561022057600080fd5b506102296104e8565b6040518082815260200191505060405180910390f35b6102816004803603602081101561025557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e2565b005b34801561028f57600080fd5b506102986104f2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061038c828261051b565b6000610397826105a3565b90506103ae826003546105c190919063ffffffff16565b6003819055506103be8382610649565b8273ffffffffffffffffffffffffffffffffffffffff166103dd6102da565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361043c8383610657565b61044461065b565b61044e83836106c6565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600354905090565b600060045442101580156104a357506005544211155b905090565b6000600554905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104e5816106ca565b50565b6000600454905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61052361048d565b610595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b61059f82826107ea565b5050565b60006105ba600254836108eb90919063ffffffff16565b9050919050565b60008082840190508381101561063f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6106538282610971565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156106c3573d6000803e3d6000fd5b50565b5050565b6106d261046d565b15610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54696d656443726f776473616c653a20616c726561647920636c6f736564000081525060200191505060405180910390fd5b600554811161079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610d2a603f913960400191505060405180910390fd5b7f46711e222f558a07afd26e5e71b48ecb0a8b2cdcd40faeb1323e05e2c76a2f3260055482604051808381526020018281526020019250505060405180910390a18060058190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610d8a602a913960400191505060405180910390fd5b60008114156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b6000808314156108fe576000905061096b565b600082840290508284828161090f57fe5b0414610966576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610d696021913960400191505060405180910390fd5b809150505b92915050565b6109be8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c29092919063ffffffff16565b5050565b610a8e838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a93565b505050565b610ab28273ffffffffffffffffffffffffffffffffffffffff16610cde565b610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610b735780518252602082019150602081019050602083039250610b50565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b509150915081610c52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610cd857808060200190516020811015610c7157600080fd5b8101908080519060200190929190505050610cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610db4602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610d2057506000801b8214155b9250505091905056fe54696d656443726f776473616c653a206e657720636c6f73696e672074696d65206973206265666f72652063757272656e7420636c6f73696e672074696d65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820f8b81f7dedd4a01b115778fee04318a07337211621204a30ee88bb4d170423ea64736f6c6343000511003254696d656443726f776473616c653a206f70656e696e672074696d65206973206265666f72652063757272656e742074696d6554696d656443726f776473616c653a206f70656e696e672074696d65206973206e6f74206265666f726520636c6f73696e672074696d6543726f776473616c653a20746f6b656e20697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100915760003560e01c8063521eb27311610059578063521eb27314610182578063a27aebbc146101d9578063b7a8807c14610214578063ec8ac4d81461023f578063fc0c546a1461028357610091565b80631515bc2b146100a35780632c4e722e146100d25780634042b66f146100fd57806347535d7b146101285780634b6753bc14610157575b6100a161009c6102da565b6102e2565b005b3480156100af57600080fd5b506100b861046d565b604051808215151515815260200191505060405180910390f35b3480156100de57600080fd5b506100e7610479565b6040518082815260200191505060405180910390f35b34801561010957600080fd5b50610112610483565b6040518082815260200191505060405180910390f35b34801561013457600080fd5b5061013d61048d565b604051808215151515815260200191505060405180910390f35b34801561016357600080fd5b5061016c6104a8565b6040518082815260200191505060405180910390f35b34801561018e57600080fd5b506101976104b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e557600080fd5b50610212600480360360208110156101fc57600080fd5b81019080803590602001909291905050506104dc565b005b34801561022057600080fd5b506102296104e8565b6040518082815260200191505060405180910390f35b6102816004803603602081101561025557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e2565b005b34801561028f57600080fd5b506102986104f2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b6000809054906101000a900460ff16610363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550600034905061038c828261051b565b6000610397826105a3565b90506103ae826003546105c190919063ffffffff16565b6003819055506103be8382610649565b8273ffffffffffffffffffffffffffffffffffffffff166103dd6102da565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361043c8383610657565b61044461065b565b61044e83836106c6565b505060016000806101000a81548160ff02191690831515021790555050565b60006005544211905090565b6000600254905090565b6000600354905090565b600060045442101580156104a357506005544211155b905090565b6000600554905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104e5816106ca565b50565b6000600454905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61052361048d565b610595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f54696d656443726f776473616c653a206e6f74206f70656e000000000000000081525060200191505060405180910390fd5b61059f82826107ea565b5050565b60006105ba600254836108eb90919063ffffffff16565b9050919050565b60008082840190508381101561063f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6106538282610971565b5050565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156106c3573d6000803e3d6000fd5b50565b5050565b6106d261046d565b15610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f54696d656443726f776473616c653a20616c726561647920636c6f736564000081525060200191505060405180910390fd5b600554811161079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180610d2a603f913960400191505060405180910390fd5b7f46711e222f558a07afd26e5e71b48ecb0a8b2cdcd40faeb1323e05e2c76a2f3260055482604051808381526020018281526020019250505060405180910390a18060058190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610d8a602a913960400191505060405180910390fd5b60008114156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b6000808314156108fe576000905061096b565b600082840290508284828161090f57fe5b0414610966576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610d696021913960400191505060405180910390fd5b809150505b92915050565b6109be8282600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c29092919063ffffffff16565b5050565b610a8e838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a93565b505050565b610ab28273ffffffffffffffffffffffffffffffffffffffff16610cde565b610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610b735780518252602082019150602081019050602083039250610b50565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b509150915081610c52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610cd857808060200190516020811015610c7157600080fd5b8101908080519060200190929190505050610cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610db4602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610d2057506000801b8214155b9250505091905056fe54696d656443726f776473616c653a206e657720636c6f73696e672074696d65206973206265666f72652063757272656e7420636c6f73696e672074696d65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820f8b81f7dedd4a01b115778fee04318a07337211621204a30ee88bb4d170423ea64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/TokenTimelock.json b/node_modules/@openzeppelin/contracts/build/contracts/TokenTimelock.json new file mode 100644 index 0000000..6de62f4 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/TokenTimelock.json @@ -0,0 +1,1443 @@ +{ + "fileName": "TokenTimelock.sol", + "contractName": "TokenTimelock", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./SafeERC20.sol\";\n\n/**\n * @dev A token holder contract that will allow a beneficiary to extract the\n * tokens after a given release time.\n *\n * Useful for simple vesting schedules like \"advisors get all of their tokens\n * after 1 year\".\n */\ncontract TokenTimelock {\n using SafeERC20 for IERC20;\n\n // ERC20 basic token contract being held\n IERC20 private _token;\n\n // beneficiary of tokens after they are released\n address private _beneficiary;\n\n // timestamp when token release is enabled\n uint256 private _releaseTime;\n\n constructor (IERC20 token, address beneficiary, uint256 releaseTime) public {\n // solhint-disable-next-line not-rely-on-time\n require(releaseTime > block.timestamp, \"TokenTimelock: release time is before current time\");\n _token = token;\n _beneficiary = beneficiary;\n _releaseTime = releaseTime;\n }\n\n /**\n * @return the token being held.\n */\n function token() public view returns (IERC20) {\n return _token;\n }\n\n /**\n * @return the beneficiary of the tokens.\n */\n function beneficiary() public view returns (address) {\n return _beneficiary;\n }\n\n /**\n * @return the time when the tokens are released.\n */\n function releaseTime() public view returns (uint256) {\n return _releaseTime;\n }\n\n /**\n * @notice Transfers tokens held by timelock to beneficiary.\n */\n function release() public virtual {\n // solhint-disable-next-line not-rely-on-time\n require(block.timestamp >= _releaseTime, \"TokenTimelock: current time is before release time\");\n\n uint256 amount = _token.balanceOf(address(this));\n require(amount > 0, \"TokenTimelock: no tokens to release\");\n\n _token.safeTransfer(_beneficiary, amount);\n }\n}\n", + "sourcePath": "contracts/token/ERC20/TokenTimelock.sol", + "sourceMap": "307:1564:91:-:0;;;612:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;774:15;760:11;:29;752:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;863:5;854:6;;:14;;;;;;;;;;;;;;;;;;893:11;878:12;;:26;;;;;;;;;;;;;;;;;;929:11;914:12;:26;;;;612:335;;;307:1564;;;;;;", + "deployedSourceMap": "307:1564:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1150:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1491:378;;;:::i;:::-;;1315:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1006:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1150:89;1194:7;1220:12;;;;;;;;;;;1213:19;;1150:89;:::o;1491:378::-;1616:12;;1597:15;:31;;1589:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:14;1711:6;;;;;;;;;;;:16;;;1736:4;1711:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:48;;1769:1;1760:6;:10;1752:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:41;1841:12;;;;;;;;;;;1855:6;1821;;;;;;;;;;;:19;;;;:41;;;;;:::i;:::-;1491:378;:::o;1315:89::-;1359:7;1385:12;;1378:19;;1315:89;:::o;1006:76::-;1044:6;1069;;;;;;;;;;;1062:13;;1006:76;:::o;696:175:90:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:19;:86::i;:::-;696:175;;;:::o;2959:751::-;3378:23;3404:69;3432:4;3404:69;;;;;;;;;;;;;;;;;3412:5;3404:27;;;;:69;;;;;:::i;:::-;3378:95;;3507:1;3487:10;:17;:21;3483:221;;;3627:10;3616:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3608:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:221;2959:751;;;:::o;3770:194:104:-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;5117:958::-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:958;;;;;;;:::o;718:610::-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint256", + "name": "releaseTime", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "beneficiary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "release", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "releaseTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/token/ERC20/TokenTimelock.sol", + "exportedSymbols": { + "TokenTimelock": [ + 10094 + ] + }, + "id": 10095, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9988, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:91" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": 9989, + "nodeType": "ImportDirective", + "scope": 10095, + "sourceUnit": 9987, + "src": "58:25:91", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 9990, + "nodeType": "StructuredDocumentation", + "src": "85:221:91", + "text": " @dev A token holder contract that will allow a beneficiary to extract the\n tokens after a given release time.\n Useful for simple vesting schedules like \"advisors get all of their tokens\n after 1 year\"." + }, + "fullyImplemented": true, + "id": 10094, + "linearizedBaseContracts": [ + 10094 + ], + "name": "TokenTimelock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 9993, + "libraryName": { + "contractScope": null, + "id": 9991, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9986, + "src": "342:9:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "336:27:91", + "typeName": { + "contractScope": null, + "id": 9992, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "356:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 9995, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10094, + "src": "414:21:91", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 9994, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "414:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9997, + "mutability": "mutable", + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10094, + "src": "495:28:91", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "495:7:91", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9999, + "mutability": "mutable", + "name": "_releaseTime", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10094, + "src": "577:28:91", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "577:7:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 10028, + "nodeType": "Block", + "src": "688:259:91", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10009, + "name": "releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10005, + "src": "760:11:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 10010, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "774:5:91", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 10011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "774:15:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "760:29:91", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206265666f72652063757272656e742074696d65", + "id": 10013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "791:52:91", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1658b776de3735ba90dc86438c12854f3617d6d488d64009fdab5928e27c313", + "typeString": "literal_string \"TokenTimelock: release time is before current time\"" + }, + "value": "TokenTimelock: release time is before current time" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1658b776de3735ba90dc86438c12854f3617d6d488d64009fdab5928e27c313", + "typeString": "literal_string \"TokenTimelock: release time is before current time\"" + } + ], + "id": 10008, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "752:7:91", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:92:91", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10015, + "nodeType": "ExpressionStatement", + "src": "752:92:91" + }, + { + "expression": { + "argumentTypes": null, + "id": 10018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10016, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9995, + "src": "854:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10017, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10001, + "src": "863:5:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "src": "854:14:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 10019, + "nodeType": "ExpressionStatement", + "src": "854:14:91" + }, + { + "expression": { + "argumentTypes": null, + "id": 10022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10020, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9997, + "src": "878:12:91", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10021, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10003, + "src": "893:11:91", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "878:26:91", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10023, + "nodeType": "ExpressionStatement", + "src": "878:26:91" + }, + { + "expression": { + "argumentTypes": null, + "id": 10026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 10024, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9999, + "src": "914:12:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 10025, + "name": "releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10005, + "src": "929:11:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "914:26:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10027, + "nodeType": "ExpressionStatement", + "src": "914:26:91" + } + ] + }, + "documentation": null, + "id": 10029, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10001, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10029, + "src": "625:12:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 10000, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "625:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10003, + "mutability": "mutable", + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10029, + "src": "639:19:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "639:7:91", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10005, + "mutability": "mutable", + "name": "releaseTime", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10029, + "src": "660:19:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "660:7:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "624:56:91" + }, + "returnParameters": { + "id": 10007, + "nodeType": "ParameterList", + "parameters": [], + "src": "688:0:91" + }, + "scope": 10094, + "src": "612:335:91", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10037, + "nodeType": "Block", + "src": "1052:30:91", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10035, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9995, + "src": "1069:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 10034, + "id": 10036, + "nodeType": "Return", + "src": "1062:13:91" + } + ] + }, + "documentation": { + "id": 10030, + "nodeType": "StructuredDocumentation", + "src": "953:48:91", + "text": " @return the token being held." + }, + "functionSelector": "fc0c546a", + "id": 10038, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10031, + "nodeType": "ParameterList", + "parameters": [], + "src": "1020:2:91" + }, + "returnParameters": { + "id": 10034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10033, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10038, + "src": "1044:6:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 10032, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1044:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1043:8:91" + }, + "scope": 10094, + "src": "1006:76:91", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10046, + "nodeType": "Block", + "src": "1203:36:91", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10044, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9997, + "src": "1220:12:91", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10043, + "id": 10045, + "nodeType": "Return", + "src": "1213:19:91" + } + ] + }, + "documentation": { + "id": 10039, + "nodeType": "StructuredDocumentation", + "src": "1088:57:91", + "text": " @return the beneficiary of the tokens." + }, + "functionSelector": "38af3eed", + "id": 10047, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10040, + "nodeType": "ParameterList", + "parameters": [], + "src": "1170:2:91" + }, + "returnParameters": { + "id": 10043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10042, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10047, + "src": "1194:7:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10041, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1194:7:91", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1193:9:91" + }, + "scope": 10094, + "src": "1150:89:91", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10055, + "nodeType": "Block", + "src": "1368:36:91", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 10053, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9999, + "src": "1385:12:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10052, + "id": 10054, + "nodeType": "Return", + "src": "1378:19:91" + } + ] + }, + "documentation": { + "id": 10048, + "nodeType": "StructuredDocumentation", + "src": "1245:65:91", + "text": " @return the time when the tokens are released." + }, + "functionSelector": "b91d4001", + "id": 10056, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "releaseTime", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10049, + "nodeType": "ParameterList", + "parameters": [], + "src": "1335:2:91" + }, + "returnParameters": { + "id": 10052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10051, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10056, + "src": "1359:7:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1359:7:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1358:9:91" + }, + "scope": 10094, + "src": "1315:89:91", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10092, + "nodeType": "Block", + "src": "1525:344:91", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 10061, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1597:5:91", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 10062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1597:15:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 10063, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9999, + "src": "1616:12:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1597:31:91", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206265666f72652072656c656173652074696d65", + "id": 10065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1630:52:91", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0345c6084b4d4be2f1249aa1f58ddc5a11b524aacb744b63dfad68c56d61fad0", + "typeString": "literal_string \"TokenTimelock: current time is before release time\"" + }, + "value": "TokenTimelock: current time is before release time" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0345c6084b4d4be2f1249aa1f58ddc5a11b524aacb744b63dfad68c56d61fad0", + "typeString": "literal_string \"TokenTimelock: current time is before release time\"" + } + ], + "id": 10060, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1589:7:91", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1589:94:91", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10067, + "nodeType": "ExpressionStatement", + "src": "1589:94:91" + }, + { + "assignments": [ + 10069 + ], + "declarations": [ + { + "constant": false, + "id": 10069, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 10092, + "src": "1694:14:91", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10068, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1694:7:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 10077, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10074, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1736:4:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenTimelock_$10094", + "typeString": "contract TokenTimelock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenTimelock_$10094", + "typeString": "contract TokenTimelock" + } + ], + "id": 10073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1728:7:91", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1728:7:91", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 10075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1728:13:91", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 10070, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9995, + "src": "1711:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 10071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 9712, + "src": "1711:16:91", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 10076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1711:31:91", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1694:48:91" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 10079, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10069, + "src": "1760:6:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 10080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1769:1:91", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1760:10:91", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c65617365", + "id": 10082, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1772:37:91", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fd167cd15f7f49233a4aac5b2fadd1b9f782ba42f4eadaf31348954b9436eae8", + "typeString": "literal_string \"TokenTimelock: no tokens to release\"" + }, + "value": "TokenTimelock: no tokens to release" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fd167cd15f7f49233a4aac5b2fadd1b9f782ba42f4eadaf31348954b9436eae8", + "typeString": "literal_string \"TokenTimelock: no tokens to release\"" + } + ], + "id": 10078, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1752:7:91", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 10083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1752:58:91", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10084, + "nodeType": "ExpressionStatement", + "src": "1752:58:91" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 10088, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9997, + "src": "1841:12:91", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 10089, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10069, + "src": "1855:6:91", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 10085, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9995, + "src": "1821:6:91", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "id": 10087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9807, + "src": "1821:19:91", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$9773_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 10090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1821:41:91", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10091, + "nodeType": "ExpressionStatement", + "src": "1821:41:91" + } + ] + }, + "documentation": { + "id": 10057, + "nodeType": "StructuredDocumentation", + "src": "1410:76:91", + "text": " @notice Transfers tokens held by timelock to beneficiary." + }, + "functionSelector": "86d1a69f", + "id": 10093, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 10058, + "nodeType": "ParameterList", + "parameters": [], + "src": "1507:2:91" + }, + "returnParameters": { + "id": 10059, + "nodeType": "ParameterList", + "parameters": [], + "src": "1525:0:91" + }, + "scope": 10094, + "src": "1491:378:91", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 10095, + "src": "307:1564:91" + } + ], + "src": "33:1839:91" + }, + "bytecode": "0x608060405234801561001057600080fd5b506040516109ad3803806109ad8339818101604052606081101561003357600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050504281116100b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061097b6032913960400191505060405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002819055505050506108318061014a6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f1461009b578063b91d4001146100a5578063fc0c546a146100c3575b600080fd5b61005961010d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a3610137565b005b6100ad610339565b6040518082815260200191505060405180910390f35b6100cb610343565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600254421015610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061077d6032913960400191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561023257600080fd5b505afa158015610246573d6000803e3d6000fd5b505050506040513d602081101561025c57600080fd5b81019080805190602001909291905050509050600081116102c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806107d96023913960400191505060405180910390fd5b610336600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661036c9092919063ffffffff16565b50565b6000600254905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61041f8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610424565b505050565b6060610486826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105139092919063ffffffff16565b905060008151111561050e578080602001905160208110156104a757600080fd5b810190808051906020019092919050505061050d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806107af602a913960400191505060405180910390fd5b5b505050565b6060610522848460008561052b565b90509392505050565b606061053685610731565b6105a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106105f857805182526020820191506020810190506020830392506105d5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461065a576040519150601f19603f3d011682016040523d82523d6000602084013e61065f565b606091505b50915091508115610674578092505050610729565b6000815111156106875780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106ee5780820151818401526020810190506106d3565b50505050905090810190601f16801561071b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561077357506000801b8214155b9250505091905056fe546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206265666f72652072656c656173652074696d655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c65617365a264697066735822122070ed7a3e17894ef3f51bf1ae019d650ca40947d6e3c917ad84114fa56424124f64736f6c634300060a0033546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206265666f72652063757272656e742074696d65", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f1461009b578063b91d4001146100a5578063fc0c546a146100c3575b600080fd5b61005961010d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a3610137565b005b6100ad610339565b6040518082815260200191505060405180910390f35b6100cb610343565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600254421015610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061077d6032913960400191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561023257600080fd5b505afa158015610246573d6000803e3d6000fd5b505050506040513d602081101561025c57600080fd5b81019080805190602001909291905050509050600081116102c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806107d96023913960400191505060405180910390fd5b610336600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661036c9092919063ffffffff16565b50565b6000600254905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61041f8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610424565b505050565b6060610486826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105139092919063ffffffff16565b905060008151111561050e578080602001905160208110156104a757600080fd5b810190808051906020019092919050505061050d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806107af602a913960400191505060405180910390fd5b5b505050565b6060610522848460008561052b565b90509392505050565b606061053685610731565b6105a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106105f857805182526020820191506020810190506020830392506105d5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461065a576040519150601f19603f3d011682016040523d82523d6000602084013e61065f565b606091505b50915091508115610674578092505050610729565b6000815111156106875780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106ee5780820151818401526020810190506106d3565b50505050905090810190601f16801561071b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561077357506000801b8214155b9250505091905056fe546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206265666f72652072656c656173652074696d655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c65617365a264697066735822122070ed7a3e17894ef3f51bf1ae019d650ca40947d6e3c917ad84114fa56424124f64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/TokenVesting.json b/node_modules/@openzeppelin/contracts/build/contracts/TokenVesting.json new file mode 100644 index 0000000..ac1aaa4 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/TokenVesting.json @@ -0,0 +1,5567 @@ +{ + "fileName": "TokenVesting.sol", + "contractName": "TokenVesting", + "source": "pragma solidity ^0.6.0;\n\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../access/Ownable.sol\";\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title TokenVesting\n * @dev A token holder contract that can release its token balance gradually like a\n * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the\n * owner.\n */\ncontract TokenVesting is Ownable {\n // The vesting schedule is time-based (i.e. using block timestamps as opposed to e.g. block numbers), and is\n // therefore sensitive to timestamp manipulation (which is something miners can do, to a certain degree). Therefore,\n // it is recommended to avoid using short time durations (less than a minute). Typical vesting schemes, with a\n // cliff period of a year and a duration of four years, are safe to use.\n // solhint-disable not-rely-on-time\n\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n event TokensReleased(address token, uint256 amount);\n event TokenVestingRevoked(address token);\n\n // beneficiary of tokens after they are released\n address private _beneficiary;\n\n // Durations and timestamps are expressed in UNIX time, the same units as block.timestamp.\n uint256 private _cliff;\n uint256 private _start;\n uint256 private _duration;\n\n bool private _revocable;\n\n mapping (address => uint256) private _released;\n mapping (address => bool) private _revoked;\n\n /**\n * @dev Creates a vesting contract that vests its balance of any ERC20 token to the\n * beneficiary, gradually in a linear fashion until start + duration. By then all\n * of the balance will have vested.\n * @param beneficiary address of the beneficiary to whom vested tokens are transferred\n * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest\n * @param start the time (as Unix time) at which point vesting starts\n * @param duration duration in seconds of the period in which the tokens will vest\n * @param revocable whether the vesting is revocable or not\n */\n constructor (address beneficiary, uint256 start, uint256 cliffDuration, uint256 duration, bool revocable) public {\n require(beneficiary != address(0), \"TokenVesting: beneficiary is the zero address\");\n // solhint-disable-next-line max-line-length\n require(cliffDuration <= duration, \"TokenVesting: cliff is longer than duration\");\n require(duration > 0, \"TokenVesting: duration is 0\");\n // solhint-disable-next-line max-line-length\n require(start.add(duration) > block.timestamp, \"TokenVesting: final time is before current time\");\n\n _beneficiary = beneficiary;\n _revocable = revocable;\n _duration = duration;\n _cliff = start.add(cliffDuration);\n _start = start;\n }\n\n /**\n * @return the beneficiary of the tokens.\n */\n function beneficiary() public view returns (address) {\n return _beneficiary;\n }\n\n /**\n * @return the cliff time of the token vesting.\n */\n function cliff() public view returns (uint256) {\n return _cliff;\n }\n\n /**\n * @return the start time of the token vesting.\n */\n function start() public view returns (uint256) {\n return _start;\n }\n\n /**\n * @return the duration of the token vesting.\n */\n function duration() public view returns (uint256) {\n return _duration;\n }\n\n /**\n * @return true if the vesting is revocable.\n */\n function revocable() public view returns (bool) {\n return _revocable;\n }\n\n /**\n * @return the amount of the token released.\n */\n function released(address token) public view returns (uint256) {\n return _released[token];\n }\n\n /**\n * @return true if the token is revoked.\n */\n function revoked(address token) public view returns (bool) {\n return _revoked[token];\n }\n\n /**\n * @notice Transfers vested tokens to beneficiary.\n * @param token ERC20 token which is being vested\n */\n function release(IERC20 token) public {\n uint256 unreleased = _releasableAmount(token);\n\n require(unreleased > 0, \"TokenVesting: no tokens are due\");\n\n _released[address(token)] = _released[address(token)].add(unreleased);\n\n token.safeTransfer(_beneficiary, unreleased);\n\n emit TokensReleased(address(token), unreleased);\n }\n\n /**\n * @notice Allows the owner to revoke the vesting. Tokens already vested\n * remain in the contract, the rest are returned to the owner.\n * @param token ERC20 token which is being vested\n */\n function revoke(IERC20 token) public onlyOwner {\n require(_revocable, \"TokenVesting: cannot revoke\");\n require(!_revoked[address(token)], \"TokenVesting: token already revoked\");\n\n uint256 balance = token.balanceOf(address(this));\n\n uint256 unreleased = _releasableAmount(token);\n uint256 refund = balance.sub(unreleased);\n\n _revoked[address(token)] = true;\n\n token.safeTransfer(owner(), refund);\n\n emit TokenVestingRevoked(address(token));\n }\n\n /**\n * @dev Calculates the amount that has already vested but hasn't been released yet.\n * @param token ERC20 token which is being vested\n */\n function _releasableAmount(IERC20 token) private view returns (uint256) {\n return _vestedAmount(token).sub(_released[address(token)]);\n }\n\n /**\n * @dev Calculates the amount that has already vested.\n * @param token ERC20 token which is being vested\n */\n function _vestedAmount(IERC20 token) private view returns (uint256) {\n uint256 currentBalance = token.balanceOf(address(this));\n uint256 totalBalance = currentBalance.add(_released[address(token)]);\n\n if (block.timestamp < _cliff) {\n return 0;\n } else if (block.timestamp >= _start.add(_duration) || _revoked[address(token)]) {\n return totalBalance;\n } else {\n return totalBalance.mul(block.timestamp.sub(_start)).div(_duration);\n }\n }\n}\n", + "sourcePath": "contracts/drafts/TokenVesting.sol", + "sourceMap": "341:5745:10:-:0;;;2060:745;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;2214:1:10;2191:25;;:11;:25;;;;2183:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2354:8;2337:13;:25;;2329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2439:1;2428:8;:12;2420:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:15;2543:19;2553:8;2543:5;:9;;;;;;:19;;;;:::i;:::-;:37;2535:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:11;2643:12;;:26;;;;;;;;;;;;;;;;;;2692:9;2679:10;;:22;;;;;;;;;;;;;;;;;;2723:8;2711:9;:20;;;;2750:24;2760:13;2750:5;:9;;;;;;:24;;;;:::i;:::-;2741:6;:33;;;;2793:5;2784:6;:14;;;;2060:745;;;;;341:5745;;768:104:0;821:15;855:10;848:17;;768:104;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;341:5745:10:-;;;;;;;", + "deployedSourceMap": "341:5745:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3336:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3036:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4042:362;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2873:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1689:145:7;;;:::i;:::-;;4624:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3490:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1066:77:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3643:103:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3187:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3813:98:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3336:83;3377:7;3403:9;;3396:16;;3336:83;:::o;3036:77::-;3074:7;3100:6;;3093:13;;3036:77;:::o;4042:362::-;4090:18;4111:24;4129:5;4111:17;:24::i;:::-;4090:45;;4167:1;4154:10;:14;4146:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4243:41;4273:10;4243:9;:25;4261:5;4243:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;4215:9;:25;4233:5;4215:25;;;;;;;;;;;;;;;:69;;;;4295:44;4314:12;;;;;;;;;;;4328:10;4295:5;:18;;;;:44;;;;;:::i;:::-;4355:42;4378:5;4386:10;4355:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;4042:362;;:::o;2873:89::-;2917:7;2943:12;;;;;;;;;;;2936:19;;2873:89;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;4624:501:10:-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4689:10:10::1;;;;;;;;;;;4681:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;4750:8;:24;4767:5;4750:24;;;;;;;;;;;;;;;;;;;;;;;;;4749:25;4741:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4825:15;4843:5;:15;;;4867:4;4843:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;4825:48;;4884:18;4905:24;4923:5;4905:17;:24::i;:::-;4884:45;;4939:14;4956:23;4968:10;4956:7;:11;;:23;;;;:::i;:::-;4939:40;;5017:4;4990:8;:24;5007:5;4990:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;5032:35;5051:7;:5;:7::i;:::-;5060:6;5032:5;:18;;;;:35;;;;;:::i;:::-;5083;5111:5;5083:35;;;;;;;;;;;;;;;;;;;;;;1339:1:7;;;4624:501:10::0;:::o;3490:82::-;3532:4;3555:10;;;;;;;;;;;3548:17;;3490:82;:::o;1066:77:7:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;3643:103:10:-;3697:7;3723:9;:16;3733:5;3723:16;;;;;;;;;;;;;;;;3716:23;;3643:103;;;:::o;3187:77::-;3225:7;3251:6;;3244:13;;3187:77;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;3813:98:10:-;3866:4;3889:8;:15;3898:5;3889:15;;;;;;;;;;;;;;;;;;;;;;;;;3882:22;;3813:98;;;:::o;867:176:18:-;925:7;944:9;960:1;956;:5;944:17;;984:1;979;:6;;971:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:1;1028:8;;;867:176;;;;:::o;5289:147:10:-;5352:7;5378:51;5403:9;:25;5421:5;5403:25;;;;;;;;;;;;;;;;5378:20;5392:5;5378:13;:20::i;:::-;:24;;:51;;;;:::i;:::-;5371:58;;5289:147;;;:::o;695:175:77:-;777:86;797:5;827:23;;;852:2;856:5;804:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;777:19;:86::i;:::-;695:175;;;:::o;768:104:0:-;821:15;855:10;848:17;;768:104;:::o;1307:134:18:-;1365:7;1391:43;1395:1;1398;1391:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1384:50;;1307:134;;;;:::o;5571:513:10:-;5630:7;5649:22;5674:5;:15;;;5698:4;5674:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:55;;5714:20;5737:45;5756:9;:25;5774:5;5756:25;;;;;;;;;;;;;;;;5737:14;:18;;:45;;;;:::i;:::-;5714:68;;5815:6;;5797:15;:24;5793:285;;;5844:1;5837:8;;;;;;5793:285;5885:21;5896:9;;5885:6;;:10;;:21;;;;:::i;:::-;5866:15;:40;;:68;;;;5910:8;:24;5927:5;5910:24;;;;;;;;;;;;;;;;;;;;;;;;;5866:68;5862:216;;;5957:12;5950:19;;;;;;5862:216;6007:60;6057:9;;6007:45;6024:27;6044:6;;6024:15;:19;;:27;;;;:::i;:::-;6007:12;:16;;:45;;;;:::i;:::-;:49;;:60;;;;:::i;:::-;6000:67;;;;5571:513;;;;:::o;2704:1096:77:-;3300:27;3308:5;3300:25;;;:27::i;:::-;3292:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:12;3448:23;3483:5;3475:19;;3495:4;3475:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3433:67;;;;3518:7;3510:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3597:1;3577:10;:17;:21;3573:221;;;3717:10;3706:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3698:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3573:221;2704:1096;;;;:::o;1725:187:18:-;1811:7;1843:1;1838;:6;;1846:12;1830:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:9;1885:1;1881;:5;1869:17;;1904:1;1897:8;;;1725:187;;;;;:::o;2152:459::-;2210:7;2456:1;2451;:6;2447:45;;;2480:1;2473:8;;;;2447:45;2502:9;2518:1;2514;:5;2502:17;;2546:1;2541;2537;:5;;;;;;:10;2529:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:1;2596:8;;;2152:459;;;;;:::o;3066:130::-;3124:7;3150:39;3154:1;3157;3150:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3143:46;;3066:130;;;;:::o;718:610:91:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;3671:338:18:-;3757:7;3854:1;3850;:5;3857:12;3842:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:9;3896:1;3892;:5;;;;;;3880:17;;4001:1;3994:8;;;3671:338;;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "cliffDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "revocable", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenVestingRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensReleased", + "type": "event" + }, + { + "inputs": [], + "name": "beneficiary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cliff", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "duration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "release", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "released", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revocable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "revoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "revoked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "start", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/drafts/TokenVesting.sol", + "exportedSymbols": { + "TokenVesting": [ + 2133 + ] + }, + "id": 2134, + "license": null, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1733, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 1734, + "nodeType": "ImportDirective", + "scope": 2134, + "sourceUnit": 8198, + "src": "25:38:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Ownable.sol", + "file": "../access/Ownable.sol", + "id": 1735, + "nodeType": "ImportDirective", + "scope": 2134, + "sourceUnit": 1563, + "src": "64:31:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 1736, + "nodeType": "ImportDirective", + "scope": 2134, + "sourceUnit": 2810, + "src": "96:30:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1738, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1562, + "src": "366:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$1562", + "typeString": "contract Ownable" + } + }, + "id": 1739, + "nodeType": "InheritanceSpecifier", + "src": "366:7:10" + } + ], + "contractDependencies": [ + 26, + 1562 + ], + "contractKind": "contract", + "documentation": { + "id": 1737, + "nodeType": "StructuredDocumentation", + "src": "128:212:10", + "text": " @title TokenVesting\n @dev A token holder contract that can release its token balance gradually like a\n typical vesting scheme, with a cliff and vesting period. Optionally revocable by the\n owner." + }, + "fullyImplemented": true, + "id": 2133, + "linearizedBaseContracts": [ + 2133, + 1562, + 26 + ], + "name": "TokenVesting", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1742, + "libraryName": { + "contractScope": null, + "id": 1740, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2809, + "src": "853:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2809", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "847:27:10", + "typeName": { + "id": 1741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 1745, + "libraryName": { + "contractScope": null, + "id": 1743, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8197, + "src": "885:9:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$8197", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "879:27:10", + "typeName": { + "contractScope": null, + "id": 1744, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "899:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1751, + "name": "TokensReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 1750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1747, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1751, + "src": "933:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "933:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1749, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1751, + "src": "948:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1748, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "948:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "932:31:10" + }, + "src": "912:52:10" + }, + { + "anonymous": false, + "documentation": null, + "id": 1755, + "name": "TokenVestingRevoked", + "nodeType": "EventDefinition", + "parameters": { + "id": 1754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1753, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1755, + "src": "995:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "995:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "994:15:10" + }, + "src": "969:41:10" + }, + { + "constant": false, + "id": 1757, + "mutability": "mutable", + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1069:28:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1069:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1759, + "mutability": "mutable", + "name": "_cliff", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1199:22:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1199:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1761, + "mutability": "mutable", + "name": "_start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1227:22:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1227:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1763, + "mutability": "mutable", + "name": "_duration", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1255:25:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1255:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1765, + "mutability": "mutable", + "name": "_revocable", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1287:23:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1764, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1287:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1769, + "mutability": "mutable", + "name": "_released", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1317:46:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1768, + "keyType": { + "id": 1766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1326:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1317:28:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1767, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1337:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1773, + "mutability": "mutable", + "name": "_revoked", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2133, + "src": "1369:42:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1772, + "keyType": { + "id": 1770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1378:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1369:25:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1771, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1389:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1845, + "nodeType": "Block", + "src": "2173:632:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1788, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1776, + "src": "2191:11:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2214:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2206:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1789, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2206:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2206:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2191:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a2062656e656669636961727920697320746865207a65726f2061646472657373", + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2218:47:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2418688d011b8e0830741b4ef5b95d25f3075f5a8407237c54796d2479ff21e5", + "typeString": "literal_string \"TokenVesting: beneficiary is the zero address\"" + }, + "value": "TokenVesting: beneficiary is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2418688d011b8e0830741b4ef5b95d25f3075f5a8407237c54796d2479ff21e5", + "typeString": "literal_string \"TokenVesting: beneficiary is the zero address\"" + } + ], + "id": 1787, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2183:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2183:83:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1796, + "nodeType": "ExpressionStatement", + "src": "2183:83:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1798, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "2337:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1799, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "2354:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2337:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a20636c696666206973206c6f6e676572207468616e206475726174696f6e", + "id": 1801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2364:45:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55ace87003babd1f6117ec273f0418f272f297af3b174d10868ec42a4d37881d", + "typeString": "literal_string \"TokenVesting: cliff is longer than duration\"" + }, + "value": "TokenVesting: cliff is longer than duration" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_55ace87003babd1f6117ec273f0418f272f297af3b174d10868ec42a4d37881d", + "typeString": "literal_string \"TokenVesting: cliff is longer than duration\"" + } + ], + "id": 1797, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2329:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2329:81:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1803, + "nodeType": "ExpressionStatement", + "src": "2329:81:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1805, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "2428:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2439:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2428:12:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a206475726174696f6e2069732030", + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2442:29:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ea8f4eba8d61dfa0c2d37754e81430b04951f3473be1385cfd13658172452766", + "typeString": "literal_string \"TokenVesting: duration is 0\"" + }, + "value": "TokenVesting: duration is 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ea8f4eba8d61dfa0c2d37754e81430b04951f3473be1385cfd13658172452766", + "typeString": "literal_string \"TokenVesting: duration is 0\"" + } + ], + "id": 1804, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2420:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2420:52:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1810, + "nodeType": "ExpressionStatement", + "src": "2420:52:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1814, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "2553:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1812, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "2543:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2642, + "src": "2543:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2543:19:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1816, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2565:5:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2565:15:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2543:37:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a2066696e616c2074696d65206973206265666f72652063757272656e742074696d65", + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2582:49:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_201180e9ff8e768a63b561d29176411904f8fcde7632c57246c9453c111de99f", + "typeString": "literal_string \"TokenVesting: final time is before current time\"" + }, + "value": "TokenVesting: final time is before current time" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_201180e9ff8e768a63b561d29176411904f8fcde7632c57246c9453c111de99f", + "typeString": "literal_string \"TokenVesting: final time is before current time\"" + } + ], + "id": 1811, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2535:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2535:97:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1821, + "nodeType": "ExpressionStatement", + "src": "2535:97:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1822, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1757, + "src": "2643:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1823, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1776, + "src": "2658:11:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2643:26:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1825, + "nodeType": "ExpressionStatement", + "src": "2643:26:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1826, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1765, + "src": "2679:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1827, + "name": "revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1784, + "src": "2692:9:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2679:22:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1829, + "nodeType": "ExpressionStatement", + "src": "2679:22:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1830, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "2711:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1831, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "2723:8:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2711:20:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1833, + "nodeType": "ExpressionStatement", + "src": "2711:20:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1834, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "2741:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1837, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "2760:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1835, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "2750:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2642, + "src": "2750:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2750:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2741:33:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1840, + "nodeType": "ExpressionStatement", + "src": "2741:33:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1841, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "2784:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1842, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "2793:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2784:14:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1844, + "nodeType": "ExpressionStatement", + "src": "2784:14:10" + } + ] + }, + "documentation": { + "id": 1774, + "nodeType": "StructuredDocumentation", + "src": "1418:637:10", + "text": " @dev Creates a vesting contract that vests its balance of any ERC20 token to the\n beneficiary, gradually in a linear fashion until start + duration. By then all\n of the balance will have vested.\n @param beneficiary address of the beneficiary to whom vested tokens are transferred\n @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest\n @param start the time (as Unix time) at which point vesting starts\n @param duration duration in seconds of the period in which the tokens will vest\n @param revocable whether the vesting is revocable or not" + }, + "id": 1846, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1776, + "mutability": "mutable", + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1846, + "src": "2073:19:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1775, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2073:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1778, + "mutability": "mutable", + "name": "start", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1846, + "src": "2094:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2094:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1780, + "mutability": "mutable", + "name": "cliffDuration", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1846, + "src": "2109:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1779, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2109:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1782, + "mutability": "mutable", + "name": "duration", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1846, + "src": "2132:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1781, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2132:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1784, + "mutability": "mutable", + "name": "revocable", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1846, + "src": "2150:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1783, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2150:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2072:93:10" + }, + "returnParameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [], + "src": "2173:0:10" + }, + "scope": 2133, + "src": "2060:745:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1854, + "nodeType": "Block", + "src": "2926:36:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1852, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1757, + "src": "2943:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1851, + "id": 1853, + "nodeType": "Return", + "src": "2936:19:10" + } + ] + }, + "documentation": { + "id": 1847, + "nodeType": "StructuredDocumentation", + "src": "2811:57:10", + "text": " @return the beneficiary of the tokens." + }, + "functionSelector": "38af3eed", + "id": 1855, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1848, + "nodeType": "ParameterList", + "parameters": [], + "src": "2893:2:10" + }, + "returnParameters": { + "id": 1851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1850, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1855, + "src": "2917:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2917:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2916:9:10" + }, + "scope": 2133, + "src": "2873:89:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1863, + "nodeType": "Block", + "src": "3083:30:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1861, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "3100:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1860, + "id": 1862, + "nodeType": "Return", + "src": "3093:13:10" + } + ] + }, + "documentation": { + "id": 1856, + "nodeType": "StructuredDocumentation", + "src": "2968:63:10", + "text": " @return the cliff time of the token vesting." + }, + "functionSelector": "13d033c0", + "id": 1864, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cliff", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1857, + "nodeType": "ParameterList", + "parameters": [], + "src": "3050:2:10" + }, + "returnParameters": { + "id": 1860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1859, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1864, + "src": "3074:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1858, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3074:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3073:9:10" + }, + "scope": 2133, + "src": "3036:77:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1872, + "nodeType": "Block", + "src": "3234:30:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1870, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "3251:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1869, + "id": 1871, + "nodeType": "Return", + "src": "3244:13:10" + } + ] + }, + "documentation": { + "id": 1865, + "nodeType": "StructuredDocumentation", + "src": "3119:63:10", + "text": " @return the start time of the token vesting." + }, + "functionSelector": "be9a6555", + "id": 1873, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "start", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1866, + "nodeType": "ParameterList", + "parameters": [], + "src": "3201:2:10" + }, + "returnParameters": { + "id": 1869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1868, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1873, + "src": "3225:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3225:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3224:9:10" + }, + "scope": 2133, + "src": "3187:77:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1881, + "nodeType": "Block", + "src": "3386:33:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1879, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "3403:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1878, + "id": 1880, + "nodeType": "Return", + "src": "3396:16:10" + } + ] + }, + "documentation": { + "id": 1874, + "nodeType": "StructuredDocumentation", + "src": "3270:61:10", + "text": " @return the duration of the token vesting." + }, + "functionSelector": "0fb5a6b4", + "id": 1882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "duration", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1875, + "nodeType": "ParameterList", + "parameters": [], + "src": "3353:2:10" + }, + "returnParameters": { + "id": 1878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1877, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1882, + "src": "3377:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3377:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3376:9:10" + }, + "scope": 2133, + "src": "3336:83:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1890, + "nodeType": "Block", + "src": "3538:34:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1765, + "src": "3555:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1887, + "id": 1889, + "nodeType": "Return", + "src": "3548:17:10" + } + ] + }, + "documentation": { + "id": 1883, + "nodeType": "StructuredDocumentation", + "src": "3425:60:10", + "text": " @return true if the vesting is revocable." + }, + "functionSelector": "872a7810", + "id": 1891, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revocable", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [], + "src": "3508:2:10" + }, + "returnParameters": { + "id": 1887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1886, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1891, + "src": "3532:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1885, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3532:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3531:6:10" + }, + "scope": 2133, + "src": "3490:82:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1903, + "nodeType": "Block", + "src": "3706:40:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1899, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "3723:9:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1901, + "indexExpression": { + "argumentTypes": null, + "id": 1900, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1894, + "src": "3733:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3723:16:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1898, + "id": 1902, + "nodeType": "Return", + "src": "3716:23:10" + } + ] + }, + "documentation": { + "id": 1892, + "nodeType": "StructuredDocumentation", + "src": "3578:60:10", + "text": " @return the amount of the token released." + }, + "functionSelector": "9852595c", + "id": 1904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "released", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1894, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1904, + "src": "3661:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3661:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3660:15:10" + }, + "returnParameters": { + "id": 1898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1897, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1904, + "src": "3697:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3697:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3696:9:10" + }, + "scope": 2133, + "src": "3643:103:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1916, + "nodeType": "Block", + "src": "3872:39:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1912, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "3889:8:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1914, + "indexExpression": { + "argumentTypes": null, + "id": 1913, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1907, + "src": "3898:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3889:15:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1911, + "id": 1915, + "nodeType": "Return", + "src": "3882:22:10" + } + ] + }, + "documentation": { + "id": 1905, + "nodeType": "StructuredDocumentation", + "src": "3752:56:10", + "text": " @return true if the token is revoked." + }, + "functionSelector": "fa01dc06", + "id": 1917, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revoked", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1907, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1917, + "src": "3830:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3830:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3829:15:10" + }, + "returnParameters": { + "id": 1911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1910, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1917, + "src": "3866:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1909, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3866:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3865:6:10" + }, + "scope": 2133, + "src": "3813:98:10", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1968, + "nodeType": "Block", + "src": "4080:324:10", + "statements": [ + { + "assignments": [ + 1924 + ], + "declarations": [ + { + "constant": false, + "id": 1924, + "mutability": "mutable", + "name": "unreleased", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1968, + "src": "4090:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1923, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4090:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1928, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1926, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1920, + "src": "4129:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 1925, + "name": "_releasableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "4111:17:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$7969_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4111:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4090:45:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1930, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "4154:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4167:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4154:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a206e6f20746f6b656e732061726520647565", + "id": 1933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4170:33:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_380a978e46a25515dfcd8388d1b69c8885ed6771a723c79ba72fb2def5693f81", + "typeString": "literal_string \"TokenVesting: no tokens are due\"" + }, + "value": "TokenVesting: no tokens are due" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_380a978e46a25515dfcd8388d1b69c8885ed6771a723c79ba72fb2def5693f81", + "typeString": "literal_string \"TokenVesting: no tokens are due\"" + } + ], + "id": 1929, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4146:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4146:58:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1935, + "nodeType": "ExpressionStatement", + "src": "4146:58:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1936, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "4215:9:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1941, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1939, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1920, + "src": "4233:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4225:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4225:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4225:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4215:25:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1949, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "4273:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1942, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "4243:9:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1947, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1945, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1920, + "src": "4261:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 1944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4253:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1943, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4253:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4253:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4243:25:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2642, + "src": "4243:29:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4243:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4215:69:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1952, + "nodeType": "ExpressionStatement", + "src": "4215:69:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1956, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1757, + "src": "4314:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1957, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "4328:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1953, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1920, + "src": "4295:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 1955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8003, + "src": "4295:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4295:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1959, + "nodeType": "ExpressionStatement", + "src": "4295:44:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1963, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1920, + "src": "4378:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 1962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4370:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4370:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4370:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1965, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "4386:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1960, + "name": "TokensReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1751, + "src": "4355:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4355:42:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1967, + "nodeType": "EmitStatement", + "src": "4350:47:10" + } + ] + }, + "documentation": { + "id": 1918, + "nodeType": "StructuredDocumentation", + "src": "3917:120:10", + "text": " @notice Transfers vested tokens to beneficiary.\n @param token ERC20 token which is being vested" + }, + "functionSelector": "19165587", + "id": 1969, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1920, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1969, + "src": "4059:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1919, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "4059:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4058:14:10" + }, + "returnParameters": { + "id": 1922, + "nodeType": "ParameterList", + "parameters": [], + "src": "4080:0:10" + }, + "scope": 2133, + "src": "4042:362:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2040, + "nodeType": "Block", + "src": "4671:454:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1978, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1765, + "src": "4689:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a2063616e6e6f74207265766f6b65", + "id": 1979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4701:29:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_15119a6f1e3cf1c964e0eb9ebc61658e2e198793f636a8f2639a07f4261ef0d6", + "typeString": "literal_string \"TokenVesting: cannot revoke\"" + }, + "value": "TokenVesting: cannot revoke" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_15119a6f1e3cf1c964e0eb9ebc61658e2e198793f636a8f2639a07f4261ef0d6", + "typeString": "literal_string \"TokenVesting: cannot revoke\"" + } + ], + "id": 1977, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4681:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4681:50:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1981, + "nodeType": "ExpressionStatement", + "src": "4681:50:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4749:25:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1983, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "4750:8:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1988, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1986, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "4767:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4759:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4759:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4750:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e56657374696e673a20746f6b656e20616c7265616479207265766f6b6564", + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4776:37:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fa45135a638a0c1c9d4fc275ce2da4f63e13a28e343a01a7f6788e54e1fc80f5", + "typeString": "literal_string \"TokenVesting: token already revoked\"" + }, + "value": "TokenVesting: token already revoked" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fa45135a638a0c1c9d4fc275ce2da4f63e13a28e343a01a7f6788e54e1fc80f5", + "typeString": "literal_string \"TokenVesting: token already revoked\"" + } + ], + "id": 1982, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4741:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4741:73:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1992, + "nodeType": "ExpressionStatement", + "src": "4741:73:10" + }, + { + "assignments": [ + 1994 + ], + "declarations": [ + { + "constant": false, + "id": 1994, + "mutability": "mutable", + "name": "balance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2040, + "src": "4825:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4825:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2002, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1999, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4867:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$2133", + "typeString": "contract TokenVesting" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenVesting_$2133", + "typeString": "contract TokenVesting" + } + ], + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4859:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4859:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1995, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "4843:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 7908, + "src": "4843:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4843:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4825:48:10" + }, + { + "assignments": [ + 2004 + ], + "declarations": [ + { + "constant": false, + "id": 2004, + "mutability": "mutable", + "name": "unreleased", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2040, + "src": "4884:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4884:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2008, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2006, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "4923:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2005, + "name": "_releasableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "4905:17:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$7969_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4905:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4884:45:10" + }, + { + "assignments": [ + 2010 + ], + "declarations": [ + { + "constant": false, + "id": 2010, + "mutability": "mutable", + "name": "refund", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2040, + "src": "4939:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2009, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4939:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2015, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2013, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2004, + "src": "4968:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2011, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1994, + "src": "4956:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2659, + "src": "4956:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4956:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4939:40:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2016, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "4990:8:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2021, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2019, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "5007:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4999:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4999:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4999:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4990:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5017:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4990:31:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2024, + "nodeType": "ExpressionStatement", + "src": "4990:31:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2028, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1498, + "src": "5051:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5051:7:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2030, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2010, + "src": "5060:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2025, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "5032:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 8003, + "src": "5032:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$7969_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$7969_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5032:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2032, + "nodeType": "ExpressionStatement", + "src": "5032:35:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2036, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "5111:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5103:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5103:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5103:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2033, + "name": "TokenVestingRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1755, + "src": "5083:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5083:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2039, + "nodeType": "EmitStatement", + "src": "5078:40:10" + } + ] + }, + "documentation": { + "id": 1970, + "nodeType": "StructuredDocumentation", + "src": "4410:209:10", + "text": " @notice Allows the owner to revoke the vesting. Tokens already vested\n remain in the contract, the rest are returned to the owner.\n @param token ERC20 token which is being vested" + }, + "functionSelector": "74a8f103", + "id": 2041, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1975, + "modifierName": { + "argumentTypes": null, + "id": 1974, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1511, + "src": "4661:9:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4661:9:10" + } + ], + "name": "revoke", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1972, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2041, + "src": "4640:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 1971, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "4640:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4639:14:10" + }, + "returnParameters": { + "id": 1976, + "nodeType": "ParameterList", + "parameters": [], + "src": "4671:0:10" + }, + "scope": 2133, + "src": "4624:501:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2061, + "nodeType": "Block", + "src": "5361:75:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2053, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "5403:9:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2058, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2056, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "5421:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5413:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5413:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5413:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5403:25:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2050, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "5392:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2049, + "name": "_vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "5378:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$7969_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5378:20:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2659, + "src": "5378:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5378:51:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2048, + "id": 2060, + "nodeType": "Return", + "src": "5371:58:10" + } + ] + }, + "documentation": { + "id": 2042, + "nodeType": "StructuredDocumentation", + "src": "5131:153:10", + "text": " @dev Calculates the amount that has already vested but hasn't been released yet.\n @param token ERC20 token which is being vested" + }, + "id": 2062, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_releasableAmount", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2044, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2062, + "src": "5316:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2043, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "5316:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5315:14:10" + }, + "returnParameters": { + "id": 2048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2047, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2062, + "src": "5352:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2046, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5352:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5351:9:10" + }, + "scope": 2133, + "src": "5289:147:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2131, + "nodeType": "Block", + "src": "5639:445:10", + "statements": [ + { + "assignments": [ + 2071 + ], + "declarations": [ + { + "constant": false, + "id": 2071, + "mutability": "mutable", + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2131, + "src": "5649:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5649:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2079, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2076, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5698:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$2133", + "typeString": "contract TokenVesting" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenVesting_$2133", + "typeString": "contract TokenVesting" + } + ], + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5690:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5690:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5690:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2072, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "5674:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "id": 2073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 7908, + "src": "5674:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5674:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5649:55:10" + }, + { + "assignments": [ + 2081 + ], + "declarations": [ + { + "constant": false, + "id": 2081, + "mutability": "mutable", + "name": "totalBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2131, + "src": "5714:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5714:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2091, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2084, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "5756:9:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2089, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2087, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "5774:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5766:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5766:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5766:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5756:25:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2082, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "5737:14:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2642, + "src": "5737:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5737:45:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5714:68:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2092, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5797:5:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5797:15:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2094, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "5815:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5797:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2099, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5866:5:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5866:15:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2103, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "5896:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2101, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "5885:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 2642, + "src": "5885:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5885:21:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5866:40:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2106, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "5910:8:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2111, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2109, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "5927:5:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + ], + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5919:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5919:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5919:14:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5910:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5866:68:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2128, + "nodeType": "Block", + "src": "5986:92:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2125, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "6057:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2121, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "6044:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2118, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6024:5:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6024:15:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2659, + "src": "6024:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6024:27:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2116, + "name": "totalBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "6007:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 2722, + "src": "6007:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6007:45:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 2739, + "src": "6007:49:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6007:60:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2069, + "id": 2127, + "nodeType": "Return", + "src": "6000:67:10" + } + ] + }, + "id": 2129, + "nodeType": "IfStatement", + "src": "5862:216:10", + "trueBody": { + "id": 2115, + "nodeType": "Block", + "src": "5936:44:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2113, + "name": "totalBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "5957:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2069, + "id": 2114, + "nodeType": "Return", + "src": "5950:19:10" + } + ] + } + }, + "id": 2130, + "nodeType": "IfStatement", + "src": "5793:285:10", + "trueBody": { + "id": 2098, + "nodeType": "Block", + "src": "5823:33:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5844:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2069, + "id": 2097, + "nodeType": "Return", + "src": "5837:8:10" + } + ] + } + } + ] + }, + "documentation": { + "id": 2063, + "nodeType": "StructuredDocumentation", + "src": "5442:124:10", + "text": " @dev Calculates the amount that has already vested.\n @param token ERC20 token which is being vested" + }, + "id": 2132, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_vestedAmount", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2065, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2132, + "src": "5594:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2064, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7969, + "src": "5594:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$7969", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5593:14:10" + }, + "returnParameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2068, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2132, + "src": "5630:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5630:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5629:9:10" + }, + "scope": 2133, + "src": "5571:513:10", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2134, + "src": "341:5745:10" + } + ], + "src": "0:6087:10" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001be238038062001be2833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506000620000826200038160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620001a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018062001b8a602d913960400191505060405180910390fd5b8183111562000203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018062001bb7602b913960400191505060405180910390fd5b600082116200027a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e56657374696e673a206475726174696f6e2069732030000000000081525060200191505060405180910390fd5b426200029583866200038960201b62000da41790919060201c565b11620002ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062001b5b602f913960400191505060405180910390fd5b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548160ff021916908315150217905550816004819055506200036983856200038960201b62000da41790919060201c565b60028190555083600381905550505050505062000412565b600033905090565b60008082840190508381101562000408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61173980620004226000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063872a781011610071578063872a7810146101d15780638da5cb5b146101f35780639852595c1461023d578063be9a655514610295578063f2fde38b146102b3578063fa01dc06146102f7576100b4565b80630fb5a6b4146100b957806313d033c0146100d757806319165587146100f557806338af3eed14610139578063715018a61461018357806374a8f1031461018d575b600080fd5b6100c1610353565b6040518082815260200191505060405180910390f35b6100df61035d565b6040518082815260200191505060405180910390f35b6101376004803603602081101561010b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610367565b005b61014161053b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018b610565565b005b6101cf600480360360208110156101a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106ed565b005b6101d9610aae565b604051808215151515815260200191505060405180910390f35b6101fb610ac5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61027f6004803603602081101561025357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aee565b6040518082815260200191505060405180910390f35b61029d610b37565b6040518082815260200191505060405180910390f35b6102f5600480360360208110156102c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b41565b005b6103396004803603602081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4e565b604051808215151515815260200191505060405180910390f35b6000600454905090565b6000600254905090565b600061037282610e2c565b9050600081116103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546f6b656e56657374696e673a206e6f20746f6b656e7320617265206475650081525060200191505060405180910390fd5b61043c81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104cc600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610e8f9092919063ffffffff16565b7fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931798282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61056d610f47565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6106f5610f47565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff16610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e56657374696e673a2063616e6e6f74207265766f6b65000000000081525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e16023913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561095a57600080fd5b505afa15801561096e573d6000803e3d6000fd5b505050506040513d602081101561098457600080fd5b8101908080519060200190929190505050905060006109a283610e2c565b905060006109b98284610f4f90919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a45610a1e610ac5565b828673ffffffffffffffffffffffffffffffffffffffff16610e8f9092919063ffffffff16565b7f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b6000600560009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600354905090565b610b49610f47565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806116706026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080828401905083811015610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000610e88600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7a84610f99565b610f4f90919063ffffffff16565b9050919050565b610f428363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611183565b505050565b600033905090565b6000610f9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ce565b905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101957600080fd5b505afa15801561102d573d6000803e3d6000fd5b505050506040513d602081101561104357600080fd5b8101908080519060200190929190505050905060006110aa600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610da490919063ffffffff16565b90506002544210156110c15760009250505061117e565b6110d8600454600354610da490919063ffffffff16565b4210158061112f5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561113e57809250505061117e565b61117960045461116b61115c60035442610f4f90919063ffffffff16565b8461148e90919063ffffffff16565b61151490919063ffffffff16565b925050505b919050565b6111a28273ffffffffffffffffffffffffffffffffffffffff1661155e565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112635780518252602082019150602081019050602083039250611240565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112c5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ca565b606091505b509150915081611342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156113c85780806020019051602081101561136157600080fd5b81019080805190602001909291905050506113c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806116b7602a913960400191505060405180910390fd5b5b50505050565b600083831115829061147b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611440578082015181840152602081019050611425565b50505050905090810190601f16801561146d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808314156114a1576000905061150e565b60008284029050828482816114b257fe5b0414611509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116966021913960400191505060405180910390fd5b809150505b92915050565b600061155683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115a9565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156115a057506000801b8214155b92505050919050565b60008083118290611655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561161a5780820151818401526020810190506115ff565b50505050905090810190601f1680156116475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161166157fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564546f6b656e56657374696e673a20746f6b656e20616c7265616479207265766f6b6564a26469706673582212206deea896cabf6017314e0caea53c98e7345b28b66ce86e8608e82c24b69e975d64736f6c63430006090033546f6b656e56657374696e673a2066696e616c2074696d65206973206265666f72652063757272656e742074696d65546f6b656e56657374696e673a2062656e656669636961727920697320746865207a65726f2061646472657373546f6b656e56657374696e673a20636c696666206973206c6f6e676572207468616e206475726174696f6e", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063872a781011610071578063872a7810146101d15780638da5cb5b146101f35780639852595c1461023d578063be9a655514610295578063f2fde38b146102b3578063fa01dc06146102f7576100b4565b80630fb5a6b4146100b957806313d033c0146100d757806319165587146100f557806338af3eed14610139578063715018a61461018357806374a8f1031461018d575b600080fd5b6100c1610353565b6040518082815260200191505060405180910390f35b6100df61035d565b6040518082815260200191505060405180910390f35b6101376004803603602081101561010b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610367565b005b61014161053b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018b610565565b005b6101cf600480360360208110156101a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106ed565b005b6101d9610aae565b604051808215151515815260200191505060405180910390f35b6101fb610ac5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61027f6004803603602081101561025357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aee565b6040518082815260200191505060405180910390f35b61029d610b37565b6040518082815260200191505060405180910390f35b6102f5600480360360208110156102c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b41565b005b6103396004803603602081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4e565b604051808215151515815260200191505060405180910390f35b6000600454905090565b6000600254905090565b600061037282610e2c565b9050600081116103ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546f6b656e56657374696e673a206e6f20746f6b656e7320617265206475650081525060200191505060405180910390fd5b61043c81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104cc600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610e8f9092919063ffffffff16565b7fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931798282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61056d610f47565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461062e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6106f5610f47565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff16610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e56657374696e673a2063616e6e6f74207265766f6b65000000000081525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e16023913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561095a57600080fd5b505afa15801561096e573d6000803e3d6000fd5b505050506040513d602081101561098457600080fd5b8101908080519060200190929190505050905060006109a283610e2c565b905060006109b98284610f4f90919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a45610a1e610ac5565b828673ffffffffffffffffffffffffffffffffffffffff16610e8f9092919063ffffffff16565b7f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b6000600560009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600354905090565b610b49610f47565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806116706026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080828401905083811015610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000610e88600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7a84610f99565b610f4f90919063ffffffff16565b9050919050565b610f428363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611183565b505050565b600033905090565b6000610f9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ce565b905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561101957600080fd5b505afa15801561102d573d6000803e3d6000fd5b505050506040513d602081101561104357600080fd5b8101908080519060200190929190505050905060006110aa600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610da490919063ffffffff16565b90506002544210156110c15760009250505061117e565b6110d8600454600354610da490919063ffffffff16565b4210158061112f5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561113e57809250505061117e565b61117960045461116b61115c60035442610f4f90919063ffffffff16565b8461148e90919063ffffffff16565b61151490919063ffffffff16565b925050505b919050565b6111a28273ffffffffffffffffffffffffffffffffffffffff1661155e565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106112635780518252602082019150602081019050602083039250611240565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112c5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ca565b606091505b509150915081611342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156113c85780806020019051602081101561136157600080fd5b81019080805190602001909291905050506113c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806116b7602a913960400191505060405180910390fd5b5b50505050565b600083831115829061147b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611440578082015181840152602081019050611425565b50505050905090810190601f16801561146d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808314156114a1576000905061150e565b60008284029050828482816114b257fe5b0414611509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116966021913960400191505060405180910390fd5b809150505b92915050565b600061155683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115a9565b905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156115a057506000801b8214155b92505050919050565b60008083118290611655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561161a5780820151818401526020810190506115ff565b50505050905090810190601f1680156116475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161166157fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564546f6b656e56657374696e673a20746f6b656e20616c7265616479207265766f6b6564a26469706673582212206deea896cabf6017314e0caea53c98e7345b28b66ce86e8608e82c24b69e975d64736f6c63430006090033", + "compiler": { + "name": "solc", + "version": "0.6.9+commit.3e3065ac.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRole.json b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRole.json new file mode 100644 index 0000000..6b7c1c0 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRole.json @@ -0,0 +1,1356 @@ +{ + "fileName": "WhitelistAdminRole.sol", + "contractName": "WhitelistAdminRole", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../Roles.sol\";\n\n/**\n * @title WhitelistAdminRole\n * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.\n */\ncontract WhitelistAdminRole is Context {\n using Roles for Roles.Role;\n\n event WhitelistAdminAdded(address indexed account);\n event WhitelistAdminRemoved(address indexed account);\n\n Roles.Role private _whitelistAdmins;\n\n constructor () internal {\n _addWhitelistAdmin(_msgSender());\n }\n\n modifier onlyWhitelistAdmin() {\n require(isWhitelistAdmin(_msgSender()), \"WhitelistAdminRole: caller does not have the WhitelistAdmin role\");\n _;\n }\n\n function isWhitelistAdmin(address account) public view returns (bool) {\n return _whitelistAdmins.has(account);\n }\n\n function addWhitelistAdmin(address account) public onlyWhitelistAdmin {\n _addWhitelistAdmin(account);\n }\n\n function renounceWhitelistAdmin() public {\n _removeWhitelistAdmin(_msgSender());\n }\n\n function _addWhitelistAdmin(address account) internal {\n _whitelistAdmins.add(account);\n emit WhitelistAdminAdded(account);\n }\n\n function _removeWhitelistAdmin(address account) internal {\n _whitelistAdmins.remove(account);\n emit WhitelistAdminRemoved(account);\n }\n}\n", + "sourcePath": "contracts/access/roles/WhitelistAdminRole.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/roles/WhitelistAdminRole.sol", + "exportedSymbols": { + "WhitelistAdminRole": [ + 1729 + ] + }, + "id": 1730, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1624, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:11" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 1625, + "nodeType": "ImportDirective", + "scope": 1730, + "sourceUnit": 27, + "src": "25:31:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 1626, + "nodeType": "ImportDirective", + "scope": 1730, + "sourceUnit": 1195, + "src": "57:22:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1627, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "238:7:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1628, + "nodeType": "InheritanceSpecifier", + "src": "238:7:11" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": "@title WhitelistAdminRole\n@dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.", + "fullyImplemented": true, + "id": 1729, + "linearizedBaseContracts": [ + 1729, + 26 + ], + "name": "WhitelistAdminRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1631, + "libraryName": { + "contractScope": null, + "id": 1629, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "258:5:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "252:27:11", + "typeName": { + "contractScope": null, + "id": 1630, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "268:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1635, + "name": "WhitelistAdminAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 1634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1633, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1635, + "src": "311:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "311:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "310:25:11" + }, + "src": "285:51:11" + }, + { + "anonymous": false, + "documentation": null, + "id": 1639, + "name": "WhitelistAdminRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 1638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1637, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "369:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "369:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "368:25:11" + }, + "src": "341:53:11" + }, + { + "constant": false, + "id": 1641, + "name": "_whitelistAdmins", + "nodeType": "VariableDeclaration", + "scope": 1729, + "src": "400:35:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1640, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "400:10:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1649, + "nodeType": "Block", + "src": "466:49:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1645, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "495:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "495:12:11", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1644, + "name": "_addWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1712, + "src": "476:18:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "476:32:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1648, + "nodeType": "ExpressionStatement", + "src": "476:32:11" + } + ] + }, + "documentation": null, + "id": 1650, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1642, + "nodeType": "ParameterList", + "parameters": [], + "src": "454:2:11" + }, + "returnParameters": { + "id": 1643, + "nodeType": "ParameterList", + "parameters": [], + "src": "466:0:11" + }, + "scope": 1729, + "src": "442:73:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1661, + "nodeType": "Block", + "src": "551:135:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1654, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "586:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "586:12:11", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1653, + "name": "isWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "569:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "569:30:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "57686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65", + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "601:66:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a092a330b9544809a41baf90fad5bb5d721d39e2ab6006aae3447e7f7e21c961", + "typeString": "literal_string \"WhitelistAdminRole: caller does not have the WhitelistAdmin role\"" + }, + "value": "WhitelistAdminRole: caller does not have the WhitelistAdmin role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a092a330b9544809a41baf90fad5bb5d721d39e2ab6006aae3447e7f7e21c961", + "typeString": "literal_string \"WhitelistAdminRole: caller does not have the WhitelistAdmin role\"" + } + ], + "id": 1652, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "561:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "561:107:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1659, + "nodeType": "ExpressionStatement", + "src": "561:107:11" + }, + { + "id": 1660, + "nodeType": "PlaceholderStatement", + "src": "678:1:11" + } + ] + }, + "documentation": null, + "id": 1662, + "name": "onlyWhitelistAdmin", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1651, + "nodeType": "ParameterList", + "parameters": [], + "src": "548:2:11" + }, + "src": "521:165:11", + "visibility": "internal" + }, + { + "body": { + "id": 1674, + "nodeType": "Block", + "src": "762:53:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1671, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1664, + "src": "800:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1669, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1641, + "src": "779:16:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1670, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "779:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "779:29:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1668, + "id": 1673, + "nodeType": "Return", + "src": "772:36:11" + } + ] + }, + "documentation": null, + "id": 1675, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1664, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1675, + "src": "718:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "718:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "717:17:11" + }, + "returnParameters": { + "id": 1668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1667, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1675, + "src": "756:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "756:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "755:6:11" + }, + "scope": 1729, + "src": "692:123:11", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1686, + "nodeType": "Block", + "src": "891:44:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1683, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "920:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1682, + "name": "_addWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1712, + "src": "901:18:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "901:27:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1685, + "nodeType": "ExpressionStatement", + "src": "901:27:11" + } + ] + }, + "documentation": null, + "id": 1687, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1680, + "modifierName": { + "argumentTypes": null, + "id": 1679, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "872:18:11", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "872:18:11" + } + ], + "name": "addWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1677, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "848:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "848:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "847:17:11" + }, + "returnParameters": { + "id": 1681, + "nodeType": "ParameterList", + "parameters": [], + "src": "891:0:11" + }, + "scope": 1729, + "src": "821:114:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1695, + "nodeType": "Block", + "src": "982:52:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1691, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1014:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1014:12:11", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1690, + "name": "_removeWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1728, + "src": "992:21:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "992:35:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1694, + "nodeType": "ExpressionStatement", + "src": "992:35:11" + } + ] + }, + "documentation": null, + "id": 1696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1688, + "nodeType": "ParameterList", + "parameters": [], + "src": "972:2:11" + }, + "returnParameters": { + "id": 1689, + "nodeType": "ParameterList", + "parameters": [], + "src": "982:0:11" + }, + "scope": 1729, + "src": "941:93:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1711, + "nodeType": "Block", + "src": "1094:89:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1704, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1698, + "src": "1125:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1701, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1641, + "src": "1104:16:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1703, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "1104:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1104:29:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1706, + "nodeType": "ExpressionStatement", + "src": "1104:29:11" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1708, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1698, + "src": "1168:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1707, + "name": "WhitelistAdminAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1635, + "src": "1148:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1148:28:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1710, + "nodeType": "EmitStatement", + "src": "1143:33:11" + } + ] + }, + "documentation": null, + "id": 1712, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1698, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1712, + "src": "1068:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1068:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1067:17:11" + }, + "returnParameters": { + "id": 1700, + "nodeType": "ParameterList", + "parameters": [], + "src": "1094:0:11" + }, + "scope": 1729, + "src": "1040:143:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1727, + "nodeType": "Block", + "src": "1246:94:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1720, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "1280:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1717, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1641, + "src": "1256:16:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "1256:23:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1256:32:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1722, + "nodeType": "ExpressionStatement", + "src": "1256:32:11" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1724, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "1325:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1723, + "name": "WhitelistAdminRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1639, + "src": "1303:21:11", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1303:30:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1726, + "nodeType": "EmitStatement", + "src": "1298:35:11" + } + ] + }, + "documentation": null, + "id": 1728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1714, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1728, + "src": "1220:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1220:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1219:17:11" + }, + "returnParameters": { + "id": 1716, + "nodeType": "ParameterList", + "parameters": [], + "src": "1246:0:11" + }, + "scope": 1729, + "src": "1189:151:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1730, + "src": "207:1135:11" + } + ], + "src": "0:1343:11" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRoleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRoleMock.json new file mode 100644 index 0000000..ff29b1d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistAdminRoleMock.json @@ -0,0 +1,492 @@ +{ + "fileName": "WhitelistAdminRoleMock.sol", + "contractName": "WhitelistAdminRoleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/WhitelistAdminRole.sol\";\n\ncontract WhitelistAdminRoleMock is WhitelistAdminRole {\n function removeWhitelistAdmin(address account) public {\n _removeWhitelistAdmin(account);\n }\n\n function onlyWhitelistAdminMock() public view onlyWhitelistAdmin {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Causes a compilation error if super._removeWhitelistAdmin is not internal\n function _removeWhitelistAdmin(address account) internal {\n super._removeWhitelistAdmin(account);\n }\n}\n", + "sourcePath": "contracts/mocks/WhitelistAdminRoleMock.sol", + "sourceMap": "75:495:109:-;;;476:32:11;495:12;:10;;;:12;;:::i;:::-;476:18;;;:32;;:::i;:::-;75:495:109;;788:96:0;833:15;867:10;860:17;;788:96;:::o;1040:143:11:-;1104:29;1125:7;1104:16;:20;;;;;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;75:495:109:-;;;;;;;", + "deployedSourceMap": "75:495:109:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75:495:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:93:11;;;:::i;:::-;;242:129:109;;;:::i;:::-;;135:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;135:101:109;;;;;;;;;;;;;;;;;;;:::i;:::-;;821:114:11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;821:114:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;692:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;692:123:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;941:93;992:35;1014:12;:10;:12::i;:::-;992:21;:35::i;:::-;941:93::o;242:129:109:-;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;242:129:109:o;135:101::-;199:30;221:7;199:21;:30::i;:::-;135:101;:::o;821:114:11:-;569:30;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;901:27;920:7;901:18;:27::i;:::-;821:114;:::o;692:123::-;756:4;779:29;800:7;779:16;:20;;:29;;;;:::i;:::-;772:36;;692:123;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;458:110:109:-;525:36;553:7;525:27;:36::i;:::-;458:110;:::o;1040:143:11:-;1104:29;1125:7;1104:16;:20;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;1189:151:11:-;1256:32;1280:7;1256:16;:23;;:32;;;;:::i;:::-;1325:7;1303:30;;;;;;;;;;;;1189:151;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyWhitelistAdminMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/WhitelistAdminRoleMock.sol", + "exportedSymbols": { + "WhitelistAdminRoleMock": [ + 8550 + ] + }, + "id": 8551, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8518, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:109" + }, + { + "absolutePath": "contracts/access/roles/WhitelistAdminRole.sol", + "file": "../access/roles/WhitelistAdminRole.sol", + "id": 8519, + "nodeType": "ImportDirective", + "scope": 8551, + "sourceUnit": 1730, + "src": "25:48:109", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8520, + "name": "WhitelistAdminRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1729, + "src": "110:18:109", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistAdminRole_$1729", + "typeString": "contract WhitelistAdminRole" + } + }, + "id": 8521, + "nodeType": "InheritanceSpecifier", + "src": "110:18:109" + } + ], + "contractDependencies": [ + 26, + 1729 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 8550, + "linearizedBaseContracts": [ + 8550, + 1729, + 26 + ], + "name": "WhitelistAdminRoleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8530, + "nodeType": "Block", + "src": "189:47:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8527, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8523, + "src": "221:7:109", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8526, + "name": "_removeWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 8549 + ], + "referencedDeclaration": 8549, + "src": "199:21:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "199:30:109", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8529, + "nodeType": "ExpressionStatement", + "src": "199:30:109" + } + ] + }, + "documentation": null, + "id": 8531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8524, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8523, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 8531, + "src": "165:15:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "165:7:109", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "164:17:109" + }, + "returnParameters": { + "id": 8525, + "nodeType": "ParameterList", + "parameters": [], + "src": "189:0:109" + }, + "scope": 8550, + "src": "135:101:109", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 8536, + "nodeType": "Block", + "src": "307:64:109", + "statements": [] + }, + "documentation": null, + "id": 8537, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 8534, + "modifierName": { + "argumentTypes": null, + "id": 8533, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "288:18:109", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "288:18:109" + } + ], + "name": "onlyWhitelistAdminMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8532, + "nodeType": "ParameterList", + "parameters": [], + "src": "273:2:109" + }, + "returnParameters": { + "id": 8535, + "nodeType": "ParameterList", + "parameters": [], + "src": "307:0:109" + }, + "scope": 8550, + "src": "242:129:109", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 8548, + "nodeType": "Block", + "src": "515:53:109", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 8545, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8539, + "src": "553:7:109", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 8542, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14262, + "src": "525:5:109", + "typeDescriptions": { + "typeIdentifier": "t_super$_WhitelistAdminRoleMock_$8550", + "typeString": "contract super WhitelistAdminRoleMock" + } + }, + "id": 8544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_removeWhitelistAdmin", + "nodeType": "MemberAccess", + "referencedDeclaration": 1728, + "src": "525:27:109", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 8546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "525:36:109", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8547, + "nodeType": "ExpressionStatement", + "src": "525:36:109" + } + ] + }, + "documentation": null, + "id": 8549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8539, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 8549, + "src": "489:15:109", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "489:7:109", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "488:17:109" + }, + "returnParameters": { + "id": 8541, + "nodeType": "ParameterList", + "parameters": [], + "src": "515:0:109" + }, + "scope": 8550, + "src": "458:110:109", + "stateMutability": "nonpayable", + "superFunction": 1728, + "visibility": "internal" + } + ], + "scope": 8551, + "src": "75:495:109" + } + ], + "src": "0:571:109" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b61040d1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108b66022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61065d806102596000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80634c5a628c1461005c578063564c74a3146100665780636897e974146100705780637362d9c8146100b4578063bb5f747b146100f8575b600080fd5b610064610154565b005b61006e610166565b005b6100b26004803603602081101561008657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101cd565b005b6100f6600480360360208110156100ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101d9565b005b61013a6004803603602081101561010e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061024a565b604051808215151515815260200191505060405180910390f35b61016461015f610267565b61026f565b565b610176610171610267565b61024a565b6101cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806105e96040913960400191505060405180910390fd5b565b6101d68161026f565b50565b6101e96101e4610267565b61024a565b61023e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806105e96040913960400191505060405180910390fd5b6102478161027b565b50565b60006102608260006102d590919063ffffffff16565b9050919050565b600033905090565b610278816103b3565b50565b61028f81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105c76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b61041782826102d5565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f282826102d5565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105a66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65a265627a7a72315820289051fbd52872d1f5918daf1dce38c054748d61aefddcf1e7c9f3ca08899b5b64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80634c5a628c1461005c578063564c74a3146100665780636897e974146100705780637362d9c8146100b4578063bb5f747b146100f8575b600080fd5b610064610154565b005b61006e610166565b005b6100b26004803603602081101561008657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101cd565b005b6100f6600480360360208110156100ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101d9565b005b61013a6004803603602081101561010e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061024a565b604051808215151515815260200191505060405180910390f35b61016461015f610267565b61026f565b565b610176610171610267565b61024a565b6101cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806105e96040913960400191505060405180910390fd5b565b6101d68161026f565b50565b6101e96101e4610267565b61024a565b61023e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806105e96040913960400191505060405180910390fd5b6102478161027b565b50565b60006102608260006102d590919063ffffffff16565b9050919050565b600033905090565b610278816103b3565b50565b61028f81600061040d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561035c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806105c76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6103c78160006104e890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b61041782826102d5565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6104f282826102d5565b610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105a66021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65a265627a7a72315820289051fbd52872d1f5918daf1dce38c054748d61aefddcf1e7c9f3ca08899b5b64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsale.json b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsale.json new file mode 100644 index 0000000..bbe7bfc --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsale.json @@ -0,0 +1,689 @@ +{ + "fileName": "WhitelistCrowdsale.sol", + "contractName": "WhitelistCrowdsale", + "source": "pragma solidity ^0.5.0;\nimport \"../Crowdsale.sol\";\nimport \"../../access/roles/WhitelistedRole.sol\";\n\n\n/**\n * @title WhitelistCrowdsale\n * @dev Crowdsale in which only whitelisted users can contribute.\n */\ncontract WhitelistCrowdsale is WhitelistedRole, Crowdsale {\n /**\n * @dev Extend parent behavior requiring beneficiary to be whitelisted. Note that no\n * restriction is imposed on the account sending the transaction.\n * @param _beneficiary Token beneficiary\n * @param _weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal view {\n require(isWhitelisted(_beneficiary), \"WhitelistCrowdsale: beneficiary doesn't have the Whitelisted role\");\n super._preValidatePurchase(_beneficiary, _weiAmount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/validation/WhitelistCrowdsale.sol", + "sourceMap": "", + "deployedSourceMap": "", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedRemoved", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/validation/WhitelistCrowdsale.sol", + "exportedSymbols": { + "WhitelistCrowdsale": [ + 3118 + ] + }, + "id": 3119, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3089, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:25" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 3090, + "nodeType": "ImportDirective", + "scope": 3119, + "sourceUnit": 2120, + "src": "24:26:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/roles/WhitelistedRole.sol", + "file": "../../access/roles/WhitelistedRole.sol", + "id": 3091, + "nodeType": "ImportDirective", + "scope": 3119, + "sourceUnit": 1843, + "src": "51:48:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3092, + "name": "WhitelistedRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1842, + "src": "236:15:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistedRole_$1842", + "typeString": "contract WhitelistedRole" + } + }, + "id": 3093, + "nodeType": "InheritanceSpecifier", + "src": "236:15:25" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3094, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "253:9:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 3095, + "nodeType": "InheritanceSpecifier", + "src": "253:9:25" + } + ], + "contractDependencies": [ + 26, + 1729, + 1842, + 2119, + 13820 + ], + "contractKind": "contract", + "documentation": "@title WhitelistCrowdsale\n@dev Crowdsale in which only whitelisted users can contribute.", + "fullyImplemented": false, + "id": 3118, + "linearizedBaseContracts": [ + 3118, + 2119, + 13820, + 1842, + 1729, + 26 + ], + "name": "WhitelistCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3116, + "nodeType": "Block", + "src": "626:184:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3104, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "658:12:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3103, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1776, + "src": "644:13:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "644:27:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "57686974656c69737443726f776473616c653a2062656e656669636961727920646f65736e27742068617665207468652057686974656c697374656420726f6c65", + "id": 3106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "673:67:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d4d81a9acac4fa209d4fd468306311d92f08da1d0ae45d65f549de57dd92548", + "typeString": "literal_string \"WhitelistCrowdsale: beneficiary doesn't have the Whitelisted role\"" + }, + "value": "WhitelistCrowdsale: beneficiary doesn't have the Whitelisted role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d4d81a9acac4fa209d4fd468306311d92f08da1d0ae45d65f549de57dd92548", + "typeString": "literal_string \"WhitelistCrowdsale: beneficiary doesn't have the Whitelisted role\"" + } + ], + "id": 3102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "636:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "636:105:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3108, + "nodeType": "ExpressionStatement", + "src": "636:105:25" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3112, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "778:12:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3113, + "name": "_weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3099, + "src": "792:10:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3109, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14042, + "src": "751:5:25", + "typeDescriptions": { + "typeIdentifier": "t_super$_WhitelistCrowdsale_$3118", + "typeString": "contract super WhitelistCrowdsale" + } + }, + "id": 3111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 2050, + "src": "751:26:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "751:52:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3115, + "nodeType": "ExpressionStatement", + "src": "751:52:25" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring beneficiary to be whitelisted. Note that no\nrestriction is imposed on the account sending the transaction.\n@param _beneficiary Token beneficiary\n@param _weiAmount Amount of wei contributed", + "id": 3117, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3097, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 3117, + "src": "570:20:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "570:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3099, + "name": "_weiAmount", + "nodeType": "VariableDeclaration", + "scope": 3117, + "src": "592:18:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "592:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "569:42:25" + }, + "returnParameters": { + "id": 3101, + "nodeType": "ParameterList", + "parameters": [], + "src": "626:0:25" + }, + "scope": 3118, + "src": "540:270:25", + "stateMutability": "view", + "superFunction": 2050, + "visibility": "internal" + } + ], + "scope": 3119, + "src": "205:607:25" + } + ], + "src": "0:813:25" + }, + "bytecode": "0x", + "deployedBytecode": "0x", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsaleImpl.json b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsaleImpl.json new file mode 100644 index 0000000..9af24a5 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistCrowdsaleImpl.json @@ -0,0 +1,609 @@ +{ + "fileName": "WhitelistCrowdsaleImpl.sol", + "contractName": "WhitelistCrowdsaleImpl", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../crowdsale/validation/WhitelistCrowdsale.sol\";\nimport \"../crowdsale/Crowdsale.sol\";\n\n\ncontract WhitelistCrowdsaleImpl is Crowdsale, WhitelistCrowdsale {\n constructor (uint256 _rate, address payable _wallet, IERC20 _token) public Crowdsale(_rate, _wallet, _token) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/WhitelistCrowdsaleImpl.sol", + "sourceMap": "157:246:110:-;;;228:173;8:9:-1;5:2;;;30:1;27;20:12;5:2;228:173:110;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;228:173:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;313:5;320:7;329:6;476:32:11;495:12;:10;;;:12;;:::i;:::-;476:18;;;:32;;:::i;:::-;1435:4:150;1421:11;;:18;;;;;;;;;;;;;;;;;;2416:1:13;2409:4;:8;2401:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2478:1;2460:20;;:6;:20;;;;2452:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2566:1;2540:28;;2548:5;2540:28;;;;2532:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:4;2620:5;:12;;;;2652:6;2642:7;;:16;;;;;;;;;;;;;;;;;;2677:5;2668:6;;:14;;;;;;;;;;;;;;;;;;2319:370;;;228:173:110;;;157:246;;788:96:0;833:15;867:10;860:17;;788:96;:::o;1040:143:11:-;1104:29;1125:7;1104:16;:20;;;;;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;157:246:110:-;;;;;;;", + "deployedSourceMap": "157:246:110:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:23:13;3027:12;:10;:12::i;:::-;3017:9;:23::i;:::-;157:246:110;953:108:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;953:108:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;953:108:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;1067:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1067:114:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1067:114:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;3430:75:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3430:75:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;830:117:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;830:117:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;830:117:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3568:85:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3568:85:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;941:93:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;941:93:11;;;:::i;:::-;;3258:87:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3258:87:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;821:114:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;821:114:11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;821:114:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;692:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:123:11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;692:123:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1187:87:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1187:87:12;;;:::i;:::-;;3910:605:13;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3910:605:13;;;;;;;;;;;;;;;;;;;:::i;:::-;;3106:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3106:76:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;788:96:0;833:15;867:10;860:17;;788:96;:::o;3910:605:13:-;1934:11:150;;;;;;;;;;;1926:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:5;2056:11;;:19;;;;;;;;;;;;;;;;;;3988:17:13;4008:9;3988:29;;4027:44;4048:11;4061:9;4027:20;:44::i;:::-;4130:14;4147:26;4163:9;4147:15;:26::i;:::-;4130:43;;4221:25;4236:9;4221:10;;:14;;:25;;;;:::i;:::-;4208:10;:38;;;;4257:37;4274:11;4287:6;4257:16;:37::i;:::-;4339:11;4309:61;;4325:12;:10;:12::i;:::-;4309:61;;;4352:9;4363:6;4309:61;;;;;;;;;;;;;;;;;;;;;;;;4381:46;4404:11;4417:9;4381:22;:46::i;:::-;4438:15;:13;:15::i;:::-;4463:45;4485:11;4498:9;4463:21;:45::i;:::-;2086:1:150;;2244:4;2230:11;;:18;;;;;;;;;;;;;;;;;;3910:605:13;:::o;953:108:12:-;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1030:24:12;1046:7;1030:15;:24::i;:::-;953:108;:::o;1067:114::-;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:27:12;1166:7;1147:18;:27::i;:::-;1067:114;:::o;3430:75:13:-;3467:7;3493:5;;3486:12;;3430:75;:::o;830:117:12:-;891:4;914:26;932:7;914:13;:17;;:26;;;;:::i;:::-;907:33;;830:117;;;:::o;3568:85:13:-;3610:7;3636:10;;3629:17;;3568:85;:::o;941:93:11:-;992:35;1014:12;:10;:12::i;:::-;992:21;:35::i;:::-;941:93::o;3258:87:13:-;3297:15;3331:7;;;;;;;;;;;3324:14;;3258:87;:::o;821:114:11:-;569:30;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;901:27;920:7;901:18;:27::i;:::-;821:114;:::o;692:123::-;756:4;779:29;800:7;779:16;:20;;:29;;;;:::i;:::-;772:36;;692:123;;;:::o;1187:87:12:-;1235:32;1254:12;:10;:12::i;:::-;1235:18;:32::i;:::-;1187:87::o;3106:76:13:-;3144:6;3169;;;;;;;;;;;3162:13;;3106:76;:::o;540:270:25:-;644:27;658:12;644:13;:27::i;:::-;636:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:52;778:12;792:10;751:26;:52::i;:::-;540:270;;:::o;7358:120:13:-;7425:7;7451:20;7465:5;;7451:9;:13;;:20;;;;:::i;:::-;7444:27;;7358:120;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6560:134:13:-;6647:40;6662:11;6675;6647:14;:40::i;:::-;6560:134;;:::o;6964:145::-;;;:::o;7565:78::-;7609:7;;;;;;;;;;;:16;;:27;7626:9;7609:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7609:27:13;7565:78::o;5728:149::-;;;:::o;1280:134:12:-;1341:26;1359:7;1341:13;:17;;:26;;;;:::i;:::-;1399:7;1382:25;;;;;;;;;;;;1280:134;:::o;1420:142::-;1484:29;1505:7;1484:13;:20;;:29;;;;:::i;:::-;1547:7;1528:27;;;;;;;;;;;;1420:142;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;1189:151:11:-;1256:32;1280:7;1256:16;:23;;:32;;;;:::i;:::-;1325:7;1303:30;;;;;;;;;;;;1189:151;:::o;1040:143::-;1104:29;1125:7;1104:16;:20;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;5057:376:13:-;5182:1;5159:25;;:11;:25;;;;5151:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:1;5249:9;:14;;5241:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:376;;:::o;2159:459:45:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;6157:137:13:-;6242:45;6262:11;6275;6242:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;6157:137;;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o;662:174:126:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:126;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:126;744:18;:85::i;:::-;662:174;;;:::o;2666:1095::-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:126;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:126;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:126;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:146:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "_wallet", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "_token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedRemoved", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/WhitelistCrowdsaleImpl.sol", + "exportedSymbols": { + "WhitelistCrowdsaleImpl": [ + 8575 + ] + }, + "id": 8576, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8552, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:110" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 8553, + "nodeType": "ImportDirective", + "scope": 8576, + "sourceUnit": 10217, + "src": "25:35:110", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/validation/WhitelistCrowdsale.sol", + "file": "../crowdsale/validation/WhitelistCrowdsale.sol", + "id": 8554, + "nodeType": "ImportDirective", + "scope": 8576, + "sourceUnit": 3119, + "src": "61:56:110", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/crowdsale/Crowdsale.sol", + "file": "../crowdsale/Crowdsale.sol", + "id": 8555, + "nodeType": "ImportDirective", + "scope": 8576, + "sourceUnit": 2120, + "src": "118:36:110", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8556, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2119, + "src": "192:9:110", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$2119", + "typeString": "contract Crowdsale" + } + }, + "id": 8557, + "nodeType": "InheritanceSpecifier", + "src": "192:9:110" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8558, + "name": "WhitelistCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3118, + "src": "203:18:110", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistCrowdsale_$3118", + "typeString": "contract WhitelistCrowdsale" + } + }, + "id": 8559, + "nodeType": "InheritanceSpecifier", + "src": "203:18:110" + } + ], + "contractDependencies": [ + 26, + 1729, + 1842, + 2119, + 3118, + 13820 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 8575, + "linearizedBaseContracts": [ + 8575, + 3118, + 2119, + 13820, + 1842, + 1729, + 26 + ], + "name": "WhitelistCrowdsaleImpl", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8573, + "nodeType": "Block", + "src": "337:64:110", + "statements": [] + }, + "documentation": null, + "id": 8574, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 8568, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8561, + "src": "313:5:110", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 8569, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8563, + "src": "320:7:110", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 8570, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8565, + "src": "329:6:110", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + } + ], + "id": 8571, + "modifierName": { + "argumentTypes": null, + "id": 8567, + "name": "Crowdsale", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2119, + "src": "303:9:110", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Crowdsale_$2119_$", + "typeString": "type(contract Crowdsale)" + } + }, + "nodeType": "ModifierInvocation", + "src": "303:33:110" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8561, + "name": "_rate", + "nodeType": "VariableDeclaration", + "scope": 8574, + "src": "241:13:110", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "241:7:110", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8563, + "name": "_wallet", + "nodeType": "VariableDeclaration", + "scope": 8574, + "src": "256:23:110", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 8562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "256:15:110", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8565, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 8574, + "src": "281:13:110", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 8564, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "281:6:110", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "240:55:110" + }, + "returnParameters": { + "id": 8572, + "nodeType": "ParameterList", + "parameters": [], + "src": "337:0:110" + }, + "scope": 8575, + "src": "228:173:110", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 8576, + "src": "157:246:110" + } + ], + "src": "0:404:110" + }, + "bytecode": "0x60806040523480156200001157600080fd5b506040516200191f3803806200191f833981810160405260608110156200003757600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508282826200007f62000073620002b660201b60201c565b620002be60201b60201c565b6001600260006101000a81548160ff0219169083151502179055506000831162000111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f43726f776473616c653a2072617465206973203000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620018fa6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180620018b46024913960400191505060405180910390fd5b8260048190555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050620004e3565b600033905090565b620002d98160006200031f60201b62000d541790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b6200033182826200040360201b60201c565b15620003a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200048c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620018d86022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113c180620004f36000396000f3fe6080604052600436106100a75760003560e01c8063521eb27311610064578063521eb273146102315780637362d9c814610288578063bb5f747b146102d9578063d6cd947314610342578063ec8ac4d814610359578063fc0c546a1461039d576100a7565b806310154bad146100b9578063291d95491461010a5780632c4e722e1461015b5780633af32abf146101865780634042b66f146101ef5780634c5a628c1461021a575b6100b76100b26103f4565b6103fc565b005b3480156100c557600080fd5b50610108600480360360208110156100dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058a565b005b34801561011657600080fd5b506101596004803603602081101561012d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105fb565b005b34801561016757600080fd5b5061017061066c565b6040518082815260200191505060405180910390f35b34801561019257600080fd5b506101d5600480360360208110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610676565b604051808215151515815260200191505060405180910390f35b3480156101fb57600080fd5b50610204610693565b6040518082815260200191505060405180910390f35b34801561022657600080fd5b5061022f61069d565b005b34801561023d57600080fd5b506102466106af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029457600080fd5b506102d7600480360360208110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106d9565b005b3480156102e557600080fd5b50610328600480360360208110156102fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061074a565b604051808215151515815260200191505060405180910390f35b34801561034e57600080fd5b50610357610767565b005b61039b6004803603602081101561036f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103fc565b005b3480156103a957600080fd5b506103b2610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b600260009054906101000a900460ff1661047e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6000600260006101000a81548160ff02191690831515021790555060003490506104a882826107a3565b60006104b38261080f565b90506104ca8260055461082d90919063ffffffff16565b6005819055506104da83826108b5565b8273ffffffffffffffffffffffffffffffffffffffff166104f96103f4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361055883836108c3565b6105606108c7565b61056a8383610932565b50506001600260006101000a81548160ff02191690831515021790555050565b61059a6105956103f4565b61074a565b6105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806112f96040913960400191505060405180910390fd5b6105f881610936565b50565b61060b6106066103f4565b61074a565b610660576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806112f96040913960400191505060405180910390fd5b61066981610990565b50565b6000600454905090565b600061068c8260016109ea90919063ffffffff16565b9050919050565b6000600554905090565b6106ad6106a86103f4565b610ac8565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106e96106e46103f4565b61074a565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806112f96040913960400191505060405180910390fd5b61074781610b22565b50565b60006107608260006109ea90919063ffffffff16565b9050919050565b6107776107726103f4565b610990565b565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107ac82610676565b610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806112546041913960600191505060405180910390fd5b61080b8282610b7c565b5050565b600061082660045483610c7d90919063ffffffff16565b9050919050565b6000808284019050838110156108ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6108bf8282610d03565b5050565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561092f573d6000803e3d6000fd5b50565b5050565b61094a816001610d5490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6109a4816001610e2f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112d76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610adc816000610e2f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b610b36816000610d5490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611339602a913960400191505060405180910390fd5b6000811415610c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610c905760009050610cfd565b6000828402905082848281610ca157fe5b0414610cf8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112b66021913960400191505060405180910390fd5b809150505b92915050565b610d508282600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eec9092919063ffffffff16565b5050565b610d5e82826109ea565b15610dd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e3982826109ea565b610e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112956021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610fb8838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fbd565b505050565b610fdc8273ffffffffffffffffffffffffffffffffffffffff16611208565b61104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061109d578051825260208201915060208101905060208303925061107a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146110ff576040519150601f19603f3d011682016040523d82523d6000602084013e611104565b606091505b50915091508161117c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156112025780806020019051602081101561119b57600080fd5b8101908080519060200190929190505050611201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611363602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561124a57506000801b8214155b9250505091905056fe57686974656c69737443726f776473616c653a2062656e656669636961727920646f65736e27742068617665207468652057686974656c697374656420726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6543726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158204cbfac9f8aa72a180ec07aca00d92376e704547a114819d15b7139a3dcb0fa2164736f6c6343000511003243726f776473616c653a20746f6b656e20697320746865207a65726f2061646472657373526f6c65733a206163636f756e7420697320746865207a65726f206164647265737343726f776473616c653a2077616c6c657420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x6080604052600436106100a75760003560e01c8063521eb27311610064578063521eb273146102315780637362d9c814610288578063bb5f747b146102d9578063d6cd947314610342578063ec8ac4d814610359578063fc0c546a1461039d576100a7565b806310154bad146100b9578063291d95491461010a5780632c4e722e1461015b5780633af32abf146101865780634042b66f146101ef5780634c5a628c1461021a575b6100b76100b26103f4565b6103fc565b005b3480156100c557600080fd5b50610108600480360360208110156100dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058a565b005b34801561011657600080fd5b506101596004803603602081101561012d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105fb565b005b34801561016757600080fd5b5061017061066c565b6040518082815260200191505060405180910390f35b34801561019257600080fd5b506101d5600480360360208110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610676565b604051808215151515815260200191505060405180910390f35b3480156101fb57600080fd5b50610204610693565b6040518082815260200191505060405180910390f35b34801561022657600080fd5b5061022f61069d565b005b34801561023d57600080fd5b506102466106af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029457600080fd5b506102d7600480360360208110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106d9565b005b3480156102e557600080fd5b50610328600480360360208110156102fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061074a565b604051808215151515815260200191505060405180910390f35b34801561034e57600080fd5b50610357610767565b005b61039b6004803603602081101561036f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103fc565b005b3480156103a957600080fd5b506103b2610779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600033905090565b600260009054906101000a900460ff1661047e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6000600260006101000a81548160ff02191690831515021790555060003490506104a882826107a3565b60006104b38261080f565b90506104ca8260055461082d90919063ffffffff16565b6005819055506104da83826108b5565b8273ffffffffffffffffffffffffffffffffffffffff166104f96103f4565b73ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361055883836108c3565b6105606108c7565b61056a8383610932565b50506001600260006101000a81548160ff02191690831515021790555050565b61059a6105956103f4565b61074a565b6105ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806112f96040913960400191505060405180910390fd5b6105f881610936565b50565b61060b6106066103f4565b61074a565b610660576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806112f96040913960400191505060405180910390fd5b61066981610990565b50565b6000600454905090565b600061068c8260016109ea90919063ffffffff16565b9050919050565b6000600554905090565b6106ad6106a86103f4565b610ac8565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106e96106e46103f4565b61074a565b61073e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806112f96040913960400191505060405180910390fd5b61074781610b22565b50565b60006107608260006109ea90919063ffffffff16565b9050919050565b6107776107726103f4565b610990565b565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107ac82610676565b610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806112546041913960600191505060405180910390fd5b61080b8282610b7c565b5050565b600061082660045483610c7d90919063ffffffff16565b9050919050565b6000808284019050838110156108ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6108bf8282610d03565b5050565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561092f573d6000803e3d6000fd5b50565b5050565b61094a816001610d5490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6109a4816001610e2f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806112d76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610adc816000610e2f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b610b36816000610d5490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611339602a913960400191505060405180910390fd5b6000811415610c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f43726f776473616c653a20776569416d6f756e7420697320300000000000000081525060200191505060405180910390fd5b5050565b600080831415610c905760009050610cfd565b6000828402905082848281610ca157fe5b0414610cf8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112b66021913960400191505060405180910390fd5b809150505b92915050565b610d508282600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eec9092919063ffffffff16565b5050565b610d5e82826109ea565b15610dd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e3982826109ea565b610e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806112956021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610fb8838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610fbd565b505050565b610fdc8273ffffffffffffffffffffffffffffffffffffffff16611208565b61104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061109d578051825260208201915060208101905060208303925061107a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146110ff576040519150601f19603f3d011682016040523d82523d6000602084013e611104565b606091505b50915091508161117c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156112025780806020019051602081101561119b57600080fd5b8101908080519060200190929190505050611201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611363602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561124a57506000801b8214155b9250505091905056fe57686974656c69737443726f776473616c653a2062656e656669636961727920646f65736e27742068617665207468652057686974656c697374656420726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6543726f776473616c653a2062656e656669636961727920697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158204cbfac9f8aa72a180ec07aca00d92376e704547a114819d15b7139a3dcb0fa2164736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRole.json b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRole.json new file mode 100644 index 0000000..8888272 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRole.json @@ -0,0 +1,1498 @@ +{ + "fileName": "WhitelistedRole.sol", + "contractName": "WhitelistedRole", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"../Roles.sol\";\nimport \"./WhitelistAdminRole.sol\";\n\n/**\n * @title WhitelistedRole\n * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a\n * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove\n * it), and not Whitelisteds themselves.\n */\ncontract WhitelistedRole is Context, WhitelistAdminRole {\n using Roles for Roles.Role;\n\n event WhitelistedAdded(address indexed account);\n event WhitelistedRemoved(address indexed account);\n\n Roles.Role private _whitelisteds;\n\n modifier onlyWhitelisted() {\n require(isWhitelisted(_msgSender()), \"WhitelistedRole: caller does not have the Whitelisted role\");\n _;\n }\n\n function isWhitelisted(address account) public view returns (bool) {\n return _whitelisteds.has(account);\n }\n\n function addWhitelisted(address account) public onlyWhitelistAdmin {\n _addWhitelisted(account);\n }\n\n function removeWhitelisted(address account) public onlyWhitelistAdmin {\n _removeWhitelisted(account);\n }\n\n function renounceWhitelisted() public {\n _removeWhitelisted(_msgSender());\n }\n\n function _addWhitelisted(address account) internal {\n _whitelisteds.add(account);\n emit WhitelistedAdded(account);\n }\n\n function _removeWhitelisted(address account) internal {\n _whitelisteds.remove(account);\n emit WhitelistedRemoved(account);\n }\n}\n", + "sourcePath": "contracts/access/roles/WhitelistedRole.sol", + "sourceMap": "428:1136:12:-;;;476:32:11;495:12;:10;;;:12;;:::i;:::-;476:18;;;:32;;:::i;:::-;428:1136:12;;788:96:0;833:15;867:10;860:17;;788:96;:::o;1040:143:11:-;1104:29;1125:7;1104:16;:20;;;;;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;428:1136:12:-;;;;;;;", + "deployedSourceMap": "428:1136:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:1136:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;953:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;953:108:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;1067:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1067:114:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;830:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;830:117:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;941:93:11;;;:::i;:::-;;821:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;821:114:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;692:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;692:123:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1187:87:12;;;:::i;:::-;;953:108;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1030:24:12;1046:7;1030:15;:24::i;:::-;953:108;:::o;1067:114::-;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:27:12;1166:7;1147:18;:27::i;:::-;1067:114;:::o;830:117::-;891:4;914:26;932:7;914:13;:17;;:26;;;;:::i;:::-;907:33;;830:117;;;:::o;941:93:11:-;992:35;1014:12;:10;:12::i;:::-;992:21;:35::i;:::-;941:93::o;821:114::-;569:30;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;901:27;920:7;901:18;:27::i;:::-;821:114;:::o;692:123::-;756:4;779:29;800:7;779:16;:20;;:29;;;;:::i;:::-;772:36;;692:123;;;:::o;1187:87:12:-;1235:32;1254:12;:10;:12::i;:::-;1235:18;:32::i;:::-;1187:87::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;1280:134:12:-;1341:26;1359:7;1341:13;:17;;:26;;;;:::i;:::-;1399:7;1382:25;;;;;;;;;;;;1280:134;:::o;1420:142::-;1484:29;1505:7;1484:13;:20;;:29;;;;:::i;:::-;1547:7;1528:27;;;;;;;;;;;;1420:142;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;1189:151:11:-;1256:32;1280:7;1256:16;:23;;:32;;;;:::i;:::-;1325:7;1303:30;;;;;;;;;;;;1189:151;:::o;1040:143::-;1104:29;1125:7;1104:16;:20;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/access/roles/WhitelistedRole.sol", + "exportedSymbols": { + "WhitelistedRole": [ + 1842 + ] + }, + "id": 1843, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1731, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:12" + }, + { + "absolutePath": "contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 1732, + "nodeType": "ImportDirective", + "scope": 1843, + "sourceUnit": 27, + "src": "25:31:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 1733, + "nodeType": "ImportDirective", + "scope": 1843, + "sourceUnit": 1195, + "src": "57:22:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/roles/WhitelistAdminRole.sol", + "file": "./WhitelistAdminRole.sol", + "id": 1734, + "nodeType": "ImportDirective", + "scope": 1843, + "sourceUnit": 1730, + "src": "80:34:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1735, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "456:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 1736, + "nodeType": "InheritanceSpecifier", + "src": "456:7:12" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1737, + "name": "WhitelistAdminRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1729, + "src": "465:18:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistAdminRole_$1729", + "typeString": "contract WhitelistAdminRole" + } + }, + "id": 1738, + "nodeType": "InheritanceSpecifier", + "src": "465:18:12" + } + ], + "contractDependencies": [ + 26, + 1729 + ], + "contractKind": "contract", + "documentation": "@title WhitelistedRole\n@dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a\ncrowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove\nit), and not Whitelisteds themselves.", + "fullyImplemented": true, + "id": 1842, + "linearizedBaseContracts": [ + 1842, + 1729, + 26 + ], + "name": "WhitelistedRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1741, + "libraryName": { + "contractScope": null, + "id": 1739, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1194, + "src": "496:5:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$1194", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "490:27:12", + "typeName": { + "contractScope": null, + "id": 1740, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "506:10:12", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 1745, + "name": "WhitelistedAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 1744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1743, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1745, + "src": "546:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "545:25:12" + }, + "src": "523:48:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 1749, + "name": "WhitelistedRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 1748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1747, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1749, + "src": "601:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "601:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "600:25:12" + }, + "src": "576:50:12" + }, + { + "constant": false, + "id": 1751, + "name": "_whitelisteds", + "nodeType": "VariableDeclaration", + "scope": 1842, + "src": "632:32:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 1750, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1120, + "src": "632:10:12", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1762, + "nodeType": "Block", + "src": "698:126:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1755, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "730:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "730:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1754, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1776, + "src": "716:13:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "716:27:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "57686974656c6973746564526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374656420726f6c65", + "id": 1758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "745:60:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b20a1f25865e8f5d2779ba35c957f8e1d9075dc232d06cbb1a28b870695507ac", + "typeString": "literal_string \"WhitelistedRole: caller does not have the Whitelisted role\"" + }, + "value": "WhitelistedRole: caller does not have the Whitelisted role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b20a1f25865e8f5d2779ba35c957f8e1d9075dc232d06cbb1a28b870695507ac", + "typeString": "literal_string \"WhitelistedRole: caller does not have the Whitelisted role\"" + } + ], + "id": 1753, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "708:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "708:98:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1760, + "nodeType": "ExpressionStatement", + "src": "708:98:12" + }, + { + "id": 1761, + "nodeType": "PlaceholderStatement", + "src": "816:1:12" + } + ] + }, + "documentation": null, + "id": 1763, + "name": "onlyWhitelisted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1752, + "nodeType": "ParameterList", + "parameters": [], + "src": "695:2:12" + }, + "src": "671:153:12", + "visibility": "internal" + }, + { + "body": { + "id": 1775, + "nodeType": "Block", + "src": "897:50:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1772, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1765, + "src": "932:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1770, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1751, + "src": "914:13:12", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1771, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 1193, + "src": "914:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "914:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1769, + "id": 1774, + "nodeType": "Return", + "src": "907:33:12" + } + ] + }, + "documentation": null, + "id": 1776, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1765, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1776, + "src": "853:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "853:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "852:17:12" + }, + "returnParameters": { + "id": 1769, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1768, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1776, + "src": "891:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1767, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "891:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "890:6:12" + }, + "scope": 1842, + "src": "830:117:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1787, + "nodeType": "Block", + "src": "1020:41:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1784, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "1046:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1783, + "name": "_addWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1030:15:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1030:24:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1786, + "nodeType": "ExpressionStatement", + "src": "1030:24:12" + } + ] + }, + "documentation": null, + "id": 1788, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1781, + "modifierName": { + "argumentTypes": null, + "id": 1780, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "1001:18:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1001:18:12" + } + ], + "name": "addWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1778, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1788, + "src": "977:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "977:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "976:17:12" + }, + "returnParameters": { + "id": 1782, + "nodeType": "ParameterList", + "parameters": [], + "src": "1020:0:12" + }, + "scope": 1842, + "src": "953:108:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1799, + "nodeType": "Block", + "src": "1137:44:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1796, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1790, + "src": "1166:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1795, + "name": "_removeWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1841, + "src": "1147:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1147:27:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1798, + "nodeType": "ExpressionStatement", + "src": "1147:27:12" + } + ] + }, + "documentation": null, + "id": 1800, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1793, + "modifierName": { + "argumentTypes": null, + "id": 1792, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "1118:18:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1118:18:12" + } + ], + "name": "removeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1790, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1800, + "src": "1094:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1789, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1094:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1093:17:12" + }, + "returnParameters": { + "id": 1794, + "nodeType": "ParameterList", + "parameters": [], + "src": "1137:0:12" + }, + "scope": 1842, + "src": "1067:114:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1808, + "nodeType": "Block", + "src": "1225:49:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1804, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1254:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1254:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1803, + "name": "_removeWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1841, + "src": "1235:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1235:32:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1807, + "nodeType": "ExpressionStatement", + "src": "1235:32:12" + } + ] + }, + "documentation": null, + "id": 1809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1801, + "nodeType": "ParameterList", + "parameters": [], + "src": "1215:2:12" + }, + "returnParameters": { + "id": 1802, + "nodeType": "ParameterList", + "parameters": [], + "src": "1225:0:12" + }, + "scope": 1842, + "src": "1187:87:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1824, + "nodeType": "Block", + "src": "1331:83:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1817, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1811, + "src": "1359:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1814, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1751, + "src": "1341:13:12", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1816, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 1145, + "src": "1341:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1341:26:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1819, + "nodeType": "ExpressionStatement", + "src": "1341:26:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1821, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1811, + "src": "1399:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1820, + "name": "WhitelistedAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1745, + "src": "1382:16:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1382:25:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1823, + "nodeType": "EmitStatement", + "src": "1377:30:12" + } + ] + }, + "documentation": null, + "id": 1825, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1811, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1825, + "src": "1305:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1810, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1305:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1304:17:12" + }, + "returnParameters": { + "id": 1813, + "nodeType": "ParameterList", + "parameters": [], + "src": "1331:0:12" + }, + "scope": 1842, + "src": "1280:134:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1840, + "nodeType": "Block", + "src": "1474:88:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1833, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1827, + "src": "1505:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1830, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1751, + "src": "1484:13:12", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$1120_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 1832, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 1169, + "src": "1484:20:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1120_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1120_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1484:29:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1835, + "nodeType": "ExpressionStatement", + "src": "1484:29:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1837, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1827, + "src": "1547:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1836, + "name": "WhitelistedRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1749, + "src": "1528:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1528:27:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1839, + "nodeType": "EmitStatement", + "src": "1523:32:12" + } + ] + }, + "documentation": null, + "id": 1841, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1828, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1827, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1841, + "src": "1448:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1448:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1447:17:12" + }, + "returnParameters": { + "id": 1829, + "nodeType": "ParameterList", + "parameters": [], + "src": "1474:0:12" + }, + "scope": 1842, + "src": "1420:142:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1843, + "src": "428:1136:12" + } + ], + "src": "0:1565:12" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b6106191790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ac26022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610869806102596000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80634c5a628c1161005b5780634c5a628c146101665780637362d9c814610170578063bb5f747b146101b4578063d6cd9473146102105761007d565b806310154bad14610082578063291d9549146100c65780633af32abf1461010a575b600080fd5b6100c46004803603602081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061021a565b005b610108600480360360208110156100dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061028b565b005b61014c6004803603602081101561012057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102fc565b604051808215151515815260200191505060405180910390f35b61016e610319565b005b6101b26004803603602081101561018657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061032b565b005b6101f6600480360360208110156101ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061039c565b604051808215151515815260200191505060405180910390f35b6102186103b9565b005b61022a6102256103cb565b61039c565b61027f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806107f56040913960400191505060405180910390fd5b610288816103d3565b50565b61029b6102966103cb565b61039c565b6102f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806107f56040913960400191505060405180910390fd5b6102f98161042d565b50565b600061031282600161048790919063ffffffff16565b9050919050565b6103296103246103cb565b610565565b565b61033b6103366103cb565b61039c565b610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806107f56040913960400191505060405180910390fd5b610399816105bf565b50565b60006103b282600061048790919063ffffffff16565b9050919050565b6103c96103c46103cb565b61042d565b565b600033905090565b6103e781600161061990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6104418160016106f490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561050e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806107d36022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6105798160006106f490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6105d381600061061990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b6106238282610487565b15610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6106fe8282610487565b610753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806107b26021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65a265627a7a72315820349fd369557360c41745c8f644fcf2b7aa5919f94f7b19a6441cd7d42b75492464736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80634c5a628c1161005b5780634c5a628c146101665780637362d9c814610170578063bb5f747b146101b4578063d6cd9473146102105761007d565b806310154bad14610082578063291d9549146100c65780633af32abf1461010a575b600080fd5b6100c46004803603602081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061021a565b005b610108600480360360208110156100dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061028b565b005b61014c6004803603602081101561012057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102fc565b604051808215151515815260200191505060405180910390f35b61016e610319565b005b6101b26004803603602081101561018657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061032b565b005b6101f6600480360360208110156101ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061039c565b604051808215151515815260200191505060405180910390f35b6102186103b9565b005b61022a6102256103cb565b61039c565b61027f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806107f56040913960400191505060405180910390fd5b610288816103d3565b50565b61029b6102966103cb565b61039c565b6102f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806107f56040913960400191505060405180910390fd5b6102f98161042d565b50565b600061031282600161048790919063ffffffff16565b9050919050565b6103296103246103cb565b610565565b565b61033b6103366103cb565b61039c565b610390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806107f56040913960400191505060405180910390fd5b610399816105bf565b50565b60006103b282600061048790919063ffffffff16565b9050919050565b6103c96103c46103cb565b61042d565b565b600033905090565b6103e781600161061990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6104418160016106f490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561050e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806107d36022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6105798160006106f490919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6105d381600061061990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b6106238282610487565b15610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6106fe8282610487565b610753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806107b26021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65a265627a7a72315820349fd369557360c41745c8f644fcf2b7aa5919f94f7b19a6441cd7d42b75492464736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRoleMock.json b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRoleMock.json new file mode 100644 index 0000000..65ba262 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/WhitelistedRoleMock.json @@ -0,0 +1,317 @@ +{ + "fileName": "WhitelistedRoleMock.sol", + "contractName": "WhitelistedRoleMock", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/WhitelistedRole.sol\";\n\ncontract WhitelistedRoleMock is WhitelistedRole {\n function onlyWhitelistedMock() public view onlyWhitelisted {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "contracts/mocks/WhitelistedRoleMock.sol", + "sourceMap": "72:179:111:-;;;476:32:11;495:12;:10;;;:12;;:::i;:::-;476:18;;;:32;;:::i;:::-;72:179:111;;788:96:0;833:15;867:10;860:17;;788:96;:::o;1040:143:11:-;1104:29;1125:7;1104:16;:20;;;;;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;260:175:6:-;337:18;341:4;347:7;337:3;;;:18;;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;779:200::-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;72:179:111:-;;;;;;;", + "deployedSourceMap": "72:179:111:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;72:179:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;953:108:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;953:108:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;1067:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1067:114:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;830:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;830:117:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;941:93:11;;;:::i;:::-;;821:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;821:114:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;126:123:111;;;:::i;:::-;;692::11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;692:123:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1187:87:12;;;:::i;:::-;;953:108;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1030:24:12;1046:7;1030:15;:24::i;:::-;953:108;:::o;1067:114::-;569:30:11;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:27:12;1166:7;1147:18;:27::i;:::-;1067:114;:::o;830:117::-;891:4;914:26;932:7;914:13;:17;;:26;;;;:::i;:::-;907:33;;830:117;;;:::o;941:93:11:-;992:35;1014:12;:10;:12::i;:::-;992:21;:35::i;:::-;941:93::o;821:114::-;569:30;586:12;:10;:12::i;:::-;569:16;:30::i;:::-;561:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;901:27;920:7;901:18;:27::i;:::-;821:114;:::o;126:123:111:-;716:27:12;730:12;:10;:12::i;:::-;716:13;:27::i;:::-;708:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;126:123:111:o;692::11:-;756:4;779:29;800:7;779:16;:20;;:29;;;;:::i;:::-;772:36;;692:123;;;:::o;1187:87:12:-;1235:32;1254:12;:10;:12::i;:::-;1235:18;:32::i;:::-;1187:87::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;1280:134:12:-;1341:26;1359:7;1341:13;:17;;:26;;;;:::i;:::-;1399:7;1382:25;;;;;;;;;;;;1280:134;:::o;1420:142::-;1484:29;1505:7;1484:13;:20;;:29;;;;:::i;:::-;1547:7;1528:27;;;;;;;;;;;;1420:142;:::o;779:200:6:-;851:4;894:1;875:21;;:7;:21;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;952:4;:11;;:20;964:7;952:20;;;;;;;;;;;;;;;;;;;;;;;;;945:27;;779:200;;;;:::o;1189:151:11:-;1256:32;1280:7;1256:16;:23;;:32;;;;:::i;:::-;1325:7;1303:30;;;;;;;;;;;;1189:151;:::o;1040:143::-;1104:29;1125:7;1104:16;:20;;:29;;;;:::i;:::-;1168:7;1148:28;;;;;;;;;;;;1040:143;:::o;260:175:6:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:4;401;:11;;:20;413:7;401:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;260:175;;:::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:5;655:4;:11;;:20;667:7;655:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;510:180;;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedRemoved", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "onlyWhitelistedMock", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/mocks/WhitelistedRoleMock.sol", + "exportedSymbols": { + "WhitelistedRoleMock": [ + 8587 + ] + }, + "id": 8588, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8577, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:111" + }, + { + "absolutePath": "contracts/access/roles/WhitelistedRole.sol", + "file": "../access/roles/WhitelistedRole.sol", + "id": 8578, + "nodeType": "ImportDirective", + "scope": 8588, + "sourceUnit": 1843, + "src": "25:45:111", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 8579, + "name": "WhitelistedRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1842, + "src": "104:15:111", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistedRole_$1842", + "typeString": "contract WhitelistedRole" + } + }, + "id": 8580, + "nodeType": "InheritanceSpecifier", + "src": "104:15:111" + } + ], + "contractDependencies": [ + 26, + 1729, + 1842 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 8587, + "linearizedBaseContracts": [ + 8587, + 1842, + 1729, + 26 + ], + "name": "WhitelistedRoleMock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 8585, + "nodeType": "Block", + "src": "185:64:111", + "statements": [] + }, + "documentation": null, + "id": 8586, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 8583, + "modifierName": { + "argumentTypes": null, + "id": 8582, + "name": "onlyWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1763, + "src": "169:15:111", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "169:15:111" + } + ], + "name": "onlyWhitelistedMock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8581, + "nodeType": "ParameterList", + "parameters": [], + "src": "154:2:111" + }, + "returnParameters": { + "id": 8584, + "nodeType": "ParameterList", + "parameters": [], + "src": "185:0:111" + }, + "scope": 8587, + "src": "126:123:111", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 8588, + "src": "72:179:111" + } + ], + "src": "0:252:111" + }, + "bytecode": "0x608060405261002061001561002560201b60201c565b61002d60201b60201c565b61024a565b600033905090565b61004581600061008b60201b6106951790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b61009b828261016c60201b60201c565b1561010e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610b786022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61091f806102596000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637362d9c81161005b5780637362d9c81461017b5780637491c97e146101bf578063bb5f747b146101c9578063d6cd94731461022557610088565b806310154bad1461008d578063291d9549146100d15780633af32abf146101155780634c5a628c14610171575b600080fd5b6100cf600480360360208110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061022f565b005b610113600480360360208110156100e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102a0565b005b6101576004803603602081101561012b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610311565b604051808215151515815260200191505060405180910390f35b61017961032e565b005b6101bd6004803603602081101561019157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610340565b005b6101c76103b1565b005b61020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610418565b604051808215151515815260200191505060405180910390f35b61022d610435565b005b61023f61023a610447565b610418565b610294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806108716040913960400191505060405180910390fd5b61029d8161044f565b50565b6102b06102ab610447565b610418565b610305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806108716040913960400191505060405180910390fd5b61030e816104a9565b50565b600061032782600161050390919063ffffffff16565b9050919050565b61033e610339610447565b6105e1565b565b61035061034b610447565b610418565b6103a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806108716040913960400191505060405180910390fd5b6103ae8161063b565b50565b6103c16103bc610447565b610311565b610416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806108b1603a913960400191505060405180910390fd5b565b600061042e82600061050390919063ffffffff16565b9050919050565b610445610440610447565b6104a9565b565b600033905090565b61046381600161069590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6104bd81600161077090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061084f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6105f581600061077090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b61064f81600061069590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b61069f8282610503565b15610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61077a8282610503565b6107cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061082e6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6557686974656c6973746564526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374656420726f6c65a265627a7a72315820f3aa91d997be7f478a3065be4ce4525ebc13d76168cac1e63aa99f3b27b1735d64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637362d9c81161005b5780637362d9c81461017b5780637491c97e146101bf578063bb5f747b146101c9578063d6cd94731461022557610088565b806310154bad1461008d578063291d9549146100d15780633af32abf146101155780634c5a628c14610171575b600080fd5b6100cf600480360360208110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061022f565b005b610113600480360360208110156100e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102a0565b005b6101576004803603602081101561012b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610311565b604051808215151515815260200191505060405180910390f35b61017961032e565b005b6101bd6004803603602081101561019157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610340565b005b6101c76103b1565b005b61020b600480360360208110156101df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610418565b604051808215151515815260200191505060405180910390f35b61022d610435565b005b61023f61023a610447565b610418565b610294576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806108716040913960400191505060405180910390fd5b61029d8161044f565b50565b6102b06102ab610447565b610418565b610305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806108716040913960400191505060405180910390fd5b61030e816104a9565b50565b600061032782600161050390919063ffffffff16565b9050919050565b61033e610339610447565b6105e1565b565b61035061034b610447565b610418565b6103a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806108716040913960400191505060405180910390fd5b6103ae8161063b565b50565b6103c16103bc610447565b610311565b610416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806108b1603a913960400191505060405180910390fd5b565b600061042e82600061050390919063ffffffff16565b9050919050565b610445610440610447565b6104a9565b565b600033905090565b61046381600161069590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6104bd81600161077090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061084f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6105f581600061077090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b61064f81600061069590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b61069f8282610503565b15610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61077a8282610503565b6107cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061082e6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6557686974656c6973746564526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374656420726f6c65a265627a7a72315820f3aa91d997be7f478a3065be4ce4525ebc13d76168cac1e63aa99f3b27b1735d64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20Owned.json b/node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20Owned.json new file mode 100644 index 0000000..6c5ae40 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20Owned.json @@ -0,0 +1,4850 @@ +{ + "fileName": "GSNRecipientERC20Fee.sol", + "contractName": "__unstable__ERC20Owned", + "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport \"./GSNRecipient.sol\";\nimport \"../math/SafeMath.sol\";\nimport \"../access/Ownable.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../token/ERC20/ERC20.sol\";\n\n/**\n * @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20\n * token, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the\n * recipient. This means that the token is essentially pegged to the value of Ether.\n *\n * The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token\n * whose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the\n * internal {_mint} function.\n */\ncontract GSNRecipientERC20Fee is GSNRecipient {\n using SafeERC20 for __unstable__ERC20Owned;\n using SafeMath for uint256;\n\n enum GSNRecipientERC20FeeErrorCodes {\n INSUFFICIENT_BALANCE\n }\n\n __unstable__ERC20Owned private _token;\n\n /**\n * @dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18.\n */\n constructor(string memory name, string memory symbol) public {\n _token = new __unstable__ERC20Owned(name, symbol);\n }\n\n /**\n * @dev Returns the gas payment token.\n */\n function token() public view returns (IERC20) {\n return IERC20(_token);\n }\n\n /**\n * @dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _token.mint(account, amount);\n }\n\n /**\n * @dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN.\n */\n function acceptRelayedCall(\n address,\n address from,\n bytes memory,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256,\n uint256,\n bytes memory,\n uint256 maxPossibleCharge\n )\n public\n view\n virtual\n override\n returns (uint256, bytes memory)\n {\n if (_token.balanceOf(from) < maxPossibleCharge) {\n return _rejectRelayedCall(uint256(GSNRecipientERC20FeeErrorCodes.INSUFFICIENT_BALANCE));\n }\n\n return _approveRelayedCall(abi.encode(from, maxPossibleCharge, transactionFee, gasPrice));\n }\n\n /**\n * @dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and\n * fee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the\n * actual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder\n * is returned to the user in {_postRelayedCall}.\n */\n function _preRelayedCall(bytes memory context) internal virtual override returns (bytes32) {\n (address from, uint256 maxPossibleCharge) = abi.decode(context, (address, uint256));\n\n // The maximum token charge is pre-charged from the user\n _token.safeTransferFrom(from, address(this), maxPossibleCharge);\n }\n\n /**\n * @dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known.\n */\n function _postRelayedCall(bytes memory context, bool, uint256 actualCharge, bytes32) internal virtual override {\n (address from, uint256 maxPossibleCharge, uint256 transactionFee, uint256 gasPrice) =\n abi.decode(context, (address, uint256, uint256, uint256));\n\n // actualCharge is an _estimated_ charge, which assumes postRelayedCall will use all available gas.\n // This implementation's gas cost can be roughly estimated as 10k gas, for the two SSTORE operations in an\n // ERC20 transfer.\n uint256 overestimation = _computeCharge(_POST_RELAYED_CALL_MAX_GAS.sub(10000), gasPrice, transactionFee);\n actualCharge = actualCharge.sub(overestimation);\n\n // After the relayed call has been executed and the actual charge estimated, the excess pre-charge is returned\n _token.safeTransfer(from, maxPossibleCharge.sub(actualCharge));\n }\n}\n\n/**\n * @title __unstable__ERC20Owned\n * @dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive\n * anyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used\n * outside of this context.\n */\n// solhint-disable-next-line contract-name-camelcase\ncontract __unstable__ERC20Owned is ERC20, Ownable {\n uint256 private constant _UINT256_MAX = 2**256 - 1;\n\n constructor(string memory name, string memory symbol) public ERC20(name, symbol) { }\n\n // The owner (GSNRecipientERC20Fee) can mint tokens\n function mint(address account, uint256 amount) public onlyOwner {\n _mint(account, amount);\n }\n\n // The owner has 'infinite' allowance for all token holders\n function allowance(address tokenOwner, address spender) public view override returns (uint256) {\n if (spender == owner()) {\n return _UINT256_MAX;\n } else {\n return super.allowance(tokenOwner, spender);\n }\n }\n\n // Allowance for the owner cannot be changed (it is always 'infinite')\n function _approve(address tokenOwner, address spender, uint256 value) internal override {\n if (spender == owner()) {\n return;\n } else {\n super._approve(tokenOwner, spender, value);\n }\n }\n\n function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\n if (recipient == owner()) {\n _transfer(sender, recipient, amount);\n return true;\n } else {\n return super.transferFrom(sender, recipient, amount);\n }\n }\n}\n", + "sourcePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "sourceMap": "4742:1321:2:-:0;;;4855:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:4;4928:6;2093:4:84;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;4855:84:2;;4742:1321;;590:104:0;643:15;677:10;670:17;;590:104;:::o;4742:1321:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "4742:1321:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4255:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3262:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5746:315:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3121:81:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5593:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5001:103:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3418:117:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1689:145:7;;;:::i;:::-;;1066:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2413:85:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6295:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3738:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5174:253:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2219:81:84;2256:13;2288:5;2281:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:81;:::o;4255:166::-;4338:4;4354:39;4363:12;:10;:12::i;:::-;4377:7;4386:6;4354:8;:39::i;:::-;4410:4;4403:11;;4255:166;;;;:::o;3262:98::-;3315:7;3341:12;;3334:19;;3262:98;:::o;5746:315:2:-;5844:4;5877:7;:5;:7::i;:::-;5864:20;;:9;:20;;;5860:195;;;5900:36;5910:6;5918:9;5929:6;5900:9;:36::i;:::-;5957:4;5950:11;;;;5860:195;5999:45;6018:6;6026:9;6037:6;5999:18;:45::i;:::-;5992:52;;5746:315;;;;;;:::o;3121:81:84:-;3162:5;3186:9;;;;;;;;;;;3179:16;;3121:81;:::o;5593:215::-;5681:4;5697:83;5706:12;:10;:12::i;:::-;5720:7;5729:50;5768:10;5729:11;:25;5741:12;:10;:12::i;:::-;5729:25;;;;;;;;;;;;;;;:34;5755:7;5729:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5697:8;:83::i;:::-;5797:4;5790:11;;5593:215;;;;:::o;5001:103:2:-;1280:12:7;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5075:22:2::1;5081:7;5090:6;5075:5;:22::i;:::-;5001:103:::0;;:::o;3418:117:84:-;3484:7;3510:9;:18;3520:7;3510:18;;;;;;;;;;;;;;;;3503:25;;3418:117;;;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;;;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6;;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;1066:77::-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;2413:85:84:-;2452:13;2484:7;2477:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:85;:::o;6295:266::-;6388:4;6404:129;6413:12;:10;:12::i;:::-;6427:7;6436:96;6475:15;6436:96;;;;;;;;;;;;;;;;;:11;:25;6448:12;:10;:12::i;:::-;6436:25;;;;;;;;;;;;;;;:34;6462:7;6436:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6404:8;:129::i;:::-;6550:4;6543:11;;6295:266;;;;:::o;3738:172::-;3824:4;3840:42;3850:12;:10;:12::i;:::-;3864:9;3875:6;3840:9;:42::i;:::-;3899:4;3892:11;;3738:172;;;;:::o;5174:253:2:-;5260:7;5294;:5;:7::i;:::-;5283:18;;:7;:18;;;5279:142;;;4838:10;5317:19;;;;5279:142;5374:36;5390:10;5402:7;5374:15;:36::i;:::-;5367:43;;5174:253;;;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;;;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;;:17;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;5508:232:2:-;5621:7;:5;:7::i;:::-;5610:18;;:7;:18;;;5606:128;;;5644:7;;5606:128;5681:42;5696:10;5708:7;5717:5;5681:14;:42::i;:::-;5508:232;;;;:::o;7035:530:84:-;7158:1;7140:20;;:6;:20;;;;7132:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7241:1;7220:23;;:9;:23;;;;7212:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:47;7315:6;7323:9;7334:6;7294:20;:47::i;:::-;7372:71;7394:6;7372:71;;;;;;;;;;;;;;;;;:9;:17;7382:6;7372:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7352:9;:17;7362:6;7352:17;;;;;;;;;;;;;;;:91;;;;7476:32;7501:6;7476:9;:20;7486:9;7476:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7453:9;:20;7463:9;7453:20;;;;;;;;;;;;;;;:55;;;;7540:9;7523:35;;7532:6;7523:35;;;7551:6;7523:35;;;;;;;;;;;;;;;;;;7035:530;;;:::o;4881:317::-;4987:4;5003:36;5013:6;5021:9;5032:6;5003:9;:36::i;:::-;5049:121;5058:6;5066:12;:10;:12::i;:::-;5080:89;5118:6;5080:89;;;;;;;;;;;;;;;;;:11;:19;5092:6;5080:19;;;;;;;;;;;;;;;:33;5100:12;:10;:12::i;:::-;5080:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5049:8;:121::i;:::-;5187:4;5180:11;;4881:317;;;;;:::o;874:176:17:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;7835:370:84:-;7937:1;7918:21;;:7;:21;;;;7910:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7986:49;8015:1;8019:7;8028:6;7986:20;:49::i;:::-;8061:24;8078:6;8061:12;;:16;;:24;;;;:::i;:::-;8046:12;:39;;;;8116:30;8139:6;8116:9;:18;8126:7;8116:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8095:9;:18;8105:7;8095:18;;;;;;;;;;;;;;;:51;;;;8182:7;8161:37;;8178:1;8161:37;;;8191:6;8161:37;;;;;;;;;;;;;;;;;;7835:370;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;3968:149:84:-;4057:7;4083:11;:18;4095:5;4083:18;;;;;;;;;;;;;;;:27;4102:7;4083:27;;;;;;;;;;;;;;;;4076:34;;3968:149;;;;:::o;9359:340::-;9477:1;9460:19;;:5;:19;;;;9452:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9557:1;9538:21;;:7;:21;;;;9530:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9639:6;9609:11;:18;9621:5;9609:18;;;;;;;;;;;;;;;:27;9628:7;9609:27;;;;;;;;;;;;;;;:36;;;;9676:7;9660:32;;9669:5;9660:32;;;9685:6;9660:32;;;;;;;;;;;;;;;;;;9359:340;;;:::o;10697:92::-;;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "exportedSymbols": { + "GSNRecipientERC20Fee": [ + 593 + ], + "__unstable__ERC20Owned": [ + 721 + ] + }, + "id": 722, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 377, + "literals": [ + "solidity", + "^", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:23:2" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "./GSNRecipient.sol", + "id": 378, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 376, + "src": "58:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 379, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 2422, + "src": "87:30:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/access/Ownable.sol", + "file": "../access/Ownable.sol", + "id": 380, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 1577, + "src": "118:31:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 381, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 9987, + "src": "150:38:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 382, + "nodeType": "ImportDirective", + "scope": 722, + "sourceUnit": 9195, + "src": "189:34:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 384, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 375, + "src": "863:12:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$375", + "typeString": "contract GSNRecipient" + } + }, + "id": 385, + "nodeType": "InheritanceSpecifier", + "src": "863:12:2" + } + ], + "contractDependencies": [ + 22, + 375, + 721, + 1184 + ], + "contractKind": "contract", + "documentation": { + "id": 383, + "nodeType": "StructuredDocumentation", + "src": "225:604:2", + "text": " @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20\n token, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the\n recipient. This means that the token is essentially pegged to the value of Ether.\n The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token\n whose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the\n internal {_mint} function." + }, + "fullyImplemented": true, + "id": 593, + "linearizedBaseContracts": [ + 593, + 375, + 22, + 1184 + ], + "name": "GSNRecipientERC20Fee", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 388, + "libraryName": { + "contractScope": null, + "id": 386, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9986, + "src": "888:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$9986", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "882:43:2", + "typeName": { + "contractScope": null, + "id": 387, + "name": "__unstable__ERC20Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 721, + "src": "902:22:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + } + }, + { + "id": 391, + "libraryName": { + "contractScope": null, + "id": 389, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2421, + "src": "936:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$2421", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "930:27:2", + "typeName": { + "id": 390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes", + "id": 393, + "members": [ + { + "id": 392, + "name": "INSUFFICIENT_BALANCE", + "nodeType": "EnumValue", + "src": "1009:20:2" + } + ], + "name": "GSNRecipientERC20FeeErrorCodes", + "nodeType": "EnumDefinition", + "src": "963:72:2" + }, + { + "constant": false, + "id": 395, + "mutability": "mutable", + "name": "_token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 593, + "src": "1041:37:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + }, + "typeName": { + "contractScope": null, + "id": 394, + "name": "__unstable__ERC20Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 721, + "src": "1041:22:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 411, + "nodeType": "Block", + "src": "1314:66:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 403, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "1324:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 406, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 398, + "src": "1360:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 407, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "1366:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1333:26:2", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$___unstable__ERC20Owned_$721_$", + "typeString": "function (string memory,string memory) returns (contract __unstable__ERC20Owned)" + }, + "typeName": { + "contractScope": null, + "id": 404, + "name": "__unstable__ERC20Owned", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 721, + "src": "1337:22:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + } + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1333:40:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "src": "1324:49:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 410, + "nodeType": "ExpressionStatement", + "src": "1324:49:2" + } + ] + }, + "documentation": { + "id": 396, + "nodeType": "StructuredDocumentation", + "src": "1085:163:2", + "text": " @dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18." + }, + "id": 412, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 398, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 412, + "src": "1265:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 397, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1265:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 400, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 412, + "src": "1285:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 399, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1285:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1264:42:2" + }, + "returnParameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [], + "src": "1314:0:2" + }, + "scope": 593, + "src": "1253:127:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 422, + "nodeType": "Block", + "src": "1491:38:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 419, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "1515:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + ], + "id": 418, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9773, + "src": "1508:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$9773_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1508:14:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 417, + "id": 421, + "nodeType": "Return", + "src": "1501:21:2" + } + ] + }, + "documentation": { + "id": 413, + "nodeType": "StructuredDocumentation", + "src": "1386:54:2", + "text": " @dev Returns the gas payment token." + }, + "functionSelector": "fc0c546a", + "id": 423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [], + "src": "1459:2:2" + }, + "returnParameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 423, + "src": "1483:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 415, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9773, + "src": "1483:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$9773", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1482:8:2" + }, + "scope": 593, + "src": "1445:84:2", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 438, + "nodeType": "Block", + "src": "1786:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 434, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "1808:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 435, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "1817:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 431, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "1796:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 632, + "src": "1796:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1796:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 437, + "nodeType": "ExpressionStatement", + "src": "1796:28:2" + } + ] + }, + "documentation": { + "id": 424, + "nodeType": "StructuredDocumentation", + "src": "1535:181:2", + "text": " @dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms." + }, + "id": 439, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 426, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 439, + "src": "1736:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1736:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 428, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 439, + "src": "1753:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1753:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1735:33:2" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [], + "src": "1786:0:2" + }, + "scope": 593, + "src": "1721:110:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1163 + ], + "body": { + "id": 492, + "nodeType": "Block", + "src": "2322:276:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 468, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "2353:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 466, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "2336:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 8794, + "src": "2336:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2336:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 470, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "2361:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2336:42:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 481, + "nodeType": "IfStatement", + "src": "2332:160:2", + "trueBody": { + "id": 480, + "nodeType": "Block", + "src": "2380:112:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 475, + "name": "GSNRecipientERC20FeeErrorCodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 393, + "src": "2428:30:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_GSNRecipientERC20FeeErrorCodes_$393_$", + "typeString": "type(enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes)" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "INSUFFICIENT_BALANCE", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2428:51:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_GSNRecipientERC20FeeErrorCodes_$393", + "typeString": "enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_GSNRecipientERC20FeeErrorCodes_$393", + "typeString": "enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes" + } + ], + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2420:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2420:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2420:60:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 472, + "name": "_rejectRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "2401:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256,bytes memory)" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2401:80:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 465, + "id": 479, + "nodeType": "Return", + "src": "2394:87:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 485, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "2540:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 486, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "2546:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 487, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "2565:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 488, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 450, + "src": "2581:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 483, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2529:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2529:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2529:61:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 482, + "name": "_approveRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 254, + 269 + ], + "referencedDeclaration": 269, + "src": "2509:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (uint256,bytes memory)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2509:82:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 465, + "id": 491, + "nodeType": "Return", + "src": "2502:89:2" + } + ] + }, + "documentation": { + "id": 440, + "nodeType": "StructuredDocumentation", + "src": "1837:132:2", + "text": " @dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN." + }, + "functionSelector": "83947ea0", + "id": 493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 460, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2269:8:2" + }, + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 442, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2010:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 441, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2010:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 444, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2027:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2027:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2049:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 445, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2049:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 448, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2071:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 447, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2071:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 450, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2103:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2103:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 452, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2129:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2129:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 454, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2146:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2146:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 456, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2163:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 455, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2163:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2185:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2185:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2000:216:2" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2295:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 461, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2295:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 493, + "src": "2304:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 463, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2304:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2294:23:2" + }, + "scope": 593, + "src": "1974:624:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 199 + ], + "body": { + "id": 527, + "nodeType": "Block", + "src": "3118:239:2", + "statements": [ + { + "assignments": [ + 503, + 505 + ], + "declarations": [ + { + "constant": false, + "id": 503, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 527, + "src": "3129:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 502, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3129:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 505, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 527, + "src": "3143:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3143:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 515, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 508, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "3183:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3193:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3193:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3202:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3202:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 513, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3192:18:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256))" + } + ], + "expression": { + "argumentTypes": null, + "id": 506, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3172:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3172:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3172:39:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$", + "typeString": "tuple(address payable,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3128:83:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 519, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "3311:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 522, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3325:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$593", + "typeString": "contract GSNRecipientERC20Fee" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$593", + "typeString": "contract GSNRecipientERC20Fee" + } + ], + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3317:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 520, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3317:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3317:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 505, + "src": "3332:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 516, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "3287:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 9832, + "src": "3287:23:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$9773_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3287:63:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 526, + "nodeType": "ExpressionStatement", + "src": "3287:63:2" + } + ] + }, + "documentation": { + "id": 494, + "nodeType": "StructuredDocumentation", + "src": "2604:418:2", + "text": " @dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and\n fee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the\n actual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder\n is returned to the user in {_postRelayedCall}." + }, + "id": 528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 498, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3091:8:2" + }, + "parameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 528, + "src": "3052:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 495, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3052:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3051:22:2" + }, + "returnParameters": { + "id": 501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 500, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 528, + "src": "3109:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 499, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3109:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3108:9:2" + }, + "scope": 593, + "src": "3027:330:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 241 + ], + "body": { + "id": 591, + "nodeType": "Block", + "src": "3609:786:2", + "statements": [ + { + "assignments": [ + 542, + 544, + 546, + 548 + ], + "declarations": [ + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3620:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3620:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3634:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3634:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3661:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3661:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "3685:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3685:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 562, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 551, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 531, + "src": "3728:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3738:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3738:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3747:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3747:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3756:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3756:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + { + "argumentTypes": null, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3765:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3765:7:2", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 560, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3737:36:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256))" + } + ], + "expression": { + "argumentTypes": null, + "id": 549, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3717:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3717:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3717:57:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(address payable,uint256,uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3619:155:2" + }, + { + "assignments": [ + 564 + ], + "declarations": [ + { + "constant": false, + "id": 564, + "mutability": "mutable", + "name": "overestimation", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 591, + "src": "4035:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4035:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 573, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4106:5:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + ], + "expression": { + "argumentTypes": null, + "id": 566, + "name": "_POST_RELAYED_CALL_MAX_GAS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "4075:26:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4075:30:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4075:37:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 570, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "4114:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 571, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "4124:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 565, + "name": "_computeCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "4060:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4060:79:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4035:104:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 574, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4149:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "overestimation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "4181:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 575, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4164:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4164:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4164:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4149:47:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 580, + "nodeType": "ExpressionStatement", + "src": "4149:47:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 584, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 542, + "src": "4346:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 587, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4374:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 585, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 544, + "src": "4352:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 2271, + "src": "4352:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4352:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 581, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "4326:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20Owned_$721", + "typeString": "contract __unstable__ERC20Owned" + } + }, + "id": 583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 9807, + "src": "4326:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$9773_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$9773_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4326:62:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "4326:62:2" + } + ] + }, + "documentation": { + "id": 529, + "nodeType": "StructuredDocumentation", + "src": "3363:130:2", + "text": " @dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known." + }, + "id": 592, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postRelayedCall", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 539, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3600:8:2" + }, + "parameters": { + "id": 538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "context", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3524:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 530, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3524:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3546:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 532, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3546:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 535, + "mutability": "mutable", + "name": "actualCharge", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3552:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3552:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 537, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 592, + "src": "3574:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3574:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3523:59:2" + }, + "returnParameters": { + "id": 540, + "nodeType": "ParameterList", + "parameters": [], + "src": "3609:0:2" + }, + "scope": 593, + "src": "3498:897:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 722, + "src": "830:3567:2" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 595, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9194, + "src": "4777:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9194", + "typeString": "contract ERC20" + } + }, + "id": 596, + "nodeType": "InheritanceSpecifier", + "src": "4777:5:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 597, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1576, + "src": "4784:7:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$1576", + "typeString": "contract Ownable" + } + }, + "id": 598, + "nodeType": "InheritanceSpecifier", + "src": "4784:7:2" + } + ], + "contractDependencies": [ + 22, + 1576, + 9194, + 9773 + ], + "contractKind": "contract", + "documentation": { + "id": 594, + "nodeType": "StructuredDocumentation", + "src": "4399:289:2", + "text": " @title __unstable__ERC20Owned\n @dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive\n anyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used\n outside of this context." + }, + "fullyImplemented": true, + "id": 721, + "linearizedBaseContracts": [ + 721, + 1576, + 9194, + 9773, + 22 + ], + "name": "__unstable__ERC20Owned", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 605, + "mutability": "constant", + "name": "_UINT256_MAX", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 721, + "src": "4798:50:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4798:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9936" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4838:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323536", + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4841:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "4838:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9936" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4847:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4838:10:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 616, + "nodeType": "Block", + "src": "4936:3:2", + "statements": [] + }, + "documentation": null, + "id": 617, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 612, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "4922:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 613, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 609, + "src": "4928:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 614, + "modifierName": { + "argumentTypes": null, + "id": 611, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9194, + "src": "4916:5:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$9194_$", + "typeString": "type(contract ERC20)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4916:19:2" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 607, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 617, + "src": "4867:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 606, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4867:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 609, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 617, + "src": "4887:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 608, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4887:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4866:42:2" + }, + "returnParameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [], + "src": "4936:0:2" + }, + "scope": 721, + "src": "4855:84:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 631, + "nodeType": "Block", + "src": "5065:39:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 627, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 619, + "src": "5081:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 628, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "5090:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 626, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9070, + "src": "5075:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5075:22:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "5075:22:2" + } + ] + }, + "documentation": null, + "functionSelector": "40c10f19", + "id": 632, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 624, + "modifierName": { + "argumentTypes": null, + "id": 623, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1525, + "src": "5055:9:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5055:9:2" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 632, + "src": "5015:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5015:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 621, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 632, + "src": "5032:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5032:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5014:33:2" + }, + "returnParameters": { + "id": 625, + "nodeType": "ParameterList", + "parameters": [], + "src": "5065:0:2" + }, + "scope": 721, + "src": "5001:103:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8833 + ], + "body": { + "id": 657, + "nodeType": "Block", + "src": "5269:158:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 642, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "5283:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 643, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "5294:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5294:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5283:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 655, + "nodeType": "Block", + "src": "5353:68:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 651, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "5390:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 652, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "5402:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 649, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5374:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20Owned_$721", + "typeString": "contract super __unstable__ERC20Owned" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 8833, + "src": "5374:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5374:36:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 641, + "id": 654, + "nodeType": "Return", + "src": "5367:43:2" + } + ] + }, + "id": 656, + "nodeType": "IfStatement", + "src": "5279:142:2", + "trueBody": { + "id": 648, + "nodeType": "Block", + "src": "5303:44:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 646, + "name": "_UINT256_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "5324:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 641, + "id": 647, + "nodeType": "Return", + "src": "5317:19:2" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 658, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 638, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5242:8:2" + }, + "parameters": { + "id": 637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 634, + "mutability": "mutable", + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 658, + "src": "5193:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5193:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 636, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 658, + "src": "5213:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 635, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5213:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5192:37:2" + }, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 658, + "src": "5260:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5260:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5259:9:2" + }, + "scope": 721, + "src": "5174:253:2", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 9171 + ], + "body": { + "id": 684, + "nodeType": "Block", + "src": "5596:144:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 668, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "5610:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 669, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "5621:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5621:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5610:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 682, + "nodeType": "Block", + "src": "5667:67:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 677, + "name": "tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "5696:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 678, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "5708:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 679, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 664, + "src": "5717:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 674, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5681:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20Owned_$721", + "typeString": "contract super __unstable__ERC20Owned" + } + }, + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 9171, + "src": "5681:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5681:42:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "5681:42:2" + } + ] + }, + "id": 683, + "nodeType": "IfStatement", + "src": "5606:128:2", + "trueBody": { + "id": 673, + "nodeType": "Block", + "src": "5630:31:2", + "statements": [ + { + "expression": null, + "functionReturnParameters": 667, + "id": 672, + "nodeType": "Return", + "src": "5644:7:2" + } + ] + } + } + ] + }, + "documentation": null, + "id": 685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 666, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5587:8:2" + }, + "parameters": { + "id": 665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 660, + "mutability": "mutable", + "name": "tokenOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 685, + "src": "5526:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 659, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5526:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 662, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 685, + "src": "5546:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5546:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 664, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 685, + "src": "5563:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 663, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5563:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5525:52:2" + }, + "returnParameters": { + "id": 667, + "nodeType": "ParameterList", + "parameters": [], + "src": "5596:0:2" + }, + "scope": 721, + "src": "5508:232:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 8892 + ], + "body": { + "id": 719, + "nodeType": "Block", + "src": "5850:211:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 697, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "5864:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 698, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "5877:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5877:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5864:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 717, + "nodeType": "Block", + "src": "5978:77:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 712, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "6018:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 713, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "6026:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "6037:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 710, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "5999:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20Owned_$721", + "typeString": "contract super __unstable__ERC20Owned" + } + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8892, + "src": "5999:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5999:45:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 696, + "id": 716, + "nodeType": "Return", + "src": "5992:52:2" + } + ] + }, + "id": 718, + "nodeType": "IfStatement", + "src": "5860:195:2", + "trueBody": { + "id": 709, + "nodeType": "Block", + "src": "5886:86:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 702, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "5910:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 703, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "5918:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 704, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "5929:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 701, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9015, + "src": "5900:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5900:36:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 706, + "nodeType": "ExpressionStatement", + "src": "5900:36:2" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5957:4:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 696, + "id": 708, + "nodeType": "Return", + "src": "5950:11:2" + } + ] + } + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 720, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 693, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5826:8:2" + }, + "parameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 687, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5768:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5768:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5784:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5784:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 691, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5803:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5803:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5767:51:2" + }, + "returnParameters": { + "id": 696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 695, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 720, + "src": "5844:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 694, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5844:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5843:6:2" + }, + "scope": 721, + "src": "5746:315:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 722, + "src": "4742:1321:2" + } + ], + "src": "33:6031:2" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001d6338038062001d63833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001cf929190620002c8565b508060049080519060200190620001e8929190620002c8565b506012600560006101000a81548160ff021916908360ff1602179055505050600062000219620002c060201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505062000377565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030b57805160ff19168380011785556200033c565b828001600101855582156200033c579182015b828111156200033b5782518255916020019190600101906200031e565b5b5090506200034b91906200034f565b5090565b6200037491905b808211156200037057600081600090555060010162000356565b5090565b90565b6119dc80620003876000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d71461048e578063a9059cbb146104f4578063dd62ed3e1461055a578063f2fde38b146105d2576100f5565b806370a082311461035f578063715018a6146103b75780638da5cb5b146103c157806395d89b411461040b576100f5565b806323b872dd116100d357806323b872dd14610201578063313ce5671461028757806339509351146102ab57806340c10f1914610311576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b610102610616565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106b8565b604051808215151515815260200191505060405180910390f35b6101eb6106d6565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e0565b604051808215151515815260200191505060405180910390f35b61028f610746565b604051808260ff1660ff16815260200191505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b61035d6004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610810565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e8565b6040518082815260200191505060405180910390f35b6103bf610930565b005b6103c9610abb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610413610ae5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610453578082015181840152602081019050610438565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104da600480360360408110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b87565b604051808215151515815260200191505060405180910390f35b6105406004803603604081101561050a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c54565b604051808215151515815260200191505060405180910390f35b6105bc6004803603604081101561057057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b6040518082815260200191505060405180910390f35b610614600480360360208110156105e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cea565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106cc6106c5610efa565b8484610f02565b6001905092915050565b6000600254905090565b60006106ea610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561073157610728848484610f53565b6001905061073f565b61073c848484611214565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b600061080661076a610efa565b84610801856001600061077b610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b610f02565b6001905092915050565b610818610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108e48282611375565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610938610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b6000610c4a610b94610efa565b84610c45856040518060600160405280602581526020016119826025913960016000610bbe610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b6001905092915050565b6000610c68610c61610efa565b8484610f53565b6001905092915050565b6000610c7c610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610ce4565b610ce183836115fc565b90505b92915050565b610cf2610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118a36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610f0a610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4257610f4e565b610f4d838383611683565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119396025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806118806023913960400191505060405180910390fd5b61106a83838361187a565b6110d5816040518060600160405280602681526020016118eb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611168816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611221848484610f53565b6112e28461122d610efa565b6112dd8560405180606001604052806028815260200161191160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611293610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b600190509392505050565b60008082840190508381101561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6114246000838361187a565b611439816002546112ed90919063ffffffff16565b600281905550611490816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008383111582906115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115ae578082015181840152602081019050611593565b50505050905090810190601f1680156115db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061195e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118c96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209155b14b60d6899fd2d3449b3391db9f1827d6fc7c2e644ba621d72971ae8fca64736f6c634300060a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d71461048e578063a9059cbb146104f4578063dd62ed3e1461055a578063f2fde38b146105d2576100f5565b806370a082311461035f578063715018a6146103b75780638da5cb5b146103c157806395d89b411461040b576100f5565b806323b872dd116100d357806323b872dd14610201578063313ce5671461028757806339509351146102ab57806340c10f1914610311576100f5565b806306fdde03146100fa578063095ea7b31461017d57806318160ddd146101e3575b600080fd5b610102610616565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610142578082015181840152602081019050610127565b50505050905090810190601f16801561016f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c96004803603604081101561019357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106b8565b604051808215151515815260200191505060405180910390f35b6101eb6106d6565b6040518082815260200191505060405180910390f35b61026d6004803603606081101561021757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e0565b604051808215151515815260200191505060405180910390f35b61028f610746565b604051808260ff1660ff16815260200191505060405180910390f35b6102f7600480360360408110156102c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061075d565b604051808215151515815260200191505060405180910390f35b61035d6004803603604081101561032757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610810565b005b6103a16004803603602081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e8565b6040518082815260200191505060405180910390f35b6103bf610930565b005b6103c9610abb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610413610ae5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610453578082015181840152602081019050610438565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104da600480360360408110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b87565b604051808215151515815260200191505060405180910390f35b6105406004803603604081101561050a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c54565b604051808215151515815260200191505060405180910390f35b6105bc6004803603604081101561057057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b6040518082815260200191505060405180910390f35b610614600480360360208110156105e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cea565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106ae5780601f10610683576101008083540402835291602001916106ae565b820191906000526020600020905b81548152906001019060200180831161069157829003601f168201915b5050505050905090565b60006106cc6106c5610efa565b8484610f02565b6001905092915050565b6000600254905090565b60006106ea610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561073157610728848484610f53565b6001905061073f565b61073c848484611214565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b600061080661076a610efa565b84610801856001600061077b610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b610f02565b6001905092915050565b610818610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108e48282611375565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610938610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7d5780601f10610b5257610100808354040283529160200191610b7d565b820191906000526020600020905b815481529060010190602001808311610b6057829003601f168201915b5050505050905090565b6000610c4a610b94610efa565b84610c45856040518060600160405280602581526020016119826025913960016000610bbe610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b6001905092915050565b6000610c68610c61610efa565b8484610f53565b6001905092915050565b6000610c7c610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610ce4565b610ce183836115fc565b90505b92915050565b610cf2610efa565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118a36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610f0a610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4257610f4e565b610f4d838383611683565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119396025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806118806023913960400191505060405180910390fd5b61106a83838361187a565b6110d5816040518060600160405280602681526020016118eb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611168816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611221848484610f53565b6112e28461122d610efa565b6112dd8560405180606001604052806028815260200161191160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611293610efa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461153c9092919063ffffffff16565b610f02565b600190509392505050565b60008082840190508381101561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6114246000838361187a565b611439816002546112ed90919063ffffffff16565b600281905550611490816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008383111582906115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115ae578082015181840152602081019050611593565b50505050905090810190601f1680156115db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061195e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118c96022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209155b14b60d6899fd2d3449b3391db9f1827d6fc7c2e644ba621d72971ae8fca64736f6c634300060a0033", + "compiler": { + "name": "solc", + "version": "0.6.10+commit.00c0fcaf.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20PrimaryAdmin.json b/node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20PrimaryAdmin.json new file mode 100644 index 0000000..79958a5 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/__unstable__ERC20PrimaryAdmin.json @@ -0,0 +1,4669 @@ +{ + "fileName": "GSNRecipientERC20Fee.sol", + "contractName": "__unstable__ERC20PrimaryAdmin", + "source": "pragma solidity ^0.5.0;\n\nimport \"./GSNRecipient.sol\";\nimport \"../math/SafeMath.sol\";\nimport \"../ownership/Secondary.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../token/ERC20/ERC20.sol\";\nimport \"../token/ERC20/ERC20Detailed.sol\";\n\n/**\n * @dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20\n * token, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the\n * recipient. This means that the token is essentially pegged to the value of Ether.\n *\n * The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token\n * whose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the\n * internal {_mint} function.\n */\ncontract GSNRecipientERC20Fee is GSNRecipient {\n using SafeERC20 for __unstable__ERC20PrimaryAdmin;\n using SafeMath for uint256;\n\n enum GSNRecipientERC20FeeErrorCodes {\n INSUFFICIENT_BALANCE\n }\n\n __unstable__ERC20PrimaryAdmin private _token;\n\n /**\n * @dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18.\n */\n constructor(string memory name, string memory symbol) public {\n _token = new __unstable__ERC20PrimaryAdmin(name, symbol, 18);\n }\n\n /**\n * @dev Returns the gas payment token.\n */\n function token() public view returns (IERC20) {\n return IERC20(_token);\n }\n\n /**\n * @dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms.\n */\n function _mint(address account, uint256 amount) internal {\n _token.mint(account, amount);\n }\n\n /**\n * @dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN.\n */\n function acceptRelayedCall(\n address,\n address from,\n bytes calldata,\n uint256 transactionFee,\n uint256 gasPrice,\n uint256,\n uint256,\n bytes calldata,\n uint256 maxPossibleCharge\n )\n external\n view\n returns (uint256, bytes memory)\n {\n if (_token.balanceOf(from) < maxPossibleCharge) {\n return _rejectRelayedCall(uint256(GSNRecipientERC20FeeErrorCodes.INSUFFICIENT_BALANCE));\n }\n\n return _approveRelayedCall(abi.encode(from, maxPossibleCharge, transactionFee, gasPrice));\n }\n\n /**\n * @dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and\n * fee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the\n * actual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder\n * is returned to the user in {_postRelayedCall}.\n */\n function _preRelayedCall(bytes memory context) internal returns (bytes32) {\n (address from, uint256 maxPossibleCharge) = abi.decode(context, (address, uint256));\n\n // The maximum token charge is pre-charged from the user\n _token.safeTransferFrom(from, address(this), maxPossibleCharge);\n }\n\n /**\n * @dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known.\n */\n function _postRelayedCall(bytes memory context, bool, uint256 actualCharge, bytes32) internal {\n (address from, uint256 maxPossibleCharge, uint256 transactionFee, uint256 gasPrice) =\n abi.decode(context, (address, uint256, uint256, uint256));\n\n // actualCharge is an _estimated_ charge, which assumes postRelayedCall will use all available gas.\n // This implementation's gas cost can be roughly estimated as 10k gas, for the two SSTORE operations in an\n // ERC20 transfer.\n uint256 overestimation = _computeCharge(POST_RELAYED_CALL_MAX_GAS.sub(10000), gasPrice, transactionFee);\n actualCharge = actualCharge.sub(overestimation);\n\n // After the relayed call has been executed and the actual charge estimated, the excess pre-charge is returned\n _token.safeTransfer(from, maxPossibleCharge.sub(actualCharge));\n }\n}\n\n/**\n * @title __unstable__ERC20PrimaryAdmin\n * @dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive\n * anyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used\n * outside of this context.\n */\n// solhint-disable-next-line contract-name-camelcase\ncontract __unstable__ERC20PrimaryAdmin is ERC20, ERC20Detailed, Secondary {\n uint256 private constant UINT256_MAX = 2**256 - 1;\n\n constructor(string memory name, string memory symbol, uint8 decimals) public ERC20Detailed(name, symbol, decimals) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // The primary account (GSNRecipientERC20Fee) can mint tokens\n function mint(address account, uint256 amount) public onlyPrimary {\n _mint(account, amount);\n }\n\n // The primary account has 'infinite' allowance for all token holders\n function allowance(address owner, address spender) public view returns (uint256) {\n if (spender == primary()) {\n return UINT256_MAX;\n } else {\n return super.allowance(owner, spender);\n }\n }\n\n // Allowance for the primary account cannot be changed (it is always 'infinite')\n function _approve(address owner, address spender, uint256 value) internal {\n if (spender == primary()) {\n return;\n } else {\n super._approve(owner, spender, value);\n }\n }\n\n function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\n if (recipient == primary()) {\n _transfer(sender, recipient, amount);\n return true;\n } else {\n return super.transferFrom(sender, recipient, amount);\n }\n }\n}\n", + "sourcePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "sourceMap": "4719:1429:2:-;;;4855:179;8:9:-1;5:2;;;30:1;27;20:12;5:2;4855:179:2;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4855:179:2;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;4855:179:2;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4855:179:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;4855:179:2;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4855:179:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4946:4;4952:6;4960:8;512:4:122;504:5;:12;;;;;;;;;;;;:::i;:::-;;536:6;526:7;:16;;;;;;;;;;;;:::i;:::-;;564:8;552:9;;:20;;;;;;;;;;;;;;;;;;416:163;;;499:17:113;519:12;:10;;;:12;;:::i;:::-;499:32;;552:9;541:8;;:20;;;;;;;;;;;;;;;;;;576:29;595:9;576:29;;;;;;;;;;;;;;;;;;;;;;465:147;4855:179:2;;;4719:1429;;788:96:0;833:15;867:10;860:17;;788:96;:::o;4719:1429:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "4719:1429:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4719:1429:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;644:81:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1106:232:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1106:232:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;5838:308:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5838:308:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1472:81:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5106:105:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5106:105:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1706:108:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;838:85:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:85:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:258:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;902:81:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5291:235:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5291:235:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;644:81:122;681:13;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:119:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;1106:232:113:-;762:8;;;;;;;;;;;746:24;;:12;:10;:12::i;:::-;:24;;;738:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:1;1187:23;;:9;:23;;;;1179:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1278:9;1267:8;;:20;;;;;;;;;;;;;;;;;;1302:29;1321:9;1302:29;;;;;;;;;;;;;;;;;;;;;;1106:232;:::o;5838:308:2:-;5927:4;5960:9;:7;:9::i;:::-;5947:22;;:9;:22;;;5943:197;;;5985:36;5995:6;6003:9;6014:6;5985:9;:36::i;:::-;6042:4;6035:11;;;;5943:197;6084:45;6103:6;6111:9;6122:6;6084:18;:45::i;:::-;6077:52;;5838:308;;;;;;:::o;1472:81:122:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;3802:207:119:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;5106:105:2:-;762:8:113;;;;;;;;;;;746:24;;:12;:10;:12::i;:::-;:24;;;738:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5182:22:2;5188:7;5197:6;5182:5;:22::i;:::-;5106:105;;:::o;1706:108:119:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;838:85:122:-;877:13;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:85;:::o;4496:258:119:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;902:81:113:-;942:7;968:8;;;;;;;;;;;961:15;;902:81;:::o;5291:235:2:-;5363:7;5397:9;:7;:9::i;:::-;5386:20;;:7;:20;;;5382:138;;;4838:10;5422:18;;;;5382:138;5478:31;5494:5;5501:7;5478:15;:31::i;:::-;5471:38;;5291:235;;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;5617:215:2:-;5716:9;:7;:9::i;:::-;5705:20;;:7;:20;;;5701:125;;;5741:7;;5701:125;5778:37;5793:5;5800:7;5809:5;5778:14;:37::i;:::-;5617:215;;;;:::o;5228:464:119:-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;834:176:45:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;5962:302:119:-;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;1732:187:45:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;2230:132:119:-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;7350:332::-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/GSN/GSNRecipientERC20Fee.sol", + "exportedSymbols": { + "GSNRecipientERC20Fee": [ + 560 + ], + "__unstable__ERC20PrimaryAdmin": [ + 689 + ] + }, + "id": 690, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 360, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "contracts/GSN/GSNRecipient.sol", + "file": "./GSNRecipient.sol", + "id": 361, + "nodeType": "ImportDirective", + "scope": 690, + "sourceUnit": 359, + "src": "25:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 362, + "nodeType": "ImportDirective", + "scope": 690, + "sourceUnit": 5300, + "src": "54:30:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ownership/Secondary.sol", + "file": "../ownership/Secondary.sol", + "id": 363, + "nodeType": "ImportDirective", + "scope": 690, + "sourceUnit": 8780, + "src": "85:36:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 364, + "nodeType": "ImportDirective", + "scope": 690, + "sourceUnit": 10437, + "src": "122:38:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20.sol", + "file": "../token/ERC20/ERC20.sol", + "id": 365, + "nodeType": "ImportDirective", + "scope": 690, + "sourceUnit": 9867, + "src": "161:34:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/ERC20Detailed.sol", + "file": "../token/ERC20/ERC20Detailed.sol", + "id": 366, + "nodeType": "ImportDirective", + "scope": 690, + "sourceUnit": 10018, + "src": "196:42:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 367, + "name": "GSNRecipient", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 358, + "src": "878:12:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipient_$358", + "typeString": "contract GSNRecipient" + } + }, + "id": 368, + "nodeType": "InheritanceSpecifier", + "src": "878:12:2" + } + ], + "contractDependencies": [ + 26, + 358, + 689, + 1113 + ], + "contractKind": "contract", + "documentation": "@dev A xref:ROOT:gsn-strategies.adoc#gsn-strategies[GSN strategy] that charges transaction fees in a special purpose ERC20\ntoken, which we refer to as the gas payment token. The amount charged is exactly the amount of Ether charged to the\nrecipient. This means that the token is essentially pegged to the value of Ether.\n * The distribution strategy of the gas payment token to users is not defined by this contract. It's a mintable token\nwhose only minter is the recipient, so the strategy must be implemented in a derived contract, making use of the\ninternal {_mint} function.", + "fullyImplemented": true, + "id": 560, + "linearizedBaseContracts": [ + 560, + 358, + 26, + 1113 + ], + "name": "GSNRecipientERC20Fee", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 371, + "libraryName": { + "contractScope": null, + "id": 369, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10436, + "src": "903:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$10436", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "897:50:2", + "typeName": { + "contractScope": null, + "id": 370, + "name": "__unstable__ERC20PrimaryAdmin", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 689, + "src": "917:29:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + } + }, + { + "id": 374, + "libraryName": { + "contractScope": null, + "id": 372, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "958:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "952:27:2", + "typeName": { + "id": 373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes", + "id": 376, + "members": [ + { + "id": 375, + "name": "INSUFFICIENT_BALANCE", + "nodeType": "EnumValue", + "src": "1031:20:2" + } + ], + "name": "GSNRecipientERC20FeeErrorCodes", + "nodeType": "EnumDefinition", + "src": "985:72:2" + }, + { + "constant": false, + "id": 378, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "1063:44:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + }, + "typeName": { + "contractScope": null, + "id": 377, + "name": "__unstable__ERC20PrimaryAdmin", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 689, + "src": "1063:29:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 394, + "nodeType": "Block", + "src": "1343:77:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 385, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "1353:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 388, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "1396:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 382, + "src": "1402:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "hexValue": "3138", + "id": 390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1410:2:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1362:33:2", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$___unstable__ERC20PrimaryAdmin_$689_$", + "typeString": "function (string memory,string memory,uint8) returns (contract __unstable__ERC20PrimaryAdmin)" + }, + "typeName": { + "contractScope": null, + "id": 386, + "name": "__unstable__ERC20PrimaryAdmin", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 689, + "src": "1366:29:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + } + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1362:51:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "src": "1353:60:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "id": 393, + "nodeType": "ExpressionStatement", + "src": "1353:60:2" + } + ] + }, + "documentation": "@dev The arguments to the constructor are the details that the gas payment token will have: `name` and `symbol`. `decimals` is hard-coded to 18.", + "id": 395, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 380, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "1294:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 379, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1294:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 382, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 395, + "src": "1314:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 381, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1314:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1293:42:2" + }, + "returnParameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [], + "src": "1343:0:2" + }, + "scope": 560, + "src": "1282:138:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 404, + "nodeType": "Block", + "src": "1531:38:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 401, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "1555:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + ], + "id": 400, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10216, + "src": "1548:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$10216_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1548:14:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 399, + "id": 403, + "nodeType": "Return", + "src": "1541:21:2" + } + ] + }, + "documentation": "@dev Returns the gas payment token.", + "id": 405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 396, + "nodeType": "ParameterList", + "parameters": [], + "src": "1499:2:2" + }, + "returnParameters": { + "id": 399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 398, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "1523:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 397, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "1523:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1522:8:2" + }, + "scope": 560, + "src": "1485:84:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 419, + "nodeType": "Block", + "src": "1818:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 415, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "1840:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 416, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "1849:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 412, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "1828:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 603, + "src": "1828:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1828:28:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 418, + "nodeType": "ExpressionStatement", + "src": "1828:28:2" + } + ] + }, + "documentation": "@dev Internal function that mints the gas payment token. Derived contracts should expose this function in their public API, with proper access control mechanisms.", + "id": 420, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "1776:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1776:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "1793:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1793:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1775:33:2" + }, + "returnParameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [], + "src": "1818:0:2" + }, + "scope": 560, + "src": "1761:102:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 470, + "nodeType": "Block", + "src": "2327:276:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 447, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "2358:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 445, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "2341:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 9505, + "src": "2341:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2341:22:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 449, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "2366:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2341:42:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 459, + "nodeType": "IfStatement", + "src": "2337:160:2", + "trueBody": { + "id": 458, + "nodeType": "Block", + "src": "2385:112:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 453, + "name": "GSNRecipientERC20FeeErrorCodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 376, + "src": "2433:30:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_GSNRecipientERC20FeeErrorCodes_$376_$", + "typeString": "type(enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes)" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "INSUFFICIENT_BALANCE", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2433:51:2", + "typeDescriptions": { + "typeIdentifier": "t_enum$_GSNRecipientERC20FeeErrorCodes_$376", + "typeString": "enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_GSNRecipientERC20FeeErrorCodes_$376", + "typeString": "enum GSNRecipientERC20Fee.GSNRecipientERC20FeeErrorCodes" + } + ], + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2425:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2425:60:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 451, + "name": "_rejectRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 269, + "src": "2406:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256,bytes memory)" + } + }, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2406:80:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 444, + "id": 457, + "nodeType": "Return", + "src": "2399:87:2" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 463, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "2545:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 464, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "2551:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 465, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 428, + "src": "2570:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 466, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "2586:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 461, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13930, + "src": "2534:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2534:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2534:61:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 460, + "name": "_approveRelayedCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 239, + 253 + ], + "referencedDeclaration": 253, + "src": "2514:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (uint256,bytes memory)" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2514:82:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes_memory_ptr_$", + "typeString": "tuple(uint256,bytes memory)" + } + }, + "functionReturnParameters": 444, + "id": 469, + "nodeType": "Return", + "src": "2507:89:2" + } + ] + }, + "documentation": "@dev Ensures that only users with enough gas payment token balance can have transactions relayed through the GSN.", + "id": 471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptRelayedCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2042:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2042:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2059:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 423, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2059:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 426, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2081:14:2", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 425, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2081:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 428, + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2105:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2105:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 430, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2137:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2137:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 432, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2163:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2163:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 434, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2180:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2180:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 436, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2197:14:2", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 435, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2197:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 438, + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2221:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2221:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2032:220:2" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 441, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2300:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2300:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 471, + "src": "2309:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 442, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2309:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2299:23:2" + }, + "scope": 560, + "src": "2006:597:2", + "stateMutability": "view", + "superFunction": 1094, + "visibility": "external" + }, + { + "body": { + "id": 500, + "nodeType": "Block", + "src": "3106:239:2", + "statements": [ + { + "assignments": [ + 479, + 481 + ], + "declarations": [ + { + "constant": false, + "id": 479, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "3117:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3117:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 481, + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "3131:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3131:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 489, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 484, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 473, + "src": "3171:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3181:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + { + "argumentTypes": null, + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3190:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + } + ], + "id": 487, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3180:18:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256))" + } + ], + "expression": { + "argumentTypes": null, + "id": 482, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13930, + "src": "3160:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3160:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3160:39:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$", + "typeString": "tuple(address payable,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3116:83:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 493, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "3299:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 495, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13979, + "src": "3313:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$560", + "typeString": "contract GSNRecipientERC20Fee" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GSNRecipientERC20Fee_$560", + "typeString": "contract GSNRecipientERC20Fee" + } + ], + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3305:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3305:13:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 497, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "3320:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 490, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "3275:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 10274, + "src": "3275:23:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10216_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3275:63:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 499, + "nodeType": "ExpressionStatement", + "src": "3275:63:2" + } + ] + }, + "documentation": "@dev Implements the precharge to the user. The maximum possible charge (depending on gas limit, gas price, and\nfee) will be deducted from the user balance of gas payment token. Note that this is an overestimation of the\nactual charge, necessary because we cannot predict how much gas the execution will actually need. The remainder\nis returned to the user in {_postRelayedCall}.", + "id": 501, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preRelayedCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 473, + "name": "context", + "nodeType": "VariableDeclaration", + "scope": 501, + "src": "3057:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 472, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3057:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3056:22:2" + }, + "returnParameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 476, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 501, + "src": "3097:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 475, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3097:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3096:9:2" + }, + "scope": 560, + "src": "3032:313:2", + "stateMutability": "nonpayable", + "superFunction": 188, + "visibility": "internal" + }, + { + "body": { + "id": 558, + "nodeType": "Block", + "src": "3580:785:2", + "statements": [ + { + "assignments": [ + 513, + 515, + 517, + 519 + ], + "declarations": [ + { + "constant": false, + "id": 513, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "3591:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3591:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 515, + "name": "maxPossibleCharge", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "3605:25:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 514, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3605:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 517, + "name": "transactionFee", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "3632:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3632:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 519, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "3656:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 518, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3656:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 529, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 522, + "name": "context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "3699:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3709:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + { + "argumentTypes": null, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3718:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + { + "argumentTypes": null, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3727:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + { + "argumentTypes": null, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3736:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + } + ], + "id": 527, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3708:36:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256))" + } + ], + "expression": { + "argumentTypes": null, + "id": 520, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13930, + "src": "3688:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3688:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3688:57:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(address payable,uint256,uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3590:155:2" + }, + { + "assignments": [ + 531 + ], + "declarations": [ + { + "constant": false, + "id": 531, + "name": "overestimation", + "nodeType": "VariableDeclaration", + "scope": 558, + "src": "4006:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4006:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 540, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4076:5:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + ], + "expression": { + "argumentTypes": null, + "id": 533, + "name": "POST_RELAYED_CALL_MAX_GAS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4046:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "4046:29:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4046:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 537, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "4084:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 538, + "name": "transactionFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "4094:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 532, + "name": "_computeCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 293, + "src": "4031:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4031:78:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4006:103:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 541, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "4119:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 544, + "name": "overestimation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 531, + "src": "4151:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 542, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "4134:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "4134:16:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4134:32:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4119:47:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 547, + "nodeType": "ExpressionStatement", + "src": "4119:47:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 551, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 513, + "src": "4316:4:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 554, + "name": "actualCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "4344:12:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 552, + "name": "maxPossibleCharge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "4322:17:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5155, + "src": "4322:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4322:35:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 548, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "4296:6:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract __unstable__ERC20PrimaryAdmin" + } + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10249, + "src": "4296:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10216_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4296:62:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 557, + "nodeType": "ExpressionStatement", + "src": "4296:62:2" + } + ] + }, + "documentation": "@dev Returns to the user the extra amount that was previously charged, once the actual execution cost is known.", + "id": 559, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postRelayedCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 503, + "name": "context", + "nodeType": "VariableDeclaration", + "scope": 559, + "src": "3512:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 502, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3512:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 505, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 559, + "src": "3534:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 504, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3534:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 507, + "name": "actualCharge", + "nodeType": "VariableDeclaration", + "scope": 559, + "src": "3540:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3540:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 509, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 559, + "src": "3562:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 508, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3562:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3511:59:2" + }, + "returnParameters": { + "id": 511, + "nodeType": "ParameterList", + "parameters": [], + "src": "3580:0:2" + }, + "scope": 560, + "src": "3486:879:2", + "stateMutability": "nonpayable", + "superFunction": 227, + "visibility": "internal" + } + ], + "scope": 690, + "src": "845:3522:2" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 561, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 9866, + "src": "4761:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$9866", + "typeString": "contract ERC20" + } + }, + "id": 562, + "nodeType": "InheritanceSpecifier", + "src": "4761:5:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 563, + "name": "ERC20Detailed", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10017, + "src": "4768:13:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Detailed_$10017", + "typeString": "contract ERC20Detailed" + } + }, + "id": 564, + "nodeType": "InheritanceSpecifier", + "src": "4768:13:2" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 565, + "name": "Secondary", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8779, + "src": "4783:9:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Secondary_$8779", + "typeString": "contract Secondary" + } + }, + "id": 566, + "nodeType": "InheritanceSpecifier", + "src": "4783:9:2" + } + ], + "contractDependencies": [ + 26, + 8779, + 9866, + 10017, + 10216 + ], + "contractKind": "contract", + "documentation": "@title __unstable__ERC20PrimaryAdmin\n@dev An ERC20 token owned by another contract, which has minting permissions and can use transferFrom to receive\nanyone's tokens. This contract is an internal helper for GSNRecipientERC20Fee, and should not be used\noutside of this context.", + "fullyImplemented": true, + "id": 689, + "linearizedBaseContracts": [ + 689, + 8779, + 10017, + 9866, + 10216, + 26 + ], + "name": "__unstable__ERC20PrimaryAdmin", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 573, + "name": "UINT256_MAX", + "nodeType": "VariableDeclaration", + "scope": 689, + "src": "4799:49:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4799:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9936" + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4838:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323536", + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4841:3:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "4838:6:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9936" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4847:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4838:10:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 587, + "nodeType": "Block", + "src": "4970:64:2", + "statements": [] + }, + "documentation": null, + "id": 588, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 582, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "4946:4:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 583, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "4952:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 584, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "4960:8:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 585, + "modifierName": { + "argumentTypes": null, + "id": 581, + "name": "ERC20Detailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10017, + "src": "4932:13:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$10017_$", + "typeString": "type(contract ERC20Detailed)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4932:37:2" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 575, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 588, + "src": "4867:18:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 574, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4867:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 577, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 588, + "src": "4887:20:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 576, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4887:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 579, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 588, + "src": "4909:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 578, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4909:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4866:58:2" + }, + "returnParameters": { + "id": 586, + "nodeType": "ParameterList", + "parameters": [], + "src": "4970:0:2" + }, + "scope": 689, + "src": "4855:179:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 602, + "nodeType": "Block", + "src": "5172:39:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 598, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 590, + "src": "5188:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 599, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "5197:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 597, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9750, + "src": "5182:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5182:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "5182:22:2" + } + ] + }, + "documentation": null, + "id": 603, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 595, + "modifierName": { + "argumentTypes": null, + "id": 594, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "5160:11:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5160:11:2" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 590, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "5120:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5120:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 592, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "5137:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5137:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5119:33:2" + }, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [], + "src": "5172:0:2" + }, + "scope": 689, + "src": "5106:105:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 627, + "nodeType": "Block", + "src": "5372:154:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 612, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "5386:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 613, + "name": "primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "5397:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5397:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5386:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 625, + "nodeType": "Block", + "src": "5457:63:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 621, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "5494:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 622, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "5501:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 619, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13982, + "src": "5478:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract super __unstable__ERC20PrimaryAdmin" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 9540, + "src": "5478:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5478:31:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 611, + "id": 624, + "nodeType": "Return", + "src": "5471:38:2" + } + ] + }, + "id": 626, + "nodeType": "IfStatement", + "src": "5382:138:2", + "trueBody": { + "id": 618, + "nodeType": "Block", + "src": "5408:43:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 616, + "name": "UINT256_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "5429:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 611, + "id": 617, + "nodeType": "Return", + "src": "5422:18:2" + } + ] + } + } + ] + }, + "documentation": null, + "id": 628, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "5310:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5310:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 607, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "5325:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5325:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5309:32:2" + }, + "returnParameters": { + "id": 611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 610, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "5363:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5363:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5362:9:2" + }, + "scope": 689, + "src": "5291:235:2", + "stateMutability": "view", + "superFunction": 9540, + "visibility": "public" + }, + { + "body": { + "id": 653, + "nodeType": "Block", + "src": "5691:141:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 637, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "5705:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 638, + "name": "primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "5716:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5716:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5705:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 651, + "nodeType": "Block", + "src": "5764:62:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 646, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "5793:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 647, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "5800:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 648, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "5809:5:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 643, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13982, + "src": "5778:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract super __unstable__ERC20PrimaryAdmin" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 9836, + "src": "5778:14:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5778:37:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 650, + "nodeType": "ExpressionStatement", + "src": "5778:37:2" + } + ] + }, + "id": 652, + "nodeType": "IfStatement", + "src": "5701:125:2", + "trueBody": { + "id": 642, + "nodeType": "Block", + "src": "5727:31:2", + "statements": [ + { + "expression": null, + "functionReturnParameters": 636, + "id": 641, + "nodeType": "Return", + "src": "5741:7:2" + } + ] + } + } + ] + }, + "documentation": null, + "id": 654, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 630, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 654, + "src": "5635:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 629, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5635:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 632, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 654, + "src": "5650:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5650:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 634, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 654, + "src": "5667:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 633, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5667:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5634:47:2" + }, + "returnParameters": { + "id": 636, + "nodeType": "ParameterList", + "parameters": [], + "src": "5691:0:2" + }, + "scope": 689, + "src": "5617:215:2", + "stateMutability": "nonpayable", + "superFunction": 9836, + "visibility": "internal" + }, + { + "body": { + "id": 687, + "nodeType": "Block", + "src": "5933:213:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 665, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "5947:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 666, + "name": "primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "5960:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5960:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5947:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 685, + "nodeType": "Block", + "src": "6063:77:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 680, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 656, + "src": "6103:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 681, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "6111:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 682, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "6122:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 678, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13982, + "src": "6084:5:2", + "typeDescriptions": { + "typeIdentifier": "t_super$___unstable__ERC20PrimaryAdmin_$689", + "typeString": "contract super __unstable__ERC20PrimaryAdmin" + } + }, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 9595, + "src": "6084:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6084:45:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 664, + "id": 684, + "nodeType": "Return", + "src": "6077:52:2" + } + ] + }, + "id": 686, + "nodeType": "IfStatement", + "src": "5943:197:2", + "trueBody": { + "id": 677, + "nodeType": "Block", + "src": "5971:86:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 670, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 656, + "src": "5995:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 671, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "6003:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 672, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "6014:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 669, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9707, + "src": "5985:9:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5985:36:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 674, + "nodeType": "ExpressionStatement", + "src": "5985:36:2" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6042:4:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 664, + "id": 676, + "nodeType": "Return", + "src": "6035:11:2" + } + ] + } + } + ] + }, + "documentation": null, + "id": 688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 656, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "5860:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5860:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 658, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "5876:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 657, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5876:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 660, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "5895:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 659, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5895:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5859:51:2" + }, + "returnParameters": { + "id": 664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 663, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "5927:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 662, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5927:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5926:6:2" + }, + "scope": 689, + "src": "5838:308:2", + "stateMutability": "nonpayable", + "superFunction": 9595, + "visibility": "public" + } + ], + "scope": 690, + "src": "4719:1429:2" + } + ], + "src": "0:6149:2" + }, + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b9a38038062001b9a833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291905050508282828260039080519060200190620001dd929190620002df565b508160049080519060200190620001f6929190620002df565b5080600560006101000a81548160ff021916908360ff160217905550505050600062000227620002d760201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050506200038e565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032257805160ff191683800117855562000353565b8280016001018555821562000353579182015b828111156200035257825182559160200191906001019062000335565b5b50905062000362919062000366565b5090565b6200038b91905b80821115620003875760008160009055506001016200036d565b5090565b90565b6117fc806200039e6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806340c10f191161008c578063a457c2d711610066578063a457c2d714610473578063a9059cbb146104d9578063c6dbdf611461053f578063dd62ed3e14610589576100ea565b806340c10f191461034a57806370a082311461039857806395d89b41146103f0576100ea565b80632348238c116100c85780632348238c146101f657806323b872dd1461023a578063313ce567146102c057806339509351146102e4576100ea565b806306fdde03146100ef578063095ea7b31461017257806318160ddd146101d8575b600080fd5b6100f7610601565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013757808201518184015260208101905061011c565b50505050905090810190601f1680156101645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101be6004803603604081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106a3565b604051808215151515815260200191505060405180910390f35b6101e06106c1565b6040518082815260200191505060405180910390f35b6102386004803603602081101561020c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106cb565b005b6102a66004803603606081101561025057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a5565b604051808215151515815260200191505060405180910390f35b6102c861090b565b604051808260ff1660ff16815260200191505060405180910390f35b610330600480360360408110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610922565b604051808215151515815260200191505060405180910390f35b6103966004803603604081101561036057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109d5565b005b6103da600480360360208110156103ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a90565b6040518082815260200191505060405180910390f35b6103f8610ad8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043857808201518184015260208101905061041d565b50505050905090810190601f1680156104655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104bf6004803603604081101561048957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7a565b604051808215151515815260200191505060405180910390f35b610525600480360360408110156104ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c47565b604051808215151515815260200191505060405180910390f35b610547610c65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105eb6004803603604081101561059f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c8f565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106995780601f1061066e57610100808354040283529160200191610699565b820191906000526020600020905b81548152906001019060200180831161067c57829003601f168201915b5050505050905090565b60006106b76106b0610d07565b8484610d0f565b6001905092915050565b6000600254905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661070c610d07565b73ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611753602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611704602a913960400191505060405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60006108af610c65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108f6576108ed848484610d60565b60019050610904565b610901848484611016565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b60006109cb61092f610d07565b846109c68560016000610940610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ef90919063ffffffff16565b610d0f565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a16610d07565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611753602c913960400191505060405180910390fd5b610a8c8282611177565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b705780601f10610b4557610100808354040283529160200191610b70565b820191906000526020600020905b815481529060010190602001808311610b5357829003601f168201915b5050505050905090565b6000610c3d610b87610d07565b84610c38856040518060600160405280602581526020016117a36025913960016000610bb1610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113329092919063ffffffff16565b610d0f565b6001905092915050565b6000610c5b610c54610d07565b8484610d60565b6001905092915050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610c99610c65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cf4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610d01565b610cfe83836113f2565b90505b92915050565b600033905090565b610d17610c65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d4f57610d5b565b610d5a838383611479565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116716023913960400191505060405180910390fd5b610ed7816040518060600160405280602681526020016116b6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113329092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611023848484610d60565b6110e48461102f610d07565b6110df856040518060600160405280602881526020016116dc60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611095610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113329092919063ffffffff16565b610d0f565b600190509392505050565b60008082840190508381101561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61122f816002546110ef90919063ffffffff16565b600281905550611286816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008383111582906113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113a4578082015181840152602081019050611389565b50505050905090810190601f1680156113d15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061177f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806116946022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655365636f6e646172793a206e6577207072696d61727920697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e7445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158203e18b2f81af18f6ef275615342b775e0780261d515fd34ed700da9d4bb7f2c6964736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806340c10f191161008c578063a457c2d711610066578063a457c2d714610473578063a9059cbb146104d9578063c6dbdf611461053f578063dd62ed3e14610589576100ea565b806340c10f191461034a57806370a082311461039857806395d89b41146103f0576100ea565b80632348238c116100c85780632348238c146101f657806323b872dd1461023a578063313ce567146102c057806339509351146102e4576100ea565b806306fdde03146100ef578063095ea7b31461017257806318160ddd146101d8575b600080fd5b6100f7610601565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013757808201518184015260208101905061011c565b50505050905090810190601f1680156101645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101be6004803603604081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106a3565b604051808215151515815260200191505060405180910390f35b6101e06106c1565b6040518082815260200191505060405180910390f35b6102386004803603602081101561020c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106cb565b005b6102a66004803603606081101561025057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a5565b604051808215151515815260200191505060405180910390f35b6102c861090b565b604051808260ff1660ff16815260200191505060405180910390f35b610330600480360360408110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610922565b604051808215151515815260200191505060405180910390f35b6103966004803603604081101561036057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109d5565b005b6103da600480360360208110156103ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a90565b6040518082815260200191505060405180910390f35b6103f8610ad8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043857808201518184015260208101905061041d565b50505050905090810190601f1680156104655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104bf6004803603604081101561048957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7a565b604051808215151515815260200191505060405180910390f35b610525600480360360408110156104ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c47565b604051808215151515815260200191505060405180910390f35b610547610c65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105eb6004803603604081101561059f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c8f565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106995780601f1061066e57610100808354040283529160200191610699565b820191906000526020600020905b81548152906001019060200180831161067c57829003601f168201915b5050505050905090565b60006106b76106b0610d07565b8484610d0f565b6001905092915050565b6000600254905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661070c610d07565b73ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611753602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611704602a913960400191505060405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60006108af610c65565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108f6576108ed848484610d60565b60019050610904565b610901848484611016565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b60006109cb61092f610d07565b846109c68560016000610940610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ef90919063ffffffff16565b610d0f565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a16610d07565b73ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611753602c913960400191505060405180910390fd5b610a8c8282611177565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b705780601f10610b4557610100808354040283529160200191610b70565b820191906000526020600020905b815481529060010190602001808311610b5357829003601f168201915b5050505050905090565b6000610c3d610b87610d07565b84610c38856040518060600160405280602581526020016117a36025913960016000610bb1610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113329092919063ffffffff16565b610d0f565b6001905092915050565b6000610c5b610c54610d07565b8484610d60565b6001905092915050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610c99610c65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cf4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610d01565b610cfe83836113f2565b90505b92915050565b600033905090565b610d17610c65565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d4f57610d5b565b610d5a838383611479565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116716023913960400191505060405180910390fd5b610ed7816040518060600160405280602681526020016116b6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113329092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611023848484610d60565b6110e48461102f610d07565b6110df856040518060600160405280602881526020016116dc60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611095610d07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113329092919063ffffffff16565b610d0f565b600190509392505050565b60008082840190508381101561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61122f816002546110ef90919063ffffffff16565b600281905550611286816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110ef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008383111582906113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113a4578082015181840152602081019050611389565b50505050905090810190601f1680156113d15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061177f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806116946022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655365636f6e646172793a206e6577207072696d61727920697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e7445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158203e18b2f81af18f6ef275615342b775e0780261d515fd34ed700da9d4bb7f2c6964736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/build/contracts/__unstable__TokenVault.json b/node_modules/@openzeppelin/contracts/build/contracts/__unstable__TokenVault.json new file mode 100644 index 0000000..2eacf66 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/build/contracts/__unstable__TokenVault.json @@ -0,0 +1,1708 @@ +{ + "fileName": "PostDeliveryCrowdsale.sol", + "contractName": "__unstable__TokenVault", + "source": "pragma solidity ^0.5.0;\n\nimport \"../validation/TimedCrowdsale.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../ownership/Secondary.sol\";\nimport \"../../token/ERC20/IERC20.sol\";\n\n/**\n * @title PostDeliveryCrowdsale\n * @dev Crowdsale that locks tokens from withdrawal until it ends.\n */\ncontract PostDeliveryCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n __unstable__TokenVault private _vault;\n\n constructor() public {\n _vault = new __unstable__TokenVault();\n }\n\n /**\n * @dev Withdraw tokens only after crowdsale ends.\n * @param beneficiary Whose tokens will be withdrawn.\n */\n function withdrawTokens(address beneficiary) public {\n require(hasClosed(), \"PostDeliveryCrowdsale: not closed\");\n uint256 amount = _balances[beneficiary];\n require(amount > 0, \"PostDeliveryCrowdsale: beneficiary is not due any tokens\");\n\n _balances[beneficiary] = 0;\n _vault.transfer(token(), beneficiary, amount);\n }\n\n /**\n * @return the balance of an account.\n */\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev Overrides parent by storing due balances, and delivering tokens to the vault instead of the end user. This\n * ensures that the tokens will be available by the time they are withdrawn (which may not be the case if\n * `_deliverTokens` was called later).\n * @param beneficiary Token purchaser\n * @param tokenAmount Amount of tokens purchased\n */\n function _processPurchase(address beneficiary, uint256 tokenAmount) internal {\n _balances[beneficiary] = _balances[beneficiary].add(tokenAmount);\n _deliverTokens(address(_vault), tokenAmount);\n }\n}\n\n/**\n * @title __unstable__TokenVault\n * @dev Similar to an Escrow for tokens, this contract allows its primary account to spend its tokens as it sees fit.\n * This contract is an internal helper for PostDeliveryCrowdsale, and should not be used outside of this context.\n */\n// solhint-disable-next-line contract-name-camelcase\ncontract __unstable__TokenVault is Secondary {\n function transfer(IERC20 token, address to, uint256 amount) public onlyPrimary {\n token.transfer(to, amount);\n }\n}\n", + "sourcePath": "contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "sourceMap": "2141:175:15:-;;;499:17:113;519:12;:10;;;:12;;:::i;:::-;499:32;;552:9;541:8;;:20;;;;;;;;;;;;;;;;;;576:29;595:9;576:29;;;;;;;;;;;;;;;;;;;;;;465:147;2141:175:15;;788:96:0;833:15;867:10;860:17;;788:96;:::o;2141:175:15:-;;;;;;;", + "deployedSourceMap": "2141:175:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2141:175:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1106:232:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1106:232:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;2192:122:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2192:122:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;902:81:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1106:232;762:8;;;;;;;;;;;746:24;;:12;:10;:12::i;:::-;:24;;;738:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:1;1187:23;;:9;:23;;;;1179:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1278:9;1267:8;;:20;;;;;;;;;;;;;;;;;;1302:29;1321:9;1302:29;;;;;;;;;;;;;;;;;;;;;;1106:232;:::o;2192:122:15:-;762:8:113;;;;;;;;;;;746:24;;:12;:10;:12::i;:::-;:24;;;738:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2281:5:15;:14;;;2296:2;2300:6;2281:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:26:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2281:26:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2281:26:15;;;;;;;;;;;;;;;;;2192:122;;;:::o;902:81:113:-;942:7;968:8;;;;;;;;;;;961:15;;902:81;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "ast": { + "absolutePath": "contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "exportedSymbols": { + "PostDeliveryCrowdsale": [ + 2285 + ], + "__unstable__TokenVault": [ + 2307 + ] + }, + "id": 2308, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2181, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "absolutePath": "contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 2182, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 3088, + "src": "25:42:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 2183, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 5300, + "src": "68:33:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/ownership/Secondary.sol", + "file": "../../ownership/Secondary.sol", + "id": 2184, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 8780, + "src": "102:39:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2185, + "nodeType": "ImportDirective", + "scope": 2308, + "sourceUnit": 10217, + "src": "142:38:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2186, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3087, + "src": "323:14:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$3087", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 2187, + "nodeType": "InheritanceSpecifier", + "src": "323:14:15" + } + ], + "contractDependencies": [ + 26, + 2119, + 2307, + 3087, + 13820 + ], + "contractKind": "contract", + "documentation": "@title PostDeliveryCrowdsale\n@dev Crowdsale that locks tokens from withdrawal until it ends.", + "fullyImplemented": false, + "id": 2285, + "linearizedBaseContracts": [ + 2285, + 3087, + 2119, + 13820, + 26 + ], + "name": "PostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2190, + "libraryName": { + "contractScope": null, + "id": 2188, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5299, + "src": "350:8:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5299", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "344:27:15", + "typeName": { + "id": 2189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "363:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 2194, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 2285, + "src": "377:45:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 2193, + "keyType": { + "id": 2191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "385:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "377:27:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 2192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "396:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2196, + "name": "_vault", + "nodeType": "VariableDeclaration", + "scope": 2285, + "src": "428:37:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + }, + "typeName": { + "contractScope": null, + "id": 2195, + "name": "__unstable__TokenVault", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2307, + "src": "428:22:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2205, + "nodeType": "Block", + "src": "493:54:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2199, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "503:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "512:26:15", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$___unstable__TokenVault_$2307_$", + "typeString": "function () returns (contract __unstable__TokenVault)" + }, + "typeName": { + "contractScope": null, + "id": 2200, + "name": "__unstable__TokenVault", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2307, + "src": "516:22:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + } + }, + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "512:28:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "src": "503:37:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "id": 2204, + "nodeType": "ExpressionStatement", + "src": "503:37:15" + } + ] + }, + "documentation": null, + "id": 2206, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2197, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:2:15" + }, + "returnParameters": { + "id": 2198, + "nodeType": "ParameterList", + "parameters": [], + "src": "493:0:15" + }, + "scope": 2285, + "src": "472:75:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2245, + "nodeType": "Block", + "src": "734:304:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2212, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3040, + "src": "752:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:11:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "506f737444656c697665727943726f776473616c653a206e6f7420636c6f736564", + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "765:35:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c29c4315eb01a52160c465d0c4789a47ecbe40dd194bb953044920b39a1c2fca", + "typeString": "literal_string \"PostDeliveryCrowdsale: not closed\"" + }, + "value": "PostDeliveryCrowdsale: not closed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c29c4315eb01a52160c465d0c4789a47ecbe40dd194bb953044920b39a1c2fca", + "typeString": "literal_string \"PostDeliveryCrowdsale: not closed\"" + } + ], + "id": 2211, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "744:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "744:57:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2216, + "nodeType": "ExpressionStatement", + "src": "744:57:15" + }, + { + "assignments": [ + 2218 + ], + "declarations": [ + { + "constant": false, + "id": 2218, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2245, + "src": "811:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2217, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "811:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2222, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2219, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "828:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2221, + "indexExpression": { + "argumentTypes": null, + "id": 2220, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "838:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "828:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "811:39:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2224, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "868:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "877:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "868:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "506f737444656c697665727943726f776473616c653a2062656e6566696369617279206973206e6f742064756520616e7920746f6b656e73", + "id": 2227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:58:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9112d2e87485a8eabe91fcfc4d0fe2dcc1c98cc1facbacbf7cca92659a7df8f0", + "typeString": "literal_string \"PostDeliveryCrowdsale: beneficiary is not due any tokens\"" + }, + "value": "PostDeliveryCrowdsale: beneficiary is not due any tokens" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9112d2e87485a8eabe91fcfc4d0fe2dcc1c98cc1facbacbf7cca92659a7df8f0", + "typeString": "literal_string \"PostDeliveryCrowdsale: beneficiary is not due any tokens\"" + } + ], + "id": 2223, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 13946, + 13947 + ], + "referencedDeclaration": 13947, + "src": "860:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "860:79:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2229, + "nodeType": "ExpressionStatement", + "src": "860:79:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2230, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "950:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2232, + "indexExpression": { + "argumentTypes": null, + "id": 2231, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "960:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "950:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "975:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "950:26:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2235, + "nodeType": "ExpressionStatement", + "src": "950:26:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2239, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "1002:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$10216_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1002:7:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + { + "argumentTypes": null, + "id": 2241, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2208, + "src": "1011:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2242, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2218, + "src": "1024:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2236, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "986:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + }, + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2306, + "src": "986:15:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$10216_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256) external" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "986:45:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2244, + "nodeType": "ExpressionStatement", + "src": "986:45:15" + } + ] + }, + "documentation": "@dev Withdraw tokens only after crowdsale ends.\n@param beneficiary Whose tokens will be withdrawn.", + "id": 2246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2208, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2246, + "src": "706:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "705:21:15" + }, + "returnParameters": { + "id": 2210, + "nodeType": "ParameterList", + "parameters": [], + "src": "734:0:15" + }, + "scope": 2285, + "src": "682:356:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2257, + "nodeType": "Block", + "src": "1168:42:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2253, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "1185:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2255, + "indexExpression": { + "argumentTypes": null, + "id": 2254, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "1195:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1185:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2252, + "id": 2256, + "nodeType": "Return", + "src": "1178:25:15" + } + ] + }, + "documentation": "@return the balance of an account.", + "id": 2258, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "1121:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1121:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1120:17:15" + }, + "returnParameters": { + "id": 2252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2251, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2258, + "src": "1159:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1159:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1158:9:15" + }, + "scope": 2285, + "src": "1102:108:15", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2283, + "nodeType": "Block", + "src": "1676:135:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2265, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "1686:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2267, + "indexExpression": { + "argumentTypes": null, + "id": 2266, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "1696:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1686:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2272, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "1738:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2268, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "1711:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2270, + "indexExpression": { + "argumentTypes": null, + "id": 2269, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "1721:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1711:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5139, + "src": "1711:26:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1711:39:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1686:64:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2275, + "nodeType": "ExpressionStatement", + "src": "1686:64:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2278, + "name": "_vault", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "1783:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$___unstable__TokenVault_$2307", + "typeString": "contract __unstable__TokenVault" + } + ], + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1775:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1775:15:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2280, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2262, + "src": "1792:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2276, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "1760:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1760:44:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2282, + "nodeType": "ExpressionStatement", + "src": "1760:44:15" + } + ] + }, + "documentation": "@dev Overrides parent by storing due balances, and delivering tokens to the vault instead of the end user. This\nensures that the tokens will be available by the time they are withdrawn (which may not be the case if\n`_deliverTokens` was called later).\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 2284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2260, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2284, + "src": "1625:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1625:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2262, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 2284, + "src": "1646:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1646:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1624:42:15" + }, + "returnParameters": { + "id": 2264, + "nodeType": "ParameterList", + "parameters": [], + "src": "1676:0:15" + }, + "scope": 2285, + "src": "1599:212:15", + "stateMutability": "nonpayable", + "superFunction": 2086, + "visibility": "internal" + } + ], + "scope": 2308, + "src": "289:1524:15" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2286, + "name": "Secondary", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 8779, + "src": "2176:9:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Secondary_$8779", + "typeString": "contract Secondary" + } + }, + "id": 2287, + "nodeType": "InheritanceSpecifier", + "src": "2176:9:15" + } + ], + "contractDependencies": [ + 26, + 8779 + ], + "contractKind": "contract", + "documentation": "@title __unstable__TokenVault\n@dev Similar to an Escrow for tokens, this contract allows its primary account to spend its tokens as it sees fit.\nThis contract is an internal helper for PostDeliveryCrowdsale, and should not be used outside of this context.", + "fullyImplemented": true, + "id": 2307, + "linearizedBaseContracts": [ + 2307, + 8779, + 26 + ], + "name": "__unstable__TokenVault", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2305, + "nodeType": "Block", + "src": "2271:43:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2301, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "2296:2:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2302, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2293, + "src": "2300:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2298, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2289, + "src": "2281:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10170, + "src": "2281:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2281:26:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2304, + "nodeType": "ExpressionStatement", + "src": "2281:26:15" + } + ] + }, + "documentation": null, + "id": 2306, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2296, + "modifierName": { + "argumentTypes": null, + "id": 2295, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "2259:11:15", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2259:11:15" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2289, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2306, + "src": "2210:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2288, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 10216, + "src": "2210:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$10216", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2291, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2306, + "src": "2224:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2224:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2293, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2306, + "src": "2236:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2292, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2236:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2209:42:15" + }, + "returnParameters": { + "id": 2297, + "nodeType": "ParameterList", + "parameters": [], + "src": "2271:0:15" + }, + "scope": 2307, + "src": "2192:122:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2308, + "src": "2141:175:15" + } + ], + "src": "0:2317:15" + }, + "bytecode": "0x608060405260006100146100bf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1506100c7565b600033905090565b61054a806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632348238c14610046578063beabacc81461008a578063c6dbdf61146100f8575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610142565b005b6100f6600480360360608110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061031a565b005b61010061048e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166101826104b7565b73ffffffffffffffffffffffffffffffffffffffff16146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806104c0602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661035a6104b7565b73ffffffffffffffffffffffffffffffffffffffff16146103c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b505050506040513d602081101561047757600080fd5b810190808051906020019092919050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003390509056fe5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74a265627a7a723158200814f9815547e5df2957c23308b9b337c731c16ad59cdfa3683e348e8f4b50fa64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632348238c14610046578063beabacc81461008a578063c6dbdf61146100f8575b600080fd5b6100886004803603602081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610142565b005b6100f6600480360360608110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061031a565b005b61010061048e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166101826104b7565b73ffffffffffffffffffffffffffffffffffffffff16146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806104c0602a913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661035a6104b7565b73ffffffffffffffffffffffffffffffffffffffff16146103c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806104ea602c913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561044d57600080fd5b505af1158015610461573d6000803e3d6000fd5b505050506040513d602081101561047757600080fd5b810190808051906020019092919050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003390509056fe5365636f6e646172793a206e6577207072696d61727920697320746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e74a265627a7a723158200814f9815547e5df2957c23308b9b337c731c16ad59cdfa3683e348e8f4b50fa64736f6c63430005110032", + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "evmVersion": "petersburg" + } +} diff --git a/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol b/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol new file mode 100644 index 0000000..5a85ed9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. + * + * These functions can be used to verify that a message was signed by the holder + * of the private keys of a given address. + */ +library ECDSA { + /** + * @dev Returns the address that signed a hashed message (`hash`) with + * `signature`. This address can then be used for verification purposes. + * + * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: + * this function rejects them by requiring the `s` value to be in the lower + * half order, and the `v` value to be either 27 or 28. + * + * IMPORTANT: `hash` _must_ be the result of a hash operation for the + * verification to be secure: it is possible to craft signatures that + * recover to arbitrary addresses for non-hashed data. A safe way to ensure + * this is by receiving a hash of the original message (which may otherwise + * be too long), and then calling {toEthSignedMessageHash} on it. + */ + function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { + // Check the signature length + if (signature.length != 65) { + revert("ECDSA: invalid signature length"); + } + + // Divide the signature in r, s and v variables + bytes32 r; + bytes32 s; + uint8 v; + + // ecrecover takes the signature parameters, and the only way to get them + // currently is to use assembly. + // solhint-disable-next-line no-inline-assembly + assembly { + r := mload(add(signature, 0x20)) + s := mload(add(signature, 0x40)) + v := byte(0, mload(add(signature, 0x60))) + } + + // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature + // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines + // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most + // signatures from current libraries generate a unique signature with an s-value in the lower half order. + // + // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value + // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or + // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept + // these malleable signatures as well. + if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { + revert("ECDSA: invalid signature 's' value"); + } + + if (v != 27 && v != 28) { + revert("ECDSA: invalid signature 'v' value"); + } + + // If the signature is valid (and not malleable), return the signer address + address signer = ecrecover(hash, v, r, s); + require(signer != address(0), "ECDSA: invalid signature"); + + return signer; + } + + /** + * @dev Returns an Ethereum Signed Message, created from a `hash`. This + * replicates the behavior of the + * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`] + * JSON-RPC method. + * + * See {recover}. + */ + function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { + // 32 is the length in bytes of hash, + // enforced by the type signature above + return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); + } +} diff --git a/node_modules/@openzeppelin/contracts/cryptography/MerkleProof.sol b/node_modules/@openzeppelin/contracts/cryptography/MerkleProof.sol new file mode 100644 index 0000000..8a5fc90 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/cryptography/MerkleProof.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev These functions deal with verification of Merkle trees (hash trees), + */ +library MerkleProof { + /** + * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree + * defined by `root`. For this, a `proof` must be provided, containing + * sibling hashes on the branch from the leaf to the root of the tree. Each + * pair of leaves and each pair of pre-images are assumed to be sorted. + */ + function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { + bytes32 computedHash = leaf; + + for (uint256 i = 0; i < proof.length; i++) { + bytes32 proofElement = proof[i]; + + if (computedHash <= proofElement) { + // Hash(current computed hash + current element of the proof) + computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); + } else { + // Hash(current element of the proof + current computed hash) + computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); + } + } + + // Check if the computed hash (root) is equal to the provided root + return computedHash == root; + } +} diff --git a/node_modules/@openzeppelin/contracts/cryptography/README.adoc b/node_modules/@openzeppelin/contracts/cryptography/README.adoc new file mode 100644 index 0000000..2adc27f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/cryptography/README.adoc @@ -0,0 +1,9 @@ += Cryptography + +This collection of libraries provides simple and safe ways to use different cryptographic primitives. + +== Libraries + +{{ECDSA}} + +{{MerkleProof}} diff --git a/node_modules/@openzeppelin/contracts/introspection/ERC165.sol b/node_modules/@openzeppelin/contracts/introspection/ERC165.sol new file mode 100644 index 0000000..8f34a88 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/ERC165.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IERC165.sol"; + +/** + * @dev Implementation of the {IERC165} interface. + * + * Contracts may inherit from this and call {_registerInterface} to declare + * their support of an interface. + */ +contract ERC165 is IERC165 { + /* + * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7 + */ + bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; + + /** + * @dev Mapping of interface ids to whether or not it's supported. + */ + mapping(bytes4 => bool) private _supportedInterfaces; + + constructor () internal { + // Derived contracts need only register support for their own interfaces, + // we register support for ERC165 itself here + _registerInterface(_INTERFACE_ID_ERC165); + } + + /** + * @dev See {IERC165-supportsInterface}. + * + * Time complexity O(1), guaranteed to always use less than 30 000 gas. + */ + function supportsInterface(bytes4 interfaceId) public view override returns (bool) { + return _supportedInterfaces[interfaceId]; + } + + /** + * @dev Registers the contract as an implementer of the interface defined by + * `interfaceId`. Support of the actual ERC165 interface is automatic and + * registering its interface id is not required. + * + * See {IERC165-supportsInterface}. + * + * Requirements: + * + * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`). + */ + function _registerInterface(bytes4 interfaceId) internal virtual { + require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); + _supportedInterfaces[interfaceId] = true; + } +} diff --git a/node_modules/@openzeppelin/contracts/introspection/ERC165Checker.sol b/node_modules/@openzeppelin/contracts/introspection/ERC165Checker.sol new file mode 100644 index 0000000..5469e02 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/ERC165Checker.sol @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +/** + * @dev Library used to query support of an interface declared via {IERC165}. + * + * Note that these functions return the actual result of the query: they do not + * `revert` if an interface is not supported. It is up to the caller to decide + * what to do in these cases. + */ +library ERC165Checker { + // As per the EIP-165 spec, no interface should ever match 0xffffffff + bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff; + + /* + * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7 + */ + bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; + + /** + * @dev Returns true if `account` supports the {IERC165} interface, + */ + function supportsERC165(address account) internal view returns (bool) { + // Any contract that implements ERC165 must explicitly indicate support of + // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid + return _supportsERC165Interface(account, _INTERFACE_ID_ERC165) && + !_supportsERC165Interface(account, _INTERFACE_ID_INVALID); + } + + /** + * @dev Returns true if `account` supports the interface defined by + * `interfaceId`. Support for {IERC165} itself is queried automatically. + * + * See {IERC165-supportsInterface}. + */ + function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) { + // query support of both ERC165 as per the spec and support of _interfaceId + return supportsERC165(account) && + _supportsERC165Interface(account, interfaceId); + } + + /** + * @dev Returns true if `account` supports all the interfaces defined in + * `interfaceIds`. Support for {IERC165} itself is queried automatically. + * + * Batch-querying can lead to gas savings by skipping repeated checks for + * {IERC165} support. + * + * See {IERC165-supportsInterface}. + */ + function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) { + // query support of ERC165 itself + if (!supportsERC165(account)) { + return false; + } + + // query support of each interface in _interfaceIds + for (uint256 i = 0; i < interfaceIds.length; i++) { + if (!_supportsERC165Interface(account, interfaceIds[i])) { + return false; + } + } + + // all interfaces supported + return true; + } + + /** + * @notice Query if a contract implements an interface, does not check ERC165 support + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return true if the contract at account indicates support of the interface with + * identifier interfaceId, false otherwise + * @dev Assumes that account contains a contract that supports ERC165, otherwise + * the behavior of this method is undefined. This precondition can be checked + * with {supportsERC165}. + * Interface identification is specified in ERC-165. + */ + function _supportsERC165Interface(address account, bytes4 interfaceId) private view returns (bool) { + // success determines whether the staticcall succeeded and result determines + // whether the contract at account indicates support of _interfaceId + (bool success, bool result) = _callERC165SupportsInterface(account, interfaceId); + + return (success && result); + } + + /** + * @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return success true if the STATICCALL succeeded, false otherwise + * @return result true if the STATICCALL succeeded and the contract at account + * indicates support of the interface with identifier interfaceId, false otherwise + */ + function _callERC165SupportsInterface(address account, bytes4 interfaceId) + private + view + returns (bool, bool) + { + bytes memory encodedParams = abi.encodeWithSelector(_INTERFACE_ID_ERC165, interfaceId); + (bool success, bytes memory result) = account.staticcall{ gas: 30000 }(encodedParams); + if (result.length < 32) return (false, false); + return (success, abi.decode(result, (bool))); + } +} diff --git a/node_modules/@openzeppelin/contracts/introspection/ERC1820Implementer.sol b/node_modules/@openzeppelin/contracts/introspection/ERC1820Implementer.sol new file mode 100644 index 0000000..df740a7 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/ERC1820Implementer.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IERC1820Implementer.sol"; + +/** + * @dev Implementation of the {IERC1820Implementer} interface. + * + * Contracts may inherit from this and call {_registerInterfaceForAddress} to + * declare their willingness to be implementers. + * {IERC1820Registry-setInterfaceImplementer} should then be called for the + * registration to be complete. + */ +contract ERC1820Implementer is IERC1820Implementer { + bytes32 constant private _ERC1820_ACCEPT_MAGIC = keccak256(abi.encodePacked("ERC1820_ACCEPT_MAGIC")); + + mapping(bytes32 => mapping(address => bool)) private _supportedInterfaces; + + /** + * See {IERC1820Implementer-canImplementInterfaceForAddress}. + */ + function canImplementInterfaceForAddress(bytes32 interfaceHash, address account) public view override returns (bytes32) { + return _supportedInterfaces[interfaceHash][account] ? _ERC1820_ACCEPT_MAGIC : bytes32(0x00); + } + + /** + * @dev Declares the contract as willing to be an implementer of + * `interfaceHash` for `account`. + * + * See {IERC1820Registry-setInterfaceImplementer} and + * {IERC1820Registry-interfaceHash}. + */ + function _registerInterfaceForAddress(bytes32 interfaceHash, address account) internal virtual { + _supportedInterfaces[interfaceHash][account] = true; + } +} diff --git a/node_modules/@openzeppelin/contracts/introspection/IERC165.sol b/node_modules/@openzeppelin/contracts/introspection/IERC165.sol new file mode 100644 index 0000000..425458d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/IERC165.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface of the ERC165 standard, as defined in the + * https://eips.ethereum.org/EIPS/eip-165[EIP]. + * + * Implementers can declare support of contract interfaces, which can then be + * queried by others ({ERC165Checker}). + * + * For an implementation, see {ERC165}. + */ +interface IERC165 { + /** + * @dev Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} diff --git a/node_modules/@openzeppelin/contracts/introspection/IERC1820Implementer.sol b/node_modules/@openzeppelin/contracts/introspection/IERC1820Implementer.sol new file mode 100644 index 0000000..1eb89e7 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/IERC1820Implementer.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface for an ERC1820 implementer, as defined in the + * https://eips.ethereum.org/EIPS/eip-1820#interface-implementation-erc1820implementerinterface[EIP]. + * Used by contracts that will be registered as implementers in the + * {IERC1820Registry}. + */ +interface IERC1820Implementer { + /** + * @dev Returns a special value (`ERC1820_ACCEPT_MAGIC`) if this contract + * implements `interfaceHash` for `account`. + * + * See {IERC1820Registry-setInterfaceImplementer}. + */ + function canImplementInterfaceForAddress(bytes32 interfaceHash, address account) external view returns (bytes32); +} diff --git a/node_modules/@openzeppelin/contracts/introspection/IERC1820Registry.sol b/node_modules/@openzeppelin/contracts/introspection/IERC1820Registry.sol new file mode 100644 index 0000000..be92e46 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/IERC1820Registry.sol @@ -0,0 +1,111 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface of the global ERC1820 Registry, as defined in the + * https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register + * implementers for interfaces in this registry, as well as query support. + * + * Implementers may be shared by multiple accounts, and can also implement more + * than a single interface for each account. Contracts can implement interfaces + * for themselves, but externally-owned accounts (EOA) must delegate this to a + * contract. + * + * {IERC165} interfaces can also be queried via the registry. + * + * For an in-depth explanation and source code analysis, see the EIP text. + */ +interface IERC1820Registry { + /** + * @dev Sets `newManager` as the manager for `account`. A manager of an + * account is able to set interface implementers for it. + * + * By default, each account is its own manager. Passing a value of `0x0` in + * `newManager` will reset the manager to this initial state. + * + * Emits a {ManagerChanged} event. + * + * Requirements: + * + * - the caller must be the current manager for `account`. + */ + function setManager(address account, address newManager) external; + + /** + * @dev Returns the manager for `account`. + * + * See {setManager}. + */ + function getManager(address account) external view returns (address); + + /** + * @dev Sets the `implementer` contract as ``account``'s implementer for + * `interfaceHash`. + * + * `account` being the zero address is an alias for the caller's address. + * The zero address can also be used in `implementer` to remove an old one. + * + * See {interfaceHash} to learn how these are created. + * + * Emits an {InterfaceImplementerSet} event. + * + * Requirements: + * + * - the caller must be the current manager for `account`. + * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not + * end in 28 zeroes). + * - `implementer` must implement {IERC1820Implementer} and return true when + * queried for support, unless `implementer` is the caller. See + * {IERC1820Implementer-canImplementInterfaceForAddress}. + */ + function setInterfaceImplementer(address account, bytes32 interfaceHash, address implementer) external; + + /** + * @dev Returns the implementer of `interfaceHash` for `account`. If no such + * implementer is registered, returns the zero address. + * + * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28 + * zeroes), `account` will be queried for support of it. + * + * `account` being the zero address is an alias for the caller's address. + */ + function getInterfaceImplementer(address account, bytes32 interfaceHash) external view returns (address); + + /** + * @dev Returns the interface hash for an `interfaceName`, as defined in the + * corresponding + * https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]. + */ + function interfaceHash(string calldata interfaceName) external pure returns (bytes32); + + /** + * @notice Updates the cache with whether the contract implements an ERC165 interface or not. + * @param account Address of the contract for which to update the cache. + * @param interfaceId ERC165 interface for which to update the cache. + */ + function updateERC165Cache(address account, bytes4 interfaceId) external; + + /** + * @notice Checks whether a contract implements an ERC165 interface or not. + * If the result is not cached a direct lookup on the contract address is performed. + * If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling + * {updateERC165Cache} with the contract address. + * @param account Address of the contract to check. + * @param interfaceId ERC165 interface to check. + * @return True if `account` implements `interfaceId`, false otherwise. + */ + function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool); + + /** + * @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache. + * @param account Address of the contract to check. + * @param interfaceId ERC165 interface to check. + * @return True if `account` implements `interfaceId`, false otherwise. + */ + function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool); + + event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer); + + event ManagerChanged(address indexed account, address indexed newManager); +} diff --git a/node_modules/@openzeppelin/contracts/introspection/README.adoc b/node_modules/@openzeppelin/contracts/introspection/README.adoc new file mode 100644 index 0000000..e1c52d6 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/introspection/README.adoc @@ -0,0 +1,28 @@ += Introspection + +This set of interfaces and contracts deal with https://en.wikipedia.org/wiki/Type_introspection[type introspection] of contracts, that is, examining which functions can be called on them. This is usually referred to as a contract's _interface_. + +Ethereum contracts have no native concept of an interface, so applications must usually simply trust they are not making an incorrect call. For trusted setups this is a non-issue, but often unknown and untrusted third-party addresses need to be interacted with. There may even not be any direct calls to them! (e.g. `ERC20` tokens may be sent to a contract that lacks a way to transfer them out of it, locking them forever). In these cases, a contract _declaring_ its interface can be very helpful in preventing errors. + +There are two main ways to approach this. + +* Locally, where a contract implements `IERC165` and declares an interface, and a second one queries it directly via `ERC165Checker`. +* Globally, where a global and unique registry (`IERC1820Registry`) is used to register implementers of a certain interface (`IERC1820Implementer`). It is then the registry that is queried, which allows for more complex setups, like contracts implementing interfaces for externally-owned accounts. + +Note that, in all cases, accounts simply _declare_ their interfaces, but they are not required to actually implement them. This mechanism can therefore be used to both prevent errors and allow for complex interactions (see `ERC777`), but it must not be relied on for security. + +== Local + +{{IERC165}} + +{{ERC165}} + +{{ERC165Checker}} + +== Global + +{{IERC1820Registry}} + +{{IERC1820Implementer}} + +{{ERC1820Implementer}} diff --git a/node_modules/@openzeppelin/contracts/math/Math.sol b/node_modules/@openzeppelin/contracts/math/Math.sol new file mode 100644 index 0000000..ec4ac22 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/math/Math.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Standard math utilities missing in the Solidity language. + */ +library Math { + /** + * @dev Returns the largest of two numbers. + */ + function max(uint256 a, uint256 b) internal pure returns (uint256) { + return a >= b ? a : b; + } + + /** + * @dev Returns the smallest of two numbers. + */ + function min(uint256 a, uint256 b) internal pure returns (uint256) { + return a < b ? a : b; + } + + /** + * @dev Returns the average of two numbers. The result is rounded towards + * zero. + */ + function average(uint256 a, uint256 b) internal pure returns (uint256) { + // (a + b) / 2 can overflow, so we distribute + return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); + } +} diff --git a/node_modules/@openzeppelin/contracts/math/README.adoc b/node_modules/@openzeppelin/contracts/math/README.adoc new file mode 100644 index 0000000..38d1b97 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/math/README.adoc @@ -0,0 +1,11 @@ += Math + +These are math-related utilities. + +== Libraries + +{{SafeMath}} + +{{SignedSafeMath}} + +{{Math}} diff --git a/node_modules/@openzeppelin/contracts/math/SafeMath.sol b/node_modules/@openzeppelin/contracts/math/SafeMath.sol new file mode 100644 index 0000000..80490ef --- /dev/null +++ b/node_modules/@openzeppelin/contracts/math/SafeMath.sol @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Wrappers over Solidity's arithmetic operations with added overflow + * checks. + * + * Arithmetic operations in Solidity wrap on overflow. This can easily result + * in bugs, because programmers usually assume that an overflow raises an + * error, which is the standard behavior in high level programming languages. + * `SafeMath` restores this intuition by reverting the transaction when an + * operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeMath { + /** + * @dev Returns the addition of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's `+` operator. + * + * Requirements: + * + * - Addition cannot overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, "SafeMath: addition overflow"); + + return c; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting on + * overflow (when the result is negative). + * + * Counterpart to Solidity's `-` operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + return sub(a, b, "SafeMath: subtraction overflow"); + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting with custom message on + * overflow (when the result is negative). + * + * Counterpart to Solidity's `-` operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { + require(b <= a, errorMessage); + uint256 c = a - b; + + return c; + } + + /** + * @dev Returns the multiplication of two unsigned integers, reverting on + * overflow. + * + * Counterpart to Solidity's `*` operator. + * + * Requirements: + * + * - Multiplication cannot overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) { + return 0; + } + + uint256 c = a * b; + require(c / a == b, "SafeMath: multiplication overflow"); + + return c; + } + + /** + * @dev Returns the integer division of two unsigned integers. Reverts on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's `/` operator. Note: this function uses a + * `revert` opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + return div(a, b, "SafeMath: division by zero"); + } + + /** + * @dev Returns the integer division of two unsigned integers. Reverts with custom message on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's `/` operator. Note: this function uses a + * `revert` opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { + require(b > 0, errorMessage); + uint256 c = a / b; + // assert(a == b * c + a % b); // There is no case in which this doesn't hold + + return c; + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * Reverts when dividing by zero. + * + * Counterpart to Solidity's `%` operator. This function uses a `revert` + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + return mod(a, b, "SafeMath: modulo by zero"); + } + + /** + * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), + * Reverts with custom message when dividing by zero. + * + * Counterpart to Solidity's `%` operator. This function uses a `revert` + * opcode (which leaves remaining gas untouched) while Solidity uses an + * invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { + require(b != 0, errorMessage); + return a % b; + } +} diff --git a/node_modules/@openzeppelin/contracts/math/SignedSafeMath.sol b/node_modules/@openzeppelin/contracts/math/SignedSafeMath.sol new file mode 100644 index 0000000..a8f51dc --- /dev/null +++ b/node_modules/@openzeppelin/contracts/math/SignedSafeMath.sol @@ -0,0 +1,92 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @title SignedSafeMath + * @dev Signed math operations with safety checks that revert on error. + */ +library SignedSafeMath { + int256 constant private _INT256_MIN = -2**255; + + /** + * @dev Returns the multiplication of two signed integers, reverting on + * overflow. + * + * Counterpart to Solidity's `*` operator. + * + * Requirements: + * + * - Multiplication cannot overflow. + */ + function mul(int256 a, int256 b) internal pure returns (int256) { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 + if (a == 0) { + return 0; + } + + require(!(a == -1 && b == _INT256_MIN), "SignedSafeMath: multiplication overflow"); + + int256 c = a * b; + require(c / a == b, "SignedSafeMath: multiplication overflow"); + + return c; + } + + /** + * @dev Returns the integer division of two signed integers. Reverts on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's `/` operator. Note: this function uses a + * `revert` opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * + * - The divisor cannot be zero. + */ + function div(int256 a, int256 b) internal pure returns (int256) { + require(b != 0, "SignedSafeMath: division by zero"); + require(!(b == -1 && a == _INT256_MIN), "SignedSafeMath: division overflow"); + + int256 c = a / b; + + return c; + } + + /** + * @dev Returns the subtraction of two signed integers, reverting on + * overflow. + * + * Counterpart to Solidity's `-` operator. + * + * Requirements: + * + * - Subtraction cannot overflow. + */ + function sub(int256 a, int256 b) internal pure returns (int256) { + int256 c = a - b; + require((b >= 0 && c <= a) || (b < 0 && c > a), "SignedSafeMath: subtraction overflow"); + + return c; + } + + /** + * @dev Returns the addition of two signed integers, reverting on + * overflow. + * + * Counterpart to Solidity's `+` operator. + * + * Requirements: + * + * - Addition cannot overflow. + */ + function add(int256 a, int256 b) internal pure returns (int256) { + int256 c = a + b; + require((b >= 0 && c >= a) || (b < 0 && c < a), "SignedSafeMath: addition overflow"); + + return c; + } +} diff --git a/node_modules/@openzeppelin/contracts/package.json b/node_modules/@openzeppelin/contracts/package.json new file mode 100644 index 0000000..daa9b15 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/package.json @@ -0,0 +1,63 @@ +{ + "_from": "@openzeppelin/contracts", + "_id": "@openzeppelin/contracts@3.1.0", + "_inBundle": false, + "_integrity": "sha512-dVXDnUKxrAKLzPdCRkz+N8qsVkK1XxJ6kk3zuI6zaQmcKxN7CkizoDP7lXxcs/Mi2I0mxceTRjJBqlzFffLJrQ==", + "_location": "/@openzeppelin/contracts", + "_phantomChildren": {}, + "_requested": { + "type": "tag", + "registry": true, + "raw": "@openzeppelin/contracts", + "name": "@openzeppelin/contracts", + "escapedName": "@openzeppelin%2fcontracts", + "scope": "@openzeppelin", + "rawSpec": "", + "saveSpec": null, + "fetchSpec": "latest" + }, + "_requiredBy": [ + "#USER", + "/" + ], + "_resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.1.0.tgz", + "_shasum": "bcea457ef89069fbe5a617f50b25b6a8272895d5", + "_spec": "@openzeppelin/contracts", + "_where": "/Users/sbacha/solidity-contracts/relayswap", + "author": { + "name": "OpenZeppelin Community", + "email": "maintainers@openzeppelin.org" + }, + "bugs": { + "url": "https://github.com/OpenZeppelin/openzeppelin-contracts/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Secure Smart Contract library for Solidity", + "files": [ + "**/*.sol", + "/build/contracts/*.json", + "!/mocks", + "!/examples" + ], + "homepage": "https://openzeppelin.com/contracts/", + "keywords": [ + "solidity", + "ethereum", + "smart", + "contracts", + "security", + "zeppelin" + ], + "license": "MIT", + "name": "@openzeppelin/contracts", + "repository": { + "type": "git", + "url": "git+https://github.com/OpenZeppelin/openzeppelin-contracts.git" + }, + "scripts": { + "prepare": "bash ../scripts/prepare-contracts-package.sh", + "prepare-docs": "cd ..; npm run prepare-docs" + }, + "version": "3.1.0" +} diff --git a/node_modules/@openzeppelin/contracts/payment/PaymentSplitter.sol b/node_modules/@openzeppelin/contracts/payment/PaymentSplitter.sol new file mode 100644 index 0000000..cba9621 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/payment/PaymentSplitter.sol @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../GSN/Context.sol"; +import "../math/SafeMath.sol"; + +/** + * @title PaymentSplitter + * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware + * that the Ether will be split in this way, since it is handled transparently by the contract. + * + * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each + * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim + * an amount proportional to the percentage of total shares they were assigned. + * + * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the + * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release} + * function. + */ +contract PaymentSplitter is Context { + using SafeMath for uint256; + + event PayeeAdded(address account, uint256 shares); + event PaymentReleased(address to, uint256 amount); + event PaymentReceived(address from, uint256 amount); + + uint256 private _totalShares; + uint256 private _totalReleased; + + mapping(address => uint256) private _shares; + mapping(address => uint256) private _released; + address[] private _payees; + + /** + * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at + * the matching position in the `shares` array. + * + * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no + * duplicates in `payees`. + */ + constructor (address[] memory payees, uint256[] memory shares) public payable { + // solhint-disable-next-line max-line-length + require(payees.length == shares.length, "PaymentSplitter: payees and shares length mismatch"); + require(payees.length > 0, "PaymentSplitter: no payees"); + + for (uint256 i = 0; i < payees.length; i++) { + _addPayee(payees[i], shares[i]); + } + } + + /** + * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully + * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the + * reliability of the events, and not the actual splitting of Ether. + * + * To learn more about this see the Solidity documentation for + * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback + * functions]. + */ + receive () external payable virtual { + emit PaymentReceived(_msgSender(), msg.value); + } + + /** + * @dev Getter for the total shares held by payees. + */ + function totalShares() public view returns (uint256) { + return _totalShares; + } + + /** + * @dev Getter for the total amount of Ether already released. + */ + function totalReleased() public view returns (uint256) { + return _totalReleased; + } + + /** + * @dev Getter for the amount of shares held by an account. + */ + function shares(address account) public view returns (uint256) { + return _shares[account]; + } + + /** + * @dev Getter for the amount of Ether already released to a payee. + */ + function released(address account) public view returns (uint256) { + return _released[account]; + } + + /** + * @dev Getter for the address of the payee number `index`. + */ + function payee(uint256 index) public view returns (address) { + return _payees[index]; + } + + /** + * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the + * total shares and their previous withdrawals. + */ + function release(address payable account) public virtual { + require(_shares[account] > 0, "PaymentSplitter: account has no shares"); + + uint256 totalReceived = address(this).balance.add(_totalReleased); + uint256 payment = totalReceived.mul(_shares[account]).div(_totalShares).sub(_released[account]); + + require(payment != 0, "PaymentSplitter: account is not due payment"); + + _released[account] = _released[account].add(payment); + _totalReleased = _totalReleased.add(payment); + + account.transfer(payment); + emit PaymentReleased(account, payment); + } + + /** + * @dev Add a new payee to the contract. + * @param account The address of the payee to add. + * @param shares_ The number of shares owned by the payee. + */ + function _addPayee(address account, uint256 shares_) private { + require(account != address(0), "PaymentSplitter: account is the zero address"); + require(shares_ > 0, "PaymentSplitter: shares are 0"); + require(_shares[account] == 0, "PaymentSplitter: account already has shares"); + + _payees.push(account); + _shares[account] = shares_; + _totalShares = _totalShares.add(shares_); + emit PayeeAdded(account, shares_); + } +} diff --git a/node_modules/@openzeppelin/contracts/payment/PullPayment.sol b/node_modules/@openzeppelin/contracts/payment/PullPayment.sol new file mode 100644 index 0000000..605edce --- /dev/null +++ b/node_modules/@openzeppelin/contracts/payment/PullPayment.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +import "./escrow/Escrow.sol"; + +/** + * @dev Simple implementation of a + * https://consensys.github.io/smart-contract-best-practices/recommendations/#favor-pull-over-push-for-external-calls[pull-payment] + * strategy, where the paying contract doesn't interact directly with the + * receiver account, which must withdraw its payments itself. + * + * Pull-payments are often considered the best practice when it comes to sending + * Ether, security-wise. It prevents recipients from blocking execution, and + * eliminates reentrancy concerns. + * + * TIP: If you would like to learn more about reentrancy and alternative ways + * to protect against it, check out our blog post + * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. + * + * To use, derive from the `PullPayment` contract, and use {_asyncTransfer} + * instead of Solidity's `transfer` function. Payees can query their due + * payments with {payments}, and retrieve them with {withdrawPayments}. + */ +contract PullPayment { + Escrow private _escrow; + + constructor () internal { + _escrow = new Escrow(); + } + + /** + * @dev Withdraw accumulated payments, forwarding all gas to the recipient. + * + * Note that _any_ account can call this function, not just the `payee`. + * This means that contracts unaware of the `PullPayment` protocol can still + * receive funds this way, by having a separate account call + * {withdrawPayments}. + * + * WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities. + * Make sure you trust the recipient, or are either following the + * checks-effects-interactions pattern or using {ReentrancyGuard}. + * + * @param payee Whose payments will be withdrawn. + */ + function withdrawPayments(address payable payee) public virtual { + _escrow.withdraw(payee); + } + + /** + * @dev Returns the payments owed to an address. + * @param dest The creditor's address. + */ + function payments(address dest) public view returns (uint256) { + return _escrow.depositsOf(dest); + } + + /** + * @dev Called by the payer to store the sent amount as credit to be pulled. + * Funds sent in this way are stored in an intermediate {Escrow} contract, so + * there is no danger of them being spent before withdrawal. + * + * @param dest The destination address of the funds. + * @param amount The amount to transfer. + */ + function _asyncTransfer(address dest, uint256 amount) internal virtual { + _escrow.deposit{ value: amount }(dest); + } +} diff --git a/node_modules/@openzeppelin/contracts/payment/README.adoc b/node_modules/@openzeppelin/contracts/payment/README.adoc new file mode 100644 index 0000000..56a9f80 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/payment/README.adoc @@ -0,0 +1,19 @@ += Payment + +Utilities related to sending and receiving payments. Examples are {PullPayment}, which implements the best security practices when sending funds to third parties, and {PaymentSplitter} to receive incoming payments among a number of beneficiaries. + +TIP: When transferring funds to and from untrusted third parties, there is always a security risk of reentrancy. If you would like to learn more about this and ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. + +== Utilities + +{{PaymentSplitter}} + +{{PullPayment}} + +== Escrow + +{{Escrow}} + +{{ConditionalEscrow}} + +{{RefundEscrow}} diff --git a/node_modules/@openzeppelin/contracts/payment/escrow/ConditionalEscrow.sol b/node_modules/@openzeppelin/contracts/payment/escrow/ConditionalEscrow.sol new file mode 100644 index 0000000..54bf174 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/payment/escrow/ConditionalEscrow.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./Escrow.sol"; + +/** + * @title ConditionalEscrow + * @dev Base abstract escrow to only allow withdrawal if a condition is met. + * @dev Intended usage: See {Escrow}. Same usage guidelines apply here. + */ +abstract contract ConditionalEscrow is Escrow { + /** + * @dev Returns whether an address is allowed to withdraw their funds. To be + * implemented by derived contracts. + * @param payee The destination address of the funds. + */ + function withdrawalAllowed(address payee) public view virtual returns (bool); + + function withdraw(address payable payee) public virtual override { + require(withdrawalAllowed(payee), "ConditionalEscrow: payee is not allowed to withdraw"); + super.withdraw(payee); + } +} diff --git a/node_modules/@openzeppelin/contracts/payment/escrow/Escrow.sol b/node_modules/@openzeppelin/contracts/payment/escrow/Escrow.sol new file mode 100644 index 0000000..c9fc76e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/payment/escrow/Escrow.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../math/SafeMath.sol"; +import "../../access/Ownable.sol"; +import "../../utils/Address.sol"; + + /** + * @title Escrow + * @dev Base escrow contract, holds funds designated for a payee until they + * withdraw them. + * + * Intended usage: This contract (and derived escrow contracts) should be a + * standalone contract, that only interacts with the contract that instantiated + * it. That way, it is guaranteed that all Ether will be handled according to + * the `Escrow` rules, and there is no need to check for payable functions or + * transfers in the inheritance tree. The contract that uses the escrow as its + * payment method should be its owner, and provide public methods redirecting + * to the escrow's deposit and withdraw. + */ +contract Escrow is Ownable { + using SafeMath for uint256; + using Address for address payable; + + event Deposited(address indexed payee, uint256 weiAmount); + event Withdrawn(address indexed payee, uint256 weiAmount); + + mapping(address => uint256) private _deposits; + + function depositsOf(address payee) public view returns (uint256) { + return _deposits[payee]; + } + + /** + * @dev Stores the sent amount as credit to be withdrawn. + * @param payee The destination address of the funds. + */ + function deposit(address payee) public virtual payable onlyOwner { + uint256 amount = msg.value; + _deposits[payee] = _deposits[payee].add(amount); + + emit Deposited(payee, amount); + } + + /** + * @dev Withdraw accumulated balance for a payee, forwarding all gas to the + * recipient. + * + * WARNING: Forwarding all gas opens the door to reentrancy vulnerabilities. + * Make sure you trust the recipient, or are either following the + * checks-effects-interactions pattern or using {ReentrancyGuard}. + * + * @param payee The address whose funds will be withdrawn and transferred to. + */ + function withdraw(address payable payee) public virtual onlyOwner { + uint256 payment = _deposits[payee]; + + _deposits[payee] = 0; + + payee.sendValue(payment); + + emit Withdrawn(payee, payment); + } +} diff --git a/node_modules/@openzeppelin/contracts/payment/escrow/RefundEscrow.sol b/node_modules/@openzeppelin/contracts/payment/escrow/RefundEscrow.sol new file mode 100644 index 0000000..e581e75 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/payment/escrow/RefundEscrow.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ConditionalEscrow.sol"; + +/** + * @title RefundEscrow + * @dev Escrow that holds funds for a beneficiary, deposited from multiple + * parties. + * @dev Intended usage: See {Escrow}. Same usage guidelines apply here. + * @dev The owner account (that is, the contract that instantiates this + * contract) may deposit, close the deposit period, and allow for either + * withdrawal by the beneficiary, or refunds to the depositors. All interactions + * with `RefundEscrow` will be made through the owner contract. + */ +contract RefundEscrow is ConditionalEscrow { + enum State { Active, Refunding, Closed } + + event RefundsClosed(); + event RefundsEnabled(); + + State private _state; + address payable private _beneficiary; + + /** + * @dev Constructor. + * @param beneficiary The beneficiary of the deposits. + */ + constructor (address payable beneficiary) public { + require(beneficiary != address(0), "RefundEscrow: beneficiary is the zero address"); + _beneficiary = beneficiary; + _state = State.Active; + } + + /** + * @return The current state of the escrow. + */ + function state() public view returns (State) { + return _state; + } + + /** + * @return The beneficiary of the escrow. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @dev Stores funds that may later be refunded. + * @param refundee The address funds will be sent to if a refund occurs. + */ + function deposit(address refundee) public payable virtual override { + require(_state == State.Active, "RefundEscrow: can only deposit while active"); + super.deposit(refundee); + } + + /** + * @dev Allows for the beneficiary to withdraw their funds, rejecting + * further deposits. + */ + function close() public onlyOwner virtual { + require(_state == State.Active, "RefundEscrow: can only close while active"); + _state = State.Closed; + emit RefundsClosed(); + } + + /** + * @dev Allows for refunds to take place, rejecting further deposits. + */ + function enableRefunds() public onlyOwner virtual { + require(_state == State.Active, "RefundEscrow: can only enable refunds while active"); + _state = State.Refunding; + emit RefundsEnabled(); + } + + /** + * @dev Withdraws the beneficiary's funds. + */ + function beneficiaryWithdraw() public virtual { + require(_state == State.Closed, "RefundEscrow: beneficiary can only withdraw while closed"); + _beneficiary.transfer(address(this).balance); + } + + /** + * @dev Returns whether refundees can withdraw their deposits (be refunded). The overridden function receives a + * 'payee' argument, but we ignore it here since the condition is global, not per-payee. + */ + function withdrawalAllowed(address) public view override returns (bool) { + return _state == State.Refunding; + } +} diff --git a/node_modules/@openzeppelin/contracts/presets/ERC1155PresetMinterPauser.sol b/node_modules/@openzeppelin/contracts/presets/ERC1155PresetMinterPauser.sol new file mode 100644 index 0000000..078406a --- /dev/null +++ b/node_modules/@openzeppelin/contracts/presets/ERC1155PresetMinterPauser.sol @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../access/AccessControl.sol"; +import "../GSN/Context.sol"; +import "../token/ERC1155/ERC1155.sol"; +import "../token/ERC1155/ERC1155Burnable.sol"; +import "../token/ERC1155/ERC1155Pausable.sol"; + +/** + * @dev {ERC1155} token, including: + * + * - ability for holders to burn (destroy) their tokens + * - a minter role that allows for token minting (creation) + * - a pauser role that allows to stop all token transfers + * + * This contract uses {AccessControl} to lock permissioned functions using the + * different roles - head to its documentation for details. + * + * The account that deploys the contract will be granted the minter and pauser + * roles, as well as the default admin role, which will let it grant both minter + * and pauser roles to other accounts. + */ +contract ERC1155PresetMinterPauser is Context, AccessControl, ERC1155Burnable, ERC1155Pausable { + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + + /** + * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that + * deploys the contract. + */ + constructor(string memory uri) public ERC1155(uri) { + _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); + + _setupRole(MINTER_ROLE, _msgSender()); + _setupRole(PAUSER_ROLE, _msgSender()); + } + + /** + * @dev Creates `amount` new tokens for `to`, of token type `id`. + * + * See {ERC1155-_mint}. + * + * Requirements: + * + * - the caller must have the `MINTER_ROLE`. + */ + function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual { + require(hasRole(MINTER_ROLE, _msgSender()), "ERC1155PresetMinterPauser: must have minter role to mint"); + + _mint(to, id, amount, data); + } + + /** + * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}. + */ + function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public virtual { + require(hasRole(MINTER_ROLE, _msgSender()), "ERC1155PresetMinterPauser: must have minter role to mint"); + + _mintBatch(to, ids, amounts, data); + } + + /** + * @dev Pauses all token transfers. + * + * See {ERC1155Pausable} and {Pausable-_pause}. + * + * Requirements: + * + * - the caller must have the `PAUSER_ROLE`. + */ + function pause() public virtual { + require(hasRole(PAUSER_ROLE, _msgSender()), "ERC1155PresetMinterPauser: must have pauser role to pause"); + _pause(); + } + + /** + * @dev Unpauses all token transfers. + * + * See {ERC1155Pausable} and {Pausable-_unpause}. + * + * Requirements: + * + * - the caller must have the `PAUSER_ROLE`. + */ + function unpause() public virtual { + require(hasRole(PAUSER_ROLE, _msgSender()), "ERC1155PresetMinterPauser: must have pauser role to unpause"); + _unpause(); + } + + function _beforeTokenTransfer( + address operator, + address from, + address to, + uint256[] memory ids, + uint256[] memory amounts, + bytes memory data + ) + internal virtual override(ERC1155, ERC1155Pausable) + { + super._beforeTokenTransfer(operator, from, to, ids, amounts, data); + } +} diff --git a/node_modules/@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol b/node_modules/@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol new file mode 100644 index 0000000..0017595 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../access/AccessControl.sol"; +import "../GSN/Context.sol"; +import "../token/ERC20/ERC20.sol"; +import "../token/ERC20/ERC20Burnable.sol"; +import "../token/ERC20/ERC20Pausable.sol"; + +/** + * @dev {ERC20} token, including: + * + * - ability for holders to burn (destroy) their tokens + * - a minter role that allows for token minting (creation) + * - a pauser role that allows to stop all token transfers + * + * This contract uses {AccessControl} to lock permissioned functions using the + * different roles - head to its documentation for details. + * + * The account that deploys the contract will be granted the minter and pauser + * roles, as well as the default admin role, which will let it grant both minter + * and pauser roles to other accounts. + */ +contract ERC20PresetMinterPauser is Context, AccessControl, ERC20Burnable, ERC20Pausable { + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + + /** + * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the + * account that deploys the contract. + * + * See {ERC20-constructor}. + */ + constructor(string memory name, string memory symbol) public ERC20(name, symbol) { + _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); + + _setupRole(MINTER_ROLE, _msgSender()); + _setupRole(PAUSER_ROLE, _msgSender()); + } + + /** + * @dev Creates `amount` new tokens for `to`. + * + * See {ERC20-_mint}. + * + * Requirements: + * + * - the caller must have the `MINTER_ROLE`. + */ + function mint(address to, uint256 amount) public virtual { + require(hasRole(MINTER_ROLE, _msgSender()), "ERC20PresetMinterPauser: must have minter role to mint"); + _mint(to, amount); + } + + /** + * @dev Pauses all token transfers. + * + * See {ERC20Pausable} and {Pausable-_pause}. + * + * Requirements: + * + * - the caller must have the `PAUSER_ROLE`. + */ + function pause() public virtual { + require(hasRole(PAUSER_ROLE, _msgSender()), "ERC20PresetMinterPauser: must have pauser role to pause"); + _pause(); + } + + /** + * @dev Unpauses all token transfers. + * + * See {ERC20Pausable} and {Pausable-_unpause}. + * + * Requirements: + * + * - the caller must have the `PAUSER_ROLE`. + */ + function unpause() public virtual { + require(hasRole(PAUSER_ROLE, _msgSender()), "ERC20PresetMinterPauser: must have pauser role to unpause"); + _unpause(); + } + + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override(ERC20, ERC20Pausable) { + super._beforeTokenTransfer(from, to, amount); + } +} diff --git a/node_modules/@openzeppelin/contracts/presets/ERC721PresetMinterPauserAutoId.sol b/node_modules/@openzeppelin/contracts/presets/ERC721PresetMinterPauserAutoId.sol new file mode 100644 index 0000000..9a9ce0d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/presets/ERC721PresetMinterPauserAutoId.sol @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../access/AccessControl.sol"; +import "../GSN/Context.sol"; +import "../utils/Counters.sol"; +import "../token/ERC721/ERC721.sol"; +import "../token/ERC721/ERC721Burnable.sol"; +import "../token/ERC721/ERC721Pausable.sol"; + +/** + * @dev {ERC721} token, including: + * + * - ability for holders to burn (destroy) their tokens + * - a minter role that allows for token minting (creation) + * - a pauser role that allows to stop all token transfers + * - token ID and URI autogeneration + * + * This contract uses {AccessControl} to lock permissioned functions using the + * different roles - head to its documentation for details. + * + * The account that deploys the contract will be granted the minter and pauser + * roles, as well as the default admin role, which will let it grant both minter + * and pauser roles to other accounts. + */ +contract ERC721PresetMinterPauserAutoId is Context, AccessControl, ERC721Burnable, ERC721Pausable { + using Counters for Counters.Counter; + + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + + Counters.Counter private _tokenIdTracker; + + /** + * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the + * account that deploys the contract. + * + * Token URIs will be autogenerated based on `baseURI` and their token IDs. + * See {ERC721-tokenURI}. + */ + constructor(string memory name, string memory symbol, string memory baseURI) public ERC721(name, symbol) { + _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); + + _setupRole(MINTER_ROLE, _msgSender()); + _setupRole(PAUSER_ROLE, _msgSender()); + + _setBaseURI(baseURI); + } + + /** + * @dev Creates a new token for `to`. Its token ID will be automatically + * assigned (and available on the emitted {IERC721-Transfer} event), and the token + * URI autogenerated based on the base URI passed at construction. + * + * See {ERC721-_mint}. + * + * Requirements: + * + * - the caller must have the `MINTER_ROLE`. + */ + function mint(address to) public virtual { + require(hasRole(MINTER_ROLE, _msgSender()), "ERC721PresetMinterPauserAutoId: must have minter role to mint"); + + // We can just use balanceOf to create the new tokenId because tokens + // can be burned (destroyed), so we need a separate counter. + _mint(to, _tokenIdTracker.current()); + _tokenIdTracker.increment(); + } + + /** + * @dev Pauses all token transfers. + * + * See {ERC721Pausable} and {Pausable-_pause}. + * + * Requirements: + * + * - the caller must have the `PAUSER_ROLE`. + */ + function pause() public virtual { + require(hasRole(PAUSER_ROLE, _msgSender()), "ERC721PresetMinterPauserAutoId: must have pauser role to pause"); + _pause(); + } + + /** + * @dev Unpauses all token transfers. + * + * See {ERC721Pausable} and {Pausable-_unpause}. + * + * Requirements: + * + * - the caller must have the `PAUSER_ROLE`. + */ + function unpause() public virtual { + require(hasRole(PAUSER_ROLE, _msgSender()), "ERC721PresetMinterPauserAutoId: must have pauser role to unpause"); + _unpause(); + } + + function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override(ERC721, ERC721Pausable) { + super._beforeTokenTransfer(from, to, tokenId); + } +} diff --git a/node_modules/@openzeppelin/contracts/presets/README.adoc b/node_modules/@openzeppelin/contracts/presets/README.adoc new file mode 100644 index 0000000..160aeae --- /dev/null +++ b/node_modules/@openzeppelin/contracts/presets/README.adoc @@ -0,0 +1,15 @@ += Presets + +These contracts integrate different Ethereum standards (ERCs) with custom extensions and modules, showcasing common configurations that are ready to deploy **without having to write any Solidity code**. + +They can be used as-is for quick prototyping and testing, but are **also suitable for production environments**. + +TIP: Intermediate and advanced users can use these as starting points when writing their own contracts, extending them with custom functionality as they see fit. + +== Tokens + +{{ERC20PresetMinterPauser}} + +{{ERC721PresetMinterPauserAutoId}} + +{{ERC1155PresetMinterPauser}} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol new file mode 100644 index 0000000..2e39cbb --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol @@ -0,0 +1,413 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IERC1155.sol"; +import "./IERC1155MetadataURI.sol"; +import "./IERC1155Receiver.sol"; +import "../../GSN/Context.sol"; +import "../../introspection/ERC165.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; + +/** + * + * @dev Implementation of the basic standard multi-token. + * See https://eips.ethereum.org/EIPS/eip-1155 + * Originally based on code by Enjin: https://github.com/enjin/erc-1155 + * + * _Available since v3.1._ + */ +contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { + using SafeMath for uint256; + using Address for address; + + // Mapping from token ID to account balances + mapping (uint256 => mapping(address => uint256)) private _balances; + + // Mapping from account to operator approvals + mapping (address => mapping(address => bool)) private _operatorApprovals; + + // Used as the URI for all token types by relying on ID substition, e.g. https://token-cdn-domain/{id}.json + string private _uri; + + /* + * bytes4(keccak256('balanceOf(address,uint256)')) == 0x00fdd58e + * bytes4(keccak256('balanceOfBatch(address[],uint256[])')) == 0x4e1273f4 + * bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465 + * bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5 + * bytes4(keccak256('safeTransferFrom(address,address,uint256,uint256,bytes)')) == 0xf242432a + * bytes4(keccak256('safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)')) == 0x2eb2c2d6 + * + * => 0x00fdd58e ^ 0x4e1273f4 ^ 0xa22cb465 ^ + * 0xe985e9c5 ^ 0xf242432a ^ 0x2eb2c2d6 == 0xd9b67a26 + */ + bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26; + + /* + * bytes4(keccak256('uri(uint256)')) == 0x0e89341c + */ + bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c; + + /** + * @dev See {_setURI}. + */ + constructor (string memory uri) public { + _setURI(uri); + + // register the supported interfaces to conform to ERC1155 via ERC165 + _registerInterface(_INTERFACE_ID_ERC1155); + + // register the supported interfaces to conform to ERC1155MetadataURI via ERC165 + _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI); + } + + /** + * @dev See {IERC1155MetadataURI-uri}. + * + * This implementation returns the same URI for *all* token types. It relies + * on the token type ID substituion mechanism + * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. + * + * Clients calling this function must replace the `\{id\}` substring with the + * actual token type ID. + */ + function uri(uint256) external view override returns (string memory) { + return _uri; + } + + /** + * @dev See {IERC1155-balanceOf}. + * + * Requirements: + * + * - `account` cannot be the zero address. + */ + function balanceOf(address account, uint256 id) public view override returns (uint256) { + require(account != address(0), "ERC1155: balance query for the zero address"); + return _balances[id][account]; + } + + /** + * @dev See {IERC1155-balanceOfBatch}. + * + * Requirements: + * + * - `accounts` and `ids` must have the same length. + */ + function balanceOfBatch( + address[] memory accounts, + uint256[] memory ids + ) + public + view + override + returns (uint256[] memory) + { + require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); + + uint256[] memory batchBalances = new uint256[](accounts.length); + + for (uint256 i = 0; i < accounts.length; ++i) { + require(accounts[i] != address(0), "ERC1155: batch balance query for the zero address"); + batchBalances[i] = _balances[ids[i]][accounts[i]]; + } + + return batchBalances; + } + + /** + * @dev See {IERC1155-setApprovalForAll}. + */ + function setApprovalForAll(address operator, bool approved) public virtual override { + require(_msgSender() != operator, "ERC1155: setting approval status for self"); + + _operatorApprovals[_msgSender()][operator] = approved; + emit ApprovalForAll(_msgSender(), operator, approved); + } + + /** + * @dev See {IERC1155-isApprovedForAll}. + */ + function isApprovedForAll(address account, address operator) public view override returns (bool) { + return _operatorApprovals[account][operator]; + } + + /** + * @dev See {IERC1155-safeTransferFrom}. + */ + function safeTransferFrom( + address from, + address to, + uint256 id, + uint256 amount, + bytes memory data + ) + public + virtual + override + { + require(to != address(0), "ERC1155: transfer to the zero address"); + require( + from == _msgSender() || isApprovedForAll(from, _msgSender()), + "ERC1155: caller is not owner nor approved" + ); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); + + _balances[id][from] = _balances[id][from].sub(amount, "ERC1155: insufficient balance for transfer"); + _balances[id][to] = _balances[id][to].add(amount); + + emit TransferSingle(operator, from, to, id, amount); + + _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); + } + + /** + * @dev See {IERC1155-safeBatchTransferFrom}. + */ + function safeBatchTransferFrom( + address from, + address to, + uint256[] memory ids, + uint256[] memory amounts, + bytes memory data + ) + public + virtual + override + { + require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); + require(to != address(0), "ERC1155: transfer to the zero address"); + require( + from == _msgSender() || isApprovedForAll(from, _msgSender()), + "ERC1155: transfer caller is not owner nor approved" + ); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, from, to, ids, amounts, data); + + for (uint256 i = 0; i < ids.length; ++i) { + uint256 id = ids[i]; + uint256 amount = amounts[i]; + + _balances[id][from] = _balances[id][from].sub( + amount, + "ERC1155: insufficient balance for transfer" + ); + _balances[id][to] = _balances[id][to].add(amount); + } + + emit TransferBatch(operator, from, to, ids, amounts); + + _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); + } + + /** + * @dev Sets a new URI for all token types, by relying on the token type ID + * substituion mechanism + * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. + * + * By this mechanism, any occurence of the `\{id\}` substring in either the + * URI or any of the amounts in the JSON file at said URI will be replaced by + * clients with the token type ID. + * + * For example, the `https://token-cdn-domain/\{id\}.json` URI would be + * interpreted by clients as + * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` + * for token type ID 0x4cce0. + * + * See {uri}. + * + * Because these URIs cannot be meaningfully represented by the {URI} event, + * this function emits no events. + */ + function _setURI(string memory newuri) internal virtual { + _uri = newuri; + } + + /** + * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`. + * + * Emits a {TransferSingle} event. + * + * Requirements: + * + * - `account` cannot be the zero address. + * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the + * acceptance magic value. + */ + function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual { + require(account != address(0), "ERC1155: mint to the zero address"); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data); + + _balances[id][account] = _balances[id][account].add(amount); + emit TransferSingle(operator, address(0), account, id, amount); + + _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data); + } + + /** + * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. + * + * Requirements: + * + * - `ids` and `amounts` must have the same length. + * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the + * acceptance magic value. + */ + function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual { + require(to != address(0), "ERC1155: mint to the zero address"); + require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); + + for (uint i = 0; i < ids.length; i++) { + _balances[ids[i]][to] = amounts[i].add(_balances[ids[i]][to]); + } + + emit TransferBatch(operator, address(0), to, ids, amounts); + + _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); + } + + /** + * @dev Destroys `amount` tokens of token type `id` from `account` + * + * Requirements: + * + * - `account` cannot be the zero address. + * - `account` must have at least `amount` tokens of token type `id`. + */ + function _burn(address account, uint256 id, uint256 amount) internal virtual { + require(account != address(0), "ERC1155: burn from the zero address"); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); + + _balances[id][account] = _balances[id][account].sub( + amount, + "ERC1155: burn amount exceeds balance" + ); + + emit TransferSingle(operator, account, address(0), id, amount); + } + + /** + * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. + * + * Requirements: + * + * - `ids` and `amounts` must have the same length. + */ + function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual { + require(account != address(0), "ERC1155: burn from the zero address"); + require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, account, address(0), ids, amounts, ""); + + for (uint i = 0; i < ids.length; i++) { + _balances[ids[i]][account] = _balances[ids[i]][account].sub( + amounts[i], + "ERC1155: burn amount exceeds balance" + ); + } + + emit TransferBatch(operator, account, address(0), ids, amounts); + } + + /** + * @dev Hook that is called before any token transfer. This includes minting + * and burning, as well as batched variants. + * + * The same hook is called on both single and batched variants. For single + * transfers, the length of the `id` and `amount` arrays will be 1. + * + * Calling conditions (for each `id` and `amount` pair): + * + * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * of token type `id` will be transferred to `to`. + * - When `from` is zero, `amount` tokens of token type `id` will be minted + * for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` + * will be burned. + * - `from` and `to` are never both zero. + * - `ids` and `amounts` have the same, non-zero length. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer( + address operator, + address from, + address to, + uint256[] memory ids, + uint256[] memory amounts, + bytes memory data + ) + internal virtual + { } + + function _doSafeTransferAcceptanceCheck( + address operator, + address from, + address to, + uint256 id, + uint256 amount, + bytes memory data + ) + private + { + if (to.isContract()) { + try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { + if (response != IERC1155Receiver(to).onERC1155Received.selector) { + revert("ERC1155: ERC1155Receiver rejected tokens"); + } + } catch Error(string memory reason) { + revert(reason); + } catch { + revert("ERC1155: transfer to non ERC1155Receiver implementer"); + } + } + } + + function _doSafeBatchTransferAcceptanceCheck( + address operator, + address from, + address to, + uint256[] memory ids, + uint256[] memory amounts, + bytes memory data + ) + private + { + if (to.isContract()) { + try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) { + if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) { + revert("ERC1155: ERC1155Receiver rejected tokens"); + } + } catch Error(string memory reason) { + revert(reason); + } catch { + revert("ERC1155: transfer to non ERC1155Receiver implementer"); + } + } + } + + function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { + uint256[] memory array = new uint256[](1); + array[0] = element; + + return array; + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Burnable.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Burnable.sol new file mode 100644 index 0000000..83edd47 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Burnable.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ERC1155.sol"; + +/** + * @dev Extension of {ERC1155} that allows token holders to destroy both their + * own tokens and those that they have been approved to use. + * + * _Available since v3.1._ + */ +abstract contract ERC1155Burnable is ERC1155 { + function burn(address account, uint256 id, uint256 value) public virtual { + require( + account == _msgSender() || isApprovedForAll(account, _msgSender()), + "ERC1155: caller is not owner nor approved" + ); + + _burn(account, id, value); + } + + function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual { + require( + account == _msgSender() || isApprovedForAll(account, _msgSender()), + "ERC1155: caller is not owner nor approved" + ); + + _burnBatch(account, ids, values); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol new file mode 100644 index 0000000..82d5979 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ERC1155Receiver.sol"; + +/** + * @dev _Available since v3.1._ + */ +contract ERC1155Holder is ERC1155Receiver { + function onERC1155Received(address, address, uint256, uint256, bytes memory) public virtual override returns (bytes4) { + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) public virtual override returns (bytes4) { + return this.onERC1155BatchReceived.selector; + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Pausable.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Pausable.sol new file mode 100644 index 0000000..a2626cc --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Pausable.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ERC1155.sol"; +import "../../utils/Pausable.sol"; + +/** + * @dev ERC1155 token with pausable token transfers, minting and burning. + * + * Useful for scenarios such as preventing trades until the end of an evaluation + * period, or having an emergency switch for freezing all token transfers in the + * event of a large bug. + * + * _Available since v3.1._ + */ +abstract contract ERC1155Pausable is ERC1155, Pausable { + /** + * @dev See {ERC1155-_beforeTokenTransfer}. + * + * Requirements: + * + * - the contract must not be paused. + */ + function _beforeTokenTransfer( + address operator, + address from, + address to, + uint256[] memory ids, + uint256[] memory amounts, + bytes memory data + ) + internal virtual override + { + super._beforeTokenTransfer(operator, from, to, ids, amounts, data); + + require(!paused(), "ERC1155Pausable: token transfer while paused"); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol new file mode 100644 index 0000000..201660b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IERC1155Receiver.sol"; +import "../../introspection/ERC165.sol"; + +/** + * @dev _Available since v3.1._ + */ +abstract contract ERC1155Receiver is ERC165, IERC1155Receiver { + constructor() public { + _registerInterface( + ERC1155Receiver(0).onERC1155Received.selector ^ + ERC1155Receiver(0).onERC1155BatchReceived.selector + ); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155.sol new file mode 100644 index 0000000..be606be --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155.sol @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +import "../../introspection/IERC165.sol"; + +/** + * @dev Required interface of an ERC1155 compliant contract, as defined in the + * https://eips.ethereum.org/EIPS/eip-1155[EIP]. + * + * _Available since v3.1._ + */ +interface IERC1155 is IERC165 { + /** + * @dev Emitted when `value` tokens of token type `id` are transfered from `from` to `to` by `operator`. + */ + event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); + + /** + * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all + * transfers. + */ + event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values); + + /** + * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to + * `approved`. + */ + event ApprovalForAll(address indexed account, address indexed operator, bool approved); + + /** + * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. + * + * If an {URI} event was emitted for `id`, the standard + * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value + * returned by {IERC1155MetadataURI-uri}. + */ + event URI(string value, uint256 indexed id); + + /** + * @dev Returns the amount of tokens of token type `id` owned by `account`. + * + * Requirements: + * + * - `account` cannot be the zero address. + */ + function balanceOf(address account, uint256 id) external view returns (uint256); + + /** + * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. + * + * Requirements: + * + * - `accounts` and `ids` must have the same length. + */ + function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); + + /** + * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, + * + * Emits an {ApprovalForAll} event. + * + * Requirements: + * + * - `operator` cannot be the caller. + */ + function setApprovalForAll(address operator, bool approved) external; + + /** + * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. + * + * See {setApprovalForAll}. + */ + function isApprovedForAll(address account, address operator) external view returns (bool); + + /** + * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. + * + * Emits a {TransferSingle} event. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. + * - `from` must have a balance of tokens of type `id` of at least `amount`. + * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the + * acceptance magic value. + */ + function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; + + /** + * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. + * + * Emits a {TransferBatch} event. + * + * Requirements: + * + * - `ids` and `amounts` must have the same length. + * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the + * acceptance magic value. + */ + function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external; +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol new file mode 100644 index 0000000..2716c77 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +import "./IERC1155.sol"; + +/** + * @dev Interface of the optional ERC1155MetadataExtension interface, as defined + * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. + * + * _Available since v3.1._ + */ +interface IERC1155MetadataURI is IERC1155 { + /** + * @dev Returns the URI for token type `id`. + * + * If the `\{id\}` substring is present in the URI, it must be replaced by + * clients with the actual token type ID. + */ + function uri(uint256 id) external view returns (string memory); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol b/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol new file mode 100644 index 0000000..6bd3dc2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../introspection/IERC165.sol"; + +/** + * _Available since v3.1._ + */ +interface IERC1155Receiver is IERC165 { + + /** + @dev Handles the receipt of a single ERC1155 token type. This function is + called at the end of a `safeTransferFrom` after the balance has been updated. + To accept the transfer, this must return + `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` + (i.e. 0xf23a6e61, or its own function selector). + @param operator The address which initiated the transfer (i.e. msg.sender) + @param from The address which previously owned the token + @param id The ID of the token being transferred + @param value The amount of tokens being transferred + @param data Additional data with no specified format + @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed + */ + function onERC1155Received( + address operator, + address from, + uint256 id, + uint256 value, + bytes calldata data + ) + external + returns(bytes4); + + /** + @dev Handles the receipt of a multiple ERC1155 token types. This function + is called at the end of a `safeBatchTransferFrom` after the balances have + been updated. To accept the transfer(s), this must return + `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` + (i.e. 0xbc197c81, or its own function selector). + @param operator The address which initiated the batch transfer (i.e. msg.sender) + @param from The address which previously owned the token + @param ids An array containing ids of each token being transferred (order and length must match values array) + @param values An array containing amounts of each token being transferred (order and length must match ids array) + @param data Additional data with no specified format + @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed + */ + function onERC1155BatchReceived( + address operator, + address from, + uint256[] calldata ids, + uint256[] calldata values, + bytes calldata data + ) + external + returns(bytes4); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC1155/README.adoc b/node_modules/@openzeppelin/contracts/token/ERC1155/README.adoc new file mode 100644 index 0000000..ff3ea62 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC1155/README.adoc @@ -0,0 +1,32 @@ += ERC 1155 + +This set of interfaces and contracts are all related to the https://eips.ethereum.org/EIPS/eip-1155[ERC1155 Multi Token Standard]. + +The EIP consists of three interfaces which fulfill different roles, found here as {IERC1155}, {IERC1155MetadataURI} and {IERC1155Receiver}. + +{ERC1155} implements the mandatory {IERC1155} interface, as well as the optional extension {IERC1155MetadataURI}, by relying on the substitution mechanism to use the same URI for all token types, dramatically reducing gas costs. + +Additionally there are multiple custom extensions, including: + +* designation of addresses that can pause token transfers for all users ({ERC1155Pausable}). +* destruction of own tokens ({ERC1155Burnable}). + +== Core + +{{IERC1155}} + +{{IERC1155MetadataURI}} + +{{ERC1155}} + +{{IERC1155Receiver}} + +== Extensions + +{{ERC1155Pausable}} + +{{ERC1155Burnable}} + +== Convenience + +{{ERC1155Holder}} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol new file mode 100644 index 0000000..a8ab97f --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol @@ -0,0 +1,307 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../GSN/Context.sol"; +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; + +/** + * @dev Implementation of the {IERC20} interface. + * + * This implementation is agnostic to the way tokens are created. This means + * that a supply mechanism has to be added in a derived contract using {_mint}. + * For a generic mechanism see {ERC20PresetMinterPauser}. + * + * TIP: For a detailed writeup see our guide + * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How + * to implement supply mechanisms]. + * + * We have followed general OpenZeppelin guidelines: functions revert instead + * of returning `false` on failure. This behavior is nonetheless conventional + * and does not conflict with the expectations of ERC20 applications. + * + * Additionally, an {Approval} event is emitted on calls to {transferFrom}. + * This allows applications to reconstruct the allowance for all accounts just + * by listening to said events. Other implementations of the EIP may not emit + * these events, as it isn't required by the specification. + * + * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} + * functions have been added to mitigate the well-known issues around setting + * allowances. See {IERC20-approve}. + */ +contract ERC20 is Context, IERC20 { + using SafeMath for uint256; + using Address for address; + + mapping (address => uint256) private _balances; + + mapping (address => mapping (address => uint256)) private _allowances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + uint8 private _decimals; + + /** + * @dev Sets the values for {name} and {symbol}, initializes {decimals} with + * a default value of 18. + * + * To select a different value for {decimals}, use {_setupDecimals}. + * + * All three of these values are immutable: they can only be set once during + * construction. + */ + constructor (string memory name, string memory symbol) public { + _name = name; + _symbol = symbol; + _decimals = 18; + } + + /** + * @dev Returns the name of the token. + */ + function name() public view returns (string memory) { + return _name; + } + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() public view returns (string memory) { + return _symbol; + } + + /** + * @dev Returns the number of decimals used to get its user representation. + * For example, if `decimals` equals `2`, a balance of `505` tokens should + * be displayed to a user as `5,05` (`505 / 10 ** 2`). + * + * Tokens usually opt for a value of 18, imitating the relationship between + * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is + * called. + * + * NOTE: This information is only used for _display_ purposes: it in + * no way affects any of the arithmetic of the contract, including + * {IERC20-balanceOf} and {IERC20-transfer}. + */ + function decimals() public view returns (uint8) { + return _decimals; + } + + /** + * @dev See {IERC20-totalSupply}. + */ + function totalSupply() public view override returns (uint256) { + return _totalSupply; + } + + /** + * @dev See {IERC20-balanceOf}. + */ + function balanceOf(address account) public view override returns (uint256) { + return _balances[account]; + } + + /** + * @dev See {IERC20-transfer}. + * + * Requirements: + * + * - `recipient` cannot be the zero address. + * - the caller must have a balance of at least `amount`. + */ + function transfer(address recipient, uint256 amount) public virtual override returns (bool) { + _transfer(_msgSender(), recipient, amount); + return true; + } + + /** + * @dev See {IERC20-allowance}. + */ + function allowance(address owner, address spender) public view virtual override returns (uint256) { + return _allowances[owner][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function approve(address spender, uint256 amount) public virtual override returns (bool) { + _approve(_msgSender(), spender, amount); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Emits an {Approval} event indicating the updated allowance. This is not + * required by the EIP. See the note at the beginning of {ERC20}; + * + * Requirements: + * - `sender` and `recipient` cannot be the zero address. + * - `sender` must have a balance of at least `amount`. + * - the caller must have allowance for ``sender``'s tokens of at least + * `amount`. + */ + function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { + _transfer(sender, recipient, amount); + _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); + return true; + } + + /** + * @dev Atomically increases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + */ + function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); + return true; + } + + /** + * @dev Atomically decreases the allowance granted to `spender` by the caller. + * + * This is an alternative to {approve} that can be used as a mitigation for + * problems described in {IERC20-approve}. + * + * Emits an {Approval} event indicating the updated allowance. + * + * Requirements: + * + * - `spender` cannot be the zero address. + * - `spender` must have allowance for the caller of at least + * `subtractedValue`. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); + return true; + } + + /** + * @dev Moves tokens `amount` from `sender` to `recipient`. + * + * This is internal function is equivalent to {transfer}, and can be used to + * e.g. implement automatic token fees, slashing mechanisms, etc. + * + * Emits a {Transfer} event. + * + * Requirements: + * + * - `sender` cannot be the zero address. + * - `recipient` cannot be the zero address. + * - `sender` must have a balance of at least `amount`. + */ + function _transfer(address sender, address recipient, uint256 amount) internal virtual { + require(sender != address(0), "ERC20: transfer from the zero address"); + require(recipient != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(sender, recipient, amount); + + _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); + _balances[recipient] = _balances[recipient].add(amount); + emit Transfer(sender, recipient, amount); + } + + /** @dev Creates `amount` tokens and assigns them to `account`, increasing + * the total supply. + * + * Emits a {Transfer} event with `from` set to the zero address. + * + * Requirements + * + * - `to` cannot be the zero address. + */ + function _mint(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: mint to the zero address"); + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply = _totalSupply.add(amount); + _balances[account] = _balances[account].add(amount); + emit Transfer(address(0), account, amount); + } + + /** + * @dev Destroys `amount` tokens from `account`, reducing the + * total supply. + * + * Emits a {Transfer} event with `to` set to the zero address. + * + * Requirements + * + * - `account` cannot be the zero address. + * - `account` must have at least `amount` tokens. + */ + function _burn(address account, uint256 amount) internal virtual { + require(account != address(0), "ERC20: burn from the zero address"); + + _beforeTokenTransfer(account, address(0), amount); + + _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); + _totalSupply = _totalSupply.sub(amount); + emit Transfer(account, address(0), amount); + } + + /** + * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. + * + * This is internal function is equivalent to `approve`, and can be used to + * e.g. set automatic allowances for certain subsystems, etc. + * + * Emits an {Approval} event. + * + * Requirements: + * + * - `owner` cannot be the zero address. + * - `spender` cannot be the zero address. + */ + function _approve(address owner, address spender, uint256 amount) internal virtual { + require(owner != address(0), "ERC20: approve from the zero address"); + require(spender != address(0), "ERC20: approve to the zero address"); + + _allowances[owner][spender] = amount; + emit Approval(owner, spender, amount); + } + + /** + * @dev Sets {decimals} to a value other than the default one of 18. + * + * WARNING: This function should only be called from the constructor. Most + * applications that interact with token contracts will not expect + * {decimals} to ever change, and may work incorrectly if it does. + */ + function _setupDecimals(uint8 decimals_) internal { + _decimals = decimals_; + } + + /** + * @dev Hook that is called before any transfer of tokens. This includes + * minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * will be to transferred to `to`. + * - when `from` is zero, `amount` tokens will be minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens will be burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol new file mode 100644 index 0000000..2ce6bac --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../GSN/Context.sol"; +import "./ERC20.sol"; + +/** + * @dev Extension of {ERC20} that allows token holders to destroy both their own + * tokens and those that they have an allowance for, in a way that can be + * recognized off-chain (via event analysis). + */ +abstract contract ERC20Burnable is Context, ERC20 { + /** + * @dev Destroys `amount` tokens from the caller. + * + * See {ERC20-_burn}. + */ + function burn(uint256 amount) public virtual { + _burn(_msgSender(), amount); + } + + /** + * @dev Destroys `amount` tokens from `account`, deducting from the caller's + * allowance. + * + * See {ERC20-_burn} and {ERC20-allowance}. + * + * Requirements: + * + * - the caller must have allowance for ``accounts``'s tokens of at least + * `amount`. + */ + function burnFrom(address account, uint256 amount) public virtual { + uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance"); + + _approve(account, _msgSender(), decreasedAllowance); + _burn(account, amount); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Capped.sol b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Capped.sol new file mode 100644 index 0000000..3cff3b7 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Capped.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ERC20.sol"; + +/** + * @dev Extension of {ERC20} that adds a cap to the supply of tokens. + */ +abstract contract ERC20Capped is ERC20 { + uint256 private _cap; + + /** + * @dev Sets the value of the `cap`. This value is immutable, it can only be + * set once during construction. + */ + constructor (uint256 cap) public { + require(cap > 0, "ERC20Capped: cap is 0"); + _cap = cap; + } + + /** + * @dev Returns the cap on the token's total supply. + */ + function cap() public view returns (uint256) { + return _cap; + } + + /** + * @dev See {ERC20-_beforeTokenTransfer}. + * + * Requirements: + * + * - minted tokens must not cause the total supply to go over the cap. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { + super._beforeTokenTransfer(from, to, amount); + + if (from == address(0)) { // When minting tokens + require(totalSupply().add(amount) <= _cap, "ERC20Capped: cap exceeded"); + } + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol new file mode 100644 index 0000000..a08b9df --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ERC20.sol"; +import "../../utils/Pausable.sol"; + +/** + * @dev ERC20 token with pausable token transfers, minting and burning. + * + * Useful for scenarios such as preventing trades until the end of an evaluation + * period, or having an emergency switch for freezing all token transfers in the + * event of a large bug. + */ +abstract contract ERC20Pausable is ERC20, Pausable { + /** + * @dev See {ERC20-_beforeTokenTransfer}. + * + * Requirements: + * + * - the contract must not be paused. + */ + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { + super._beforeTokenTransfer(from, to, amount); + + require(!paused(), "ERC20Pausable: token transfer while paused"); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Snapshot.sol b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Snapshot.sol new file mode 100644 index 0000000..54d91c0 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/ERC20Snapshot.sol @@ -0,0 +1,184 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../math/SafeMath.sol"; +import "../../utils/Arrays.sol"; +import "../../utils/Counters.sol"; +import "./ERC20.sol"; + +/** + * @dev This contract extends an ERC20 token with a snapshot mechanism. When a snapshot is created, the balances and + * total supply at the time are recorded for later access. + * + * This can be used to safely create mechanisms based on token balances such as trustless dividends or weighted voting. + * In naive implementations it's possible to perform a "double spend" attack by reusing the same balance from different + * accounts. By using snapshots to calculate dividends or voting power, those attacks no longer apply. It can also be + * used to create an efficient ERC20 forking mechanism. + * + * Snapshots are created by the internal {_snapshot} function, which will emit the {Snapshot} event and return a + * snapshot id. To get the total supply at the time of a snapshot, call the function {totalSupplyAt} with the snapshot + * id. To get the balance of an account at the time of a snapshot, call the {balanceOfAt} function with the snapshot id + * and the account address. + * + * ==== Gas Costs + * + * Snapshots are efficient. Snapshot creation is _O(1)_. Retrieval of balances or total supply from a snapshot is _O(log + * n)_ in the number of snapshots that have been created, although _n_ for a specific account will generally be much + * smaller since identical balances in subsequent snapshots are stored as a single entry. + * + * There is a constant overhead for normal ERC20 transfers due to the additional snapshot bookkeeping. This overhead is + * only significant for the first transfer that immediately follows a snapshot for a particular account. Subsequent + * transfers will have normal cost until the next snapshot, and so on. + */ +abstract contract ERC20Snapshot is ERC20 { + // Inspired by Jordi Baylina's MiniMeToken to record historical balances: + // https://github.com/Giveth/minimd/blob/ea04d950eea153a04c51fa510b068b9dded390cb/contracts/MiniMeToken.sol + + using SafeMath for uint256; + using Arrays for uint256[]; + using Counters for Counters.Counter; + + // Snapshotted values have arrays of ids and the value corresponding to that id. These could be an array of a + // Snapshot struct, but that would impede usage of functions that work on an array. + struct Snapshots { + uint256[] ids; + uint256[] values; + } + + mapping (address => Snapshots) private _accountBalanceSnapshots; + Snapshots private _totalSupplySnapshots; + + // Snapshot ids increase monotonically, with the first value being 1. An id of 0 is invalid. + Counters.Counter private _currentSnapshotId; + + /** + * @dev Emitted by {_snapshot} when a snapshot identified by `id` is created. + */ + event Snapshot(uint256 id); + + /** + * @dev Creates a new snapshot and returns its snapshot id. + * + * Emits a {Snapshot} event that contains the same id. + * + * {_snapshot} is `internal` and you have to decide how to expose it externally. Its usage may be restricted to a + * set of accounts, for example using {AccessControl}, or it may be open to the public. + * + * [WARNING] + * ==== + * While an open way of calling {_snapshot} is required for certain trust minimization mechanisms such as forking, + * you must consider that it can potentially be used by attackers in two ways. + * + * First, it can be used to increase the cost of retrieval of values from snapshots, although it will grow + * logarithmically thus rendering this attack ineffective in the long term. Second, it can be used to target + * specific accounts and increase the cost of ERC20 transfers for them, in the ways specified in the Gas Costs + * section above. + * + * We haven't measured the actual numbers; if this is something you're interested in please reach out to us. + * ==== + */ + function _snapshot() internal virtual returns (uint256) { + _currentSnapshotId.increment(); + + uint256 currentId = _currentSnapshotId.current(); + emit Snapshot(currentId); + return currentId; + } + + /** + * @dev Retrieves the balance of `account` at the time `snapshotId` was created. + */ + function balanceOfAt(address account, uint256 snapshotId) public view returns (uint256) { + (bool snapshotted, uint256 value) = _valueAt(snapshotId, _accountBalanceSnapshots[account]); + + return snapshotted ? value : balanceOf(account); + } + + /** + * @dev Retrieves the total supply at the time `snapshotId` was created. + */ + function totalSupplyAt(uint256 snapshotId) public view returns(uint256) { + (bool snapshotted, uint256 value) = _valueAt(snapshotId, _totalSupplySnapshots); + + return snapshotted ? value : totalSupply(); + } + + // _transfer, _mint and _burn are the only functions where the balances are modified, so it is there that the + // snapshots are updated. Note that the update happens _before_ the balance change, with the pre-modified value. + // The same is true for the total supply and _mint and _burn. + function _transfer(address from, address to, uint256 value) internal virtual override { + _updateAccountSnapshot(from); + _updateAccountSnapshot(to); + + super._transfer(from, to, value); + } + + function _mint(address account, uint256 value) internal virtual override { + _updateAccountSnapshot(account); + _updateTotalSupplySnapshot(); + + super._mint(account, value); + } + + function _burn(address account, uint256 value) internal virtual override { + _updateAccountSnapshot(account); + _updateTotalSupplySnapshot(); + + super._burn(account, value); + } + + function _valueAt(uint256 snapshotId, Snapshots storage snapshots) + private view returns (bool, uint256) + { + require(snapshotId > 0, "ERC20Snapshot: id is 0"); + // solhint-disable-next-line max-line-length + require(snapshotId <= _currentSnapshotId.current(), "ERC20Snapshot: nonexistent id"); + + // When a valid snapshot is queried, there are three possibilities: + // a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never + // created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds + // to this id is the current one. + // b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the + // requested id, and its value is the one to return. + // c) More snapshots were created after the requested one, and the queried value was later modified. There will be + // no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is + // larger than the requested one. + // + // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if + // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does + // exactly this. + + uint256 index = snapshots.ids.findUpperBound(snapshotId); + + if (index == snapshots.ids.length) { + return (false, 0); + } else { + return (true, snapshots.values[index]); + } + } + + function _updateAccountSnapshot(address account) private { + _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account)); + } + + function _updateTotalSupplySnapshot() private { + _updateSnapshot(_totalSupplySnapshots, totalSupply()); + } + + function _updateSnapshot(Snapshots storage snapshots, uint256 currentValue) private { + uint256 currentId = _currentSnapshotId.current(); + if (_lastSnapshotId(snapshots.ids) < currentId) { + snapshots.ids.push(currentId); + snapshots.values.push(currentValue); + } + } + + function _lastSnapshotId(uint256[] storage ids) private view returns (uint256) { + if (ids.length == 0) { + return 0; + } else { + return ids[ids.length - 1]; + } + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol b/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol new file mode 100644 index 0000000..a1f9ca7 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface of the ERC20 standard as defined in the EIP. + */ +interface IERC20 { + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by `account`. + */ + function balanceOf(address account) external view returns (uint256); + + /** + * @dev Moves `amount` tokens from the caller's account to `recipient`. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transfer(address recipient, uint256 amount) external returns (bool); + + /** + * @dev Returns the remaining number of tokens that `spender` will be + * allowed to spend on behalf of `owner` through {transferFrom}. This is + * zero by default. + * + * This value changes when {approve} or {transferFrom} are called. + */ + function allowance(address owner, address spender) external view returns (uint256); + + /** + * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * IMPORTANT: Beware that changing an allowance with this method brings the risk + * that someone may use both the old and the new allowance by unfortunate + * transaction ordering. One possible solution to mitigate this race + * condition is to first reduce the spender's allowance to 0 and set the + * desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * + * Emits an {Approval} event. + */ + function approve(address spender, uint256 amount) external returns (bool); + + /** + * @dev Moves `amount` tokens from `sender` to `recipient` using the + * allowance mechanism. `amount` is then deducted from the caller's + * allowance. + * + * Returns a boolean value indicating whether the operation succeeded. + * + * Emits a {Transfer} event. + */ + function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); + + /** + * @dev Emitted when `value` tokens are moved from one account (`from`) to + * another (`to`). + * + * Note that `value` may be zero. + */ + event Transfer(address indexed from, address indexed to, uint256 value); + + /** + * @dev Emitted when the allowance of a `spender` for an `owner` is set by + * a call to {approve}. `value` is the new allowance. + */ + event Approval(address indexed owner, address indexed spender, uint256 value); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/README.adoc b/node_modules/@openzeppelin/contracts/token/ERC20/README.adoc new file mode 100644 index 0000000..edbd156 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/README.adoc @@ -0,0 +1,44 @@ += ERC 20 + +This set of interfaces, contracts, and utilities are all related to the https://eips.ethereum.org/EIPS/eip-20[ERC20 Token Standard]. + +TIP: For an overview of ERC20 tokens and a walkthrough on how to create a token contract read our xref:ROOT:erc20.adoc[ERC20 guide]. + +There a few core contracts that implement the behavior specified in the EIP: + +* {IERC20}: the interface all ERC20 implementations should conform to. +* {ERC20}: the implementation of the ERC20 interface, including the <>, <> and <> optional standard extension to the base interface. + +Additionally there are multiple custom extensions, including: + +* designation of addresses that can pause token transfers for all users ({ERC20Pausable}). +* efficient storage of past token balances to be later queried at any point in time ({ERC20Snapshot}). +* destruction of own tokens ({ERC20Burnable}). +* enforcement of a cap to the total supply when minting tokens ({ERC20Capped}). + +Finally, there are some utilities to interact with ERC20 contracts in various ways. + +* {SafeERC20} is a wrapper around the interface that eliminates the need to handle boolean return values. +* {TokenTimelock} can hold tokens for a beneficiary until a specified time. + +== Core + +{{IERC20}} + +{{ERC20}} + +== Extensions + +{{ERC20Snapshot}} + +{{ERC20Pausable}} + +{{ERC20Burnable}} + +{{ERC20Capped}} + +== Utilities + +{{SafeERC20}} + +{{TokenTimelock}} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol b/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol new file mode 100644 index 0000000..e5f0d23 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; + +/** + * @title SafeERC20 + * @dev Wrappers around ERC20 operations that throw on failure (when the token + * contract returns false). Tokens that return no value (and instead revert or + * throw on failure) are also supported, non-reverting calls are assumed to be + * successful. + * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, + * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. + */ +library SafeERC20 { + using SafeMath for uint256; + using Address for address; + + function safeTransfer(IERC20 token, address to, uint256 value) internal { + _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); + } + + function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { + _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); + } + + /** + * @dev Deprecated. This function has issues similar to the ones found in + * {IERC20-approve}, and its usage is discouraged. + * + * Whenever possible, use {safeIncreaseAllowance} and + * {safeDecreaseAllowance} instead. + */ + function safeApprove(IERC20 token, address spender, uint256 value) internal { + // safeApprove should only be called when setting an initial allowance, + // or when resetting it to zero. To increase and decrease it, use + // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' + // solhint-disable-next-line max-line-length + require((value == 0) || (token.allowance(address(this), spender) == 0), + "SafeERC20: approve from non-zero to non-zero allowance" + ); + _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); + } + + function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { + uint256 newAllowance = token.allowance(address(this), spender).add(value); + _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); + } + + function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { + uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); + _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); + } + + /** + * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement + * on the return value: the return value is optional (but if data is returned, it must not be false). + * @param token The token targeted by the call. + * @param data The call data (encoded using abi.encode or one of its variants). + */ + function _callOptionalReturn(IERC20 token, bytes memory data) private { + // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since + // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that + // the target address contains contract code and also asserts for success in the low-level call. + + bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); + if (returndata.length > 0) { // Return data is optional + // solhint-disable-next-line max-line-length + require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); + } + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC20/TokenTimelock.sol b/node_modules/@openzeppelin/contracts/token/ERC20/TokenTimelock.sol new file mode 100644 index 0000000..0d05ed8 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC20/TokenTimelock.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./SafeERC20.sol"; + +/** + * @dev A token holder contract that will allow a beneficiary to extract the + * tokens after a given release time. + * + * Useful for simple vesting schedules like "advisors get all of their tokens + * after 1 year". + */ +contract TokenTimelock { + using SafeERC20 for IERC20; + + // ERC20 basic token contract being held + IERC20 private _token; + + // beneficiary of tokens after they are released + address private _beneficiary; + + // timestamp when token release is enabled + uint256 private _releaseTime; + + constructor (IERC20 token, address beneficiary, uint256 releaseTime) public { + // solhint-disable-next-line not-rely-on-time + require(releaseTime > block.timestamp, "TokenTimelock: release time is before current time"); + _token = token; + _beneficiary = beneficiary; + _releaseTime = releaseTime; + } + + /** + * @return the token being held. + */ + function token() public view returns (IERC20) { + return _token; + } + + /** + * @return the beneficiary of the tokens. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @return the time when the tokens are released. + */ + function releaseTime() public view returns (uint256) { + return _releaseTime; + } + + /** + * @notice Transfers tokens held by timelock to beneficiary. + */ + function release() public virtual { + // solhint-disable-next-line not-rely-on-time + require(block.timestamp >= _releaseTime, "TokenTimelock: current time is before release time"); + + uint256 amount = _token.balanceOf(address(this)); + require(amount > 0, "TokenTimelock: no tokens to release"); + + _token.safeTransfer(_beneficiary, amount); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol new file mode 100644 index 0000000..cc62747 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol @@ -0,0 +1,473 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../GSN/Context.sol"; +import "./IERC721.sol"; +import "./IERC721Metadata.sol"; +import "./IERC721Enumerable.sol"; +import "./IERC721Receiver.sol"; +import "../../introspection/ERC165.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; +import "../../utils/EnumerableSet.sol"; +import "../../utils/EnumerableMap.sol"; +import "../../utils/Strings.sol"; + +/** + * @title ERC721 Non-Fungible Token Standard basic implementation + * @dev see https://eips.ethereum.org/EIPS/eip-721 + */ +contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { + using SafeMath for uint256; + using Address for address; + using EnumerableSet for EnumerableSet.UintSet; + using EnumerableMap for EnumerableMap.UintToAddressMap; + using Strings for uint256; + + // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` + // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` + bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; + + // Mapping from holder address to their (enumerable) set of owned tokens + mapping (address => EnumerableSet.UintSet) private _holderTokens; + + // Enumerable mapping from token ids to their owners + EnumerableMap.UintToAddressMap private _tokenOwners; + + // Mapping from token ID to approved address + mapping (uint256 => address) private _tokenApprovals; + + // Mapping from owner to operator approvals + mapping (address => mapping (address => bool)) private _operatorApprovals; + + // Token name + string private _name; + + // Token symbol + string private _symbol; + + // Optional mapping for token URIs + mapping(uint256 => string) private _tokenURIs; + + // Base URI + string private _baseURI; + + /* + * bytes4(keccak256('balanceOf(address)')) == 0x70a08231 + * bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e + * bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3 + * bytes4(keccak256('getApproved(uint256)')) == 0x081812fc + * bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465 + * bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5 + * bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd + * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e + * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde + * + * => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^ + * 0xa22cb465 ^ 0xe985e9c ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd + */ + bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; + + /* + * bytes4(keccak256('name()')) == 0x06fdde03 + * bytes4(keccak256('symbol()')) == 0x95d89b41 + * bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd + * + * => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f + */ + bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f; + + /* + * bytes4(keccak256('totalSupply()')) == 0x18160ddd + * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59 + * bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7 + * + * => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63 + */ + bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63; + + /** + * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. + */ + constructor (string memory name, string memory symbol) public { + _name = name; + _symbol = symbol; + + // register the supported interfaces to conform to ERC721 via ERC165 + _registerInterface(_INTERFACE_ID_ERC721); + _registerInterface(_INTERFACE_ID_ERC721_METADATA); + _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE); + } + + /** + * @dev See {IERC721-balanceOf}. + */ + function balanceOf(address owner) public view override returns (uint256) { + require(owner != address(0), "ERC721: balance query for the zero address"); + + return _holderTokens[owner].length(); + } + + /** + * @dev See {IERC721-ownerOf}. + */ + function ownerOf(uint256 tokenId) public view override returns (address) { + return _tokenOwners.get(tokenId, "ERC721: owner query for nonexistent token"); + } + + /** + * @dev See {IERC721Metadata-name}. + */ + function name() public view override returns (string memory) { + return _name; + } + + /** + * @dev See {IERC721Metadata-symbol}. + */ + function symbol() public view override returns (string memory) { + return _symbol; + } + + /** + * @dev See {IERC721Metadata-tokenURI}. + */ + function tokenURI(uint256 tokenId) public view override returns (string memory) { + require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); + + string memory _tokenURI = _tokenURIs[tokenId]; + + // If there is no base URI, return the token URI. + if (bytes(_baseURI).length == 0) { + return _tokenURI; + } + // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). + if (bytes(_tokenURI).length > 0) { + return string(abi.encodePacked(_baseURI, _tokenURI)); + } + // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI. + return string(abi.encodePacked(_baseURI, tokenId.toString())); + } + + /** + * @dev Returns the base URI set via {_setBaseURI}. This will be + * automatically added as a prefix in {tokenURI} to each token's URI, or + * to the token ID if no specific URI is set for that token ID. + */ + function baseURI() public view returns (string memory) { + return _baseURI; + } + + /** + * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. + */ + function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { + return _holderTokens[owner].at(index); + } + + /** + * @dev See {IERC721Enumerable-totalSupply}. + */ + function totalSupply() public view override returns (uint256) { + // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds + return _tokenOwners.length(); + } + + /** + * @dev See {IERC721Enumerable-tokenByIndex}. + */ + function tokenByIndex(uint256 index) public view override returns (uint256) { + (uint256 tokenId, ) = _tokenOwners.at(index); + return tokenId; + } + + /** + * @dev See {IERC721-approve}. + */ + function approve(address to, uint256 tokenId) public virtual override { + address owner = ownerOf(tokenId); + require(to != owner, "ERC721: approval to current owner"); + + require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), + "ERC721: approve caller is not owner nor approved for all" + ); + + _approve(to, tokenId); + } + + /** + * @dev See {IERC721-getApproved}. + */ + function getApproved(uint256 tokenId) public view override returns (address) { + require(_exists(tokenId), "ERC721: approved query for nonexistent token"); + + return _tokenApprovals[tokenId]; + } + + /** + * @dev See {IERC721-setApprovalForAll}. + */ + function setApprovalForAll(address operator, bool approved) public virtual override { + require(operator != _msgSender(), "ERC721: approve to caller"); + + _operatorApprovals[_msgSender()][operator] = approved; + emit ApprovalForAll(_msgSender(), operator, approved); + } + + /** + * @dev See {IERC721-isApprovedForAll}. + */ + function isApprovedForAll(address owner, address operator) public view override returns (bool) { + return _operatorApprovals[owner][operator]; + } + + /** + * @dev See {IERC721-transferFrom}. + */ + function transferFrom(address from, address to, uint256 tokenId) public virtual override { + //solhint-disable-next-line max-line-length + require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); + + _transfer(from, to, tokenId); + } + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { + safeTransferFrom(from, to, tokenId, ""); + } + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { + require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); + _safeTransfer(from, to, tokenId, _data); + } + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients + * are aware of the ERC721 protocol to prevent tokens from being forever locked. + * + * `_data` is additional data, it has no specified format and it is sent in call to `to`. + * + * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. + * implement alternative mecanisms to perform token transfer, such as signature-based. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { + _transfer(from, to, tokenId); + require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); + } + + /** + * @dev Returns whether `tokenId` exists. + * + * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. + * + * Tokens start existing when they are minted (`_mint`), + * and stop existing when they are burned (`_burn`). + */ + function _exists(uint256 tokenId) internal view returns (bool) { + return _tokenOwners.contains(tokenId); + } + + /** + * @dev Returns whether `spender` is allowed to manage `tokenId`. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) { + require(_exists(tokenId), "ERC721: operator query for nonexistent token"); + address owner = ownerOf(tokenId); + return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); + } + + /** + * @dev Safely mints `tokenId` and transfers it to `to`. + * + * Requirements: + d* + * - `tokenId` must not exist. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function _safeMint(address to, uint256 tokenId) internal virtual { + _safeMint(to, tokenId, ""); + } + + /** + * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is + * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. + */ + function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { + _mint(to, tokenId); + require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); + } + + /** + * @dev Mints `tokenId` and transfers it to `to`. + * + * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible + * + * Requirements: + * + * - `tokenId` must not exist. + * - `to` cannot be the zero address. + * + * Emits a {Transfer} event. + */ + function _mint(address to, uint256 tokenId) internal virtual { + require(to != address(0), "ERC721: mint to the zero address"); + require(!_exists(tokenId), "ERC721: token already minted"); + + _beforeTokenTransfer(address(0), to, tokenId); + + _holderTokens[to].add(tokenId); + + _tokenOwners.set(tokenId, to); + + emit Transfer(address(0), to, tokenId); + } + + /** + * @dev Destroys `tokenId`. + * The approval is cleared when the token is burned. + * + * Requirements: + * + * - `tokenId` must exist. + * + * Emits a {Transfer} event. + */ + function _burn(uint256 tokenId) internal virtual { + address owner = ownerOf(tokenId); + + _beforeTokenTransfer(owner, address(0), tokenId); + + // Clear approvals + _approve(address(0), tokenId); + + // Clear metadata (if any) + if (bytes(_tokenURIs[tokenId]).length != 0) { + delete _tokenURIs[tokenId]; + } + + _holderTokens[owner].remove(tokenId); + + _tokenOwners.remove(tokenId); + + emit Transfer(owner, address(0), tokenId); + } + + /** + * @dev Transfers `tokenId` from `from` to `to`. + * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - `tokenId` token must be owned by `from`. + * + * Emits a {Transfer} event. + */ + function _transfer(address from, address to, uint256 tokenId) internal virtual { + require(ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); + require(to != address(0), "ERC721: transfer to the zero address"); + + _beforeTokenTransfer(from, to, tokenId); + + // Clear approvals from the previous owner + _approve(address(0), tokenId); + + _holderTokens[from].remove(tokenId); + _holderTokens[to].add(tokenId); + + _tokenOwners.set(tokenId, to); + + emit Transfer(from, to, tokenId); + } + + /** + * @dev Sets `_tokenURI` as the tokenURI of `tokenId`. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { + require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); + _tokenURIs[tokenId] = _tokenURI; + } + + /** + * @dev Internal function to set the base URI for all token IDs. It is + * automatically added as a prefix to the value returned in {tokenURI}, + * or to the token ID if {tokenURI} is empty. + */ + function _setBaseURI(string memory baseURI_) internal virtual { + _baseURI = baseURI_; + } + + /** + * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. + * The call is not executed if the target address is not a contract. + * + * @param from address representing the previous owner of the given token ID + * @param to target address that will receive the tokens + * @param tokenId uint256 ID of the token to be transferred + * @param _data bytes optional data to send along with the call + * @return bool whether the call correctly returned the expected magic value + */ + function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) + private returns (bool) + { + if (!to.isContract()) { + return true; + } + bytes memory returndata = to.functionCall(abi.encodeWithSelector( + IERC721Receiver(to).onERC721Received.selector, + _msgSender(), + from, + tokenId, + _data + ), "ERC721: transfer to non ERC721Receiver implementer"); + bytes4 retval = abi.decode(returndata, (bytes4)); + return (retval == _ERC721_RECEIVED); + } + + function _approve(address to, uint256 tokenId) private { + _tokenApprovals[tokenId] = to; + emit Approval(ownerOf(tokenId), to, tokenId); + } + + /** + * @dev Hook that is called before any token transfer. This includes minting + * and burning. + * + * Calling conditions: + * + * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be + * transferred to `to`. + * - When `from` is zero, `tokenId` will be minted for `to`. + * - When `to` is zero, ``from``'s `tokenId` will be burned. + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol new file mode 100644 index 0000000..6f767d2 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../GSN/Context.sol"; +import "./ERC721.sol"; + +/** + * @title ERC721 Burnable Token + * @dev ERC721 Token that can be irreversibly burned (destroyed). + */ +abstract contract ERC721Burnable is Context, ERC721 { + /** + * @dev Burns `tokenId`. See {ERC721-_burn}. + * + * Requirements: + * + * - The caller must own `tokenId` or be an approved operator. + */ + function burn(uint256 tokenId) public virtual { + //solhint-disable-next-line max-line-length + require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721Burnable: caller is not owner nor approved"); + _burn(tokenId); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Holder.sol b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Holder.sol new file mode 100644 index 0000000..3684bd1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Holder.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./IERC721Receiver.sol"; + + /** + * @dev Implementation of the {IERC721Receiver} interface. + * + * Accepts all token transfers. + * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. + */ +contract ERC721Holder is IERC721Receiver { + + /** + * @dev See {IERC721Receiver-onERC721Received}. + * + * Always returns `IERC721Receiver.onERC721Received.selector`. + */ + function onERC721Received(address, address, uint256, bytes memory) public virtual override returns (bytes4) { + return this.onERC721Received.selector; + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol new file mode 100644 index 0000000..c590647 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "./ERC721.sol"; +import "../../utils/Pausable.sol"; + +/** + * @dev ERC721 token with pausable token transfers, minting and burning. + * + * Useful for scenarios such as preventing trades until the end of an evaluation + * period, or having an emergency switch for freezing all token transfers in the + * event of a large bug. + */ +abstract contract ERC721Pausable is ERC721, Pausable { + /** + * @dev See {ERC721-_beforeTokenTransfer}. + * + * Requirements: + * + * - the contract must not be paused. + */ + function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override { + super._beforeTokenTransfer(from, to, tokenId); + + require(!paused(), "ERC721Pausable: token transfer while paused"); + } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol new file mode 100644 index 0000000..16f7aca --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +import "../../introspection/IERC165.sol"; + +/** + * @dev Required interface of an ERC721 compliant contract. + */ +interface IERC721 is IERC165 { + /** + * @dev Emitted when `tokenId` token is transfered from `from` to `to`. + */ + event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); + + /** + * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. + */ + event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); + + /** + * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. + */ + event ApprovalForAll(address indexed owner, address indexed operator, bool approved); + + /** + * @dev Returns the number of tokens in ``owner``'s account. + */ + function balanceOf(address owner) external view returns (uint256 balance); + + /** + * @dev Returns the owner of the `tokenId` token. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function ownerOf(uint256 tokenId) external view returns (address owner); + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients + * are aware of the ERC721 protocol to prevent tokens from being forever locked. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function safeTransferFrom(address from, address to, uint256 tokenId) external; + + /** + * @dev Transfers `tokenId` token from `from` to `to`. + * + * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must be owned by `from`. + * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 tokenId) external; + + /** + * @dev Gives permission to `to` to transfer `tokenId` token to another account. + * The approval is cleared when the token is transferred. + * + * Only a single account can be approved at a time, so approving the zero address clears previous approvals. + * + * Requirements: + * + * - The caller must own the token or be an approved operator. + * - `tokenId` must exist. + * + * Emits an {Approval} event. + */ + function approve(address to, uint256 tokenId) external; + + /** + * @dev Returns the account approved for `tokenId` token. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function getApproved(uint256 tokenId) external view returns (address operator); + + /** + * @dev Approve or remove `operator` as an operator for the caller. + * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. + * + * Requirements: + * + * - The `operator` cannot be the caller. + * + * Emits an {ApprovalForAll} event. + */ + function setApprovalForAll(address operator, bool _approved) external; + + /** + * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. + * + * See {setApprovalForAll} + */ + function isApprovedForAll(address owner, address operator) external view returns (bool); + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol new file mode 100644 index 0000000..bd3c86d --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +import "./IERC721.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension + * @dev See https://eips.ethereum.org/EIPS/eip-721 + */ +interface IERC721Enumerable is IERC721 { + + /** + * @dev Returns the total amount of tokens stored by the contract. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns a token ID owned by `owner` at a given `index` of its token list. + * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. + */ + function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); + + /** + * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. + * Use along with {totalSupply} to enumerate all tokens. + */ + function tokenByIndex(uint256 index) external view returns (uint256); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol new file mode 100644 index 0000000..f2ebb49 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +import "./IERC721.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, optional metadata extension + * @dev See https://eips.ethereum.org/EIPS/eip-721 + */ +interface IERC721Metadata is IERC721 { + + /** + * @dev Returns the token collection name. + */ + function name() external view returns (string memory); + + /** + * @dev Returns the token collection symbol. + */ + function symbol() external view returns (string memory); + + /** + * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. + */ + function tokenURI(uint256 tokenId) external view returns (string memory); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol new file mode 100644 index 0000000..f98053e --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @title ERC721 token receiver interface + * @dev Interface for any contract that wants to support safeTransfers + * from ERC721 asset contracts. + */ +interface IERC721Receiver { + /** + * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} + * by `operator` from `from`, this function is called. + * + * It must return its Solidity selector to confirm the token transfer. + * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. + * + * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. + */ + function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) + external returns (bytes4); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC721/README.adoc b/node_modules/@openzeppelin/contracts/token/ERC721/README.adoc new file mode 100644 index 0000000..a774ebe --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC721/README.adoc @@ -0,0 +1,36 @@ += ERC 721 + +This set of interfaces, contracts, and utilities are all related to the https://eips.ethereum.org/EIPS/eip-721[ERC721 Non-Fungible Token Standard]. + +TIP: For a walkthrough on how to create an ERC721 token read our xref:ROOT:erc721.adoc[ERC721 guide]. + +The EIP consists of three interfaces, found here as {IERC721}, {IERC721Metadata}, and {IERC721Enumerable}. Only the first one is required in a contract to be ERC721 compliant. However, all three are implemented in {ERC721}. + +Additionally, {IERC721Receiver} can be used to prevent tokens from becoming forever locked in contracts. Imagine sending an in-game item to an exchange address that can't send it back!. When using <>, the token contract checks to see that the receiver is an {IERC721Receiver}, which implies that it knows how to handle {ERC721} tokens. If you're writing a contract that needs to receive {ERC721} tokens, you'll want to include this interface. + +Additionally there are multiple custom extensions, including: + +* designation of addresses that can pause token transfers for all users ({ERC721Pausable}). +* destruction of own tokens ({ERC721Burnable}). + +== Core + +{{IERC721}} + +{{IERC721Metadata}} + +{{IERC721Enumerable}} + +{{ERC721}} + +{{IERC721Receiver}} + +== Extensions + +{{ERC721Pausable}} + +{{ERC721Burnable}} + +== Convenience + +{{ERC721Holder}} diff --git a/node_modules/@openzeppelin/contracts/token/ERC777/ERC777.sol b/node_modules/@openzeppelin/contracts/token/ERC777/ERC777.sol new file mode 100644 index 0000000..5adb8ff --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC777/ERC777.sol @@ -0,0 +1,503 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../../GSN/Context.sol"; +import "./IERC777.sol"; +import "./IERC777Recipient.sol"; +import "./IERC777Sender.sol"; +import "../../token/ERC20/IERC20.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; +import "../../introspection/IERC1820Registry.sol"; + +/** + * @dev Implementation of the {IERC777} interface. + * + * This implementation is agnostic to the way tokens are created. This means + * that a supply mechanism has to be added in a derived contract using {_mint}. + * + * Support for ERC20 is included in this contract, as specified by the EIP: both + * the ERC777 and ERC20 interfaces can be safely used when interacting with it. + * Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token + * movements. + * + * Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there + * are no special restrictions in the amount of tokens that created, moved, or + * destroyed. This makes integration with ERC20 applications seamless. + */ +contract ERC777 is Context, IERC777, IERC20 { + using SafeMath for uint256; + using Address for address; + + IERC1820Registry constant internal _ERC1820_REGISTRY = IERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24); + + mapping(address => uint256) private _balances; + + uint256 private _totalSupply; + + string private _name; + string private _symbol; + + // We inline the result of the following hashes because Solidity doesn't resolve them at compile time. + // See https://github.com/ethereum/solidity/issues/4024. + + // keccak256("ERC777TokensSender") + bytes32 constant private _TOKENS_SENDER_INTERFACE_HASH = + 0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895; + + // keccak256("ERC777TokensRecipient") + bytes32 constant private _TOKENS_RECIPIENT_INTERFACE_HASH = + 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b; + + // This isn't ever read from - it's only used to respond to the defaultOperators query. + address[] private _defaultOperatorsArray; + + // Immutable, but accounts may revoke them (tracked in __revokedDefaultOperators). + mapping(address => bool) private _defaultOperators; + + // For each account, a mapping of its operators and revoked default operators. + mapping(address => mapping(address => bool)) private _operators; + mapping(address => mapping(address => bool)) private _revokedDefaultOperators; + + // ERC20-allowances + mapping (address => mapping (address => uint256)) private _allowances; + + /** + * @dev `defaultOperators` may be an empty array. + */ + constructor( + string memory name, + string memory symbol, + address[] memory defaultOperators + ) public { + _name = name; + _symbol = symbol; + + _defaultOperatorsArray = defaultOperators; + for (uint256 i = 0; i < _defaultOperatorsArray.length; i++) { + _defaultOperators[_defaultOperatorsArray[i]] = true; + } + + // register interfaces + _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256("ERC777Token"), address(this)); + _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256("ERC20Token"), address(this)); + } + + /** + * @dev See {IERC777-name}. + */ + function name() public view override returns (string memory) { + return _name; + } + + /** + * @dev See {IERC777-symbol}. + */ + function symbol() public view override returns (string memory) { + return _symbol; + } + + /** + * @dev See {ERC20-decimals}. + * + * Always returns 18, as per the + * [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility). + */ + function decimals() public pure returns (uint8) { + return 18; + } + + /** + * @dev See {IERC777-granularity}. + * + * This implementation always returns `1`. + */ + function granularity() public view override returns (uint256) { + return 1; + } + + /** + * @dev See {IERC777-totalSupply}. + */ + function totalSupply() public view override(IERC20, IERC777) returns (uint256) { + return _totalSupply; + } + + /** + * @dev Returns the amount of tokens owned by an account (`tokenHolder`). + */ + function balanceOf(address tokenHolder) public view override(IERC20, IERC777) returns (uint256) { + return _balances[tokenHolder]; + } + + /** + * @dev See {IERC777-send}. + * + * Also emits a {IERC20-Transfer} event for ERC20 compatibility. + */ + function send(address recipient, uint256 amount, bytes memory data) public override { + _send(_msgSender(), recipient, amount, data, "", true); + } + + /** + * @dev See {IERC20-transfer}. + * + * Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient} + * interface if it is a contract. + * + * Also emits a {Sent} event. + */ + function transfer(address recipient, uint256 amount) public override returns (bool) { + require(recipient != address(0), "ERC777: transfer to the zero address"); + + address from = _msgSender(); + + _callTokensToSend(from, from, recipient, amount, "", ""); + + _move(from, from, recipient, amount, "", ""); + + _callTokensReceived(from, from, recipient, amount, "", "", false); + + return true; + } + + /** + * @dev See {IERC777-burn}. + * + * Also emits a {IERC20-Transfer} event for ERC20 compatibility. + */ + function burn(uint256 amount, bytes memory data) public override { + _burn(_msgSender(), amount, data, ""); + } + + /** + * @dev See {IERC777-isOperatorFor}. + */ + function isOperatorFor( + address operator, + address tokenHolder + ) public view override returns (bool) { + return operator == tokenHolder || + (_defaultOperators[operator] && !_revokedDefaultOperators[tokenHolder][operator]) || + _operators[tokenHolder][operator]; + } + + /** + * @dev See {IERC777-authorizeOperator}. + */ + function authorizeOperator(address operator) public override { + require(_msgSender() != operator, "ERC777: authorizing self as operator"); + + if (_defaultOperators[operator]) { + delete _revokedDefaultOperators[_msgSender()][operator]; + } else { + _operators[_msgSender()][operator] = true; + } + + emit AuthorizedOperator(operator, _msgSender()); + } + + /** + * @dev See {IERC777-revokeOperator}. + */ + function revokeOperator(address operator) public override { + require(operator != _msgSender(), "ERC777: revoking self as operator"); + + if (_defaultOperators[operator]) { + _revokedDefaultOperators[_msgSender()][operator] = true; + } else { + delete _operators[_msgSender()][operator]; + } + + emit RevokedOperator(operator, _msgSender()); + } + + /** + * @dev See {IERC777-defaultOperators}. + */ + function defaultOperators() public view override returns (address[] memory) { + return _defaultOperatorsArray; + } + + /** + * @dev See {IERC777-operatorSend}. + * + * Emits {Sent} and {IERC20-Transfer} events. + */ + function operatorSend( + address sender, + address recipient, + uint256 amount, + bytes memory data, + bytes memory operatorData + ) + public override + { + require(isOperatorFor(_msgSender(), sender), "ERC777: caller is not an operator for holder"); + _send(sender, recipient, amount, data, operatorData, true); + } + + /** + * @dev See {IERC777-operatorBurn}. + * + * Emits {Burned} and {IERC20-Transfer} events. + */ + function operatorBurn(address account, uint256 amount, bytes memory data, bytes memory operatorData) public override { + require(isOperatorFor(_msgSender(), account), "ERC777: caller is not an operator for holder"); + _burn(account, amount, data, operatorData); + } + + /** + * @dev See {IERC20-allowance}. + * + * Note that operator and allowance concepts are orthogonal: operators may + * not have allowance, and accounts with allowance may not be operators + * themselves. + */ + function allowance(address holder, address spender) public view override returns (uint256) { + return _allowances[holder][spender]; + } + + /** + * @dev See {IERC20-approve}. + * + * Note that accounts cannot have allowance issued by their operators. + */ + function approve(address spender, uint256 value) public override returns (bool) { + address holder = _msgSender(); + _approve(holder, spender, value); + return true; + } + + /** + * @dev See {IERC20-transferFrom}. + * + * Note that operator and allowance concepts are orthogonal: operators cannot + * call `transferFrom` (unless they have allowance), and accounts with + * allowance cannot call `operatorSend` (unless they are operators). + * + * Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events. + */ + function transferFrom(address holder, address recipient, uint256 amount) public override returns (bool) { + require(recipient != address(0), "ERC777: transfer to the zero address"); + require(holder != address(0), "ERC777: transfer from the zero address"); + + address spender = _msgSender(); + + _callTokensToSend(spender, holder, recipient, amount, "", ""); + + _move(spender, holder, recipient, amount, "", ""); + _approve(holder, spender, _allowances[holder][spender].sub(amount, "ERC777: transfer amount exceeds allowance")); + + _callTokensReceived(spender, holder, recipient, amount, "", "", false); + + return true; + } + + /** + * @dev Creates `amount` tokens and assigns them to `account`, increasing + * the total supply. + * + * If a send hook is registered for `account`, the corresponding function + * will be called with `operator`, `data` and `operatorData`. + * + * See {IERC777Sender} and {IERC777Recipient}. + * + * Emits {Minted} and {IERC20-Transfer} events. + * + * Requirements + * + * - `account` cannot be the zero address. + * - if `account` is a contract, it must implement the {IERC777Recipient} + * interface. + */ + function _mint( + address account, + uint256 amount, + bytes memory userData, + bytes memory operatorData + ) + internal virtual + { + require(account != address(0), "ERC777: mint to the zero address"); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, address(0), account, amount); + + // Update state variables + _totalSupply = _totalSupply.add(amount); + _balances[account] = _balances[account].add(amount); + + _callTokensReceived(operator, address(0), account, amount, userData, operatorData, true); + + emit Minted(operator, account, amount, userData, operatorData); + emit Transfer(address(0), account, amount); + } + + /** + * @dev Send tokens + * @param from address token holder address + * @param to address recipient address + * @param amount uint256 amount of tokens to transfer + * @param userData bytes extra information provided by the token holder (if any) + * @param operatorData bytes extra information provided by the operator (if any) + * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient + */ + function _send( + address from, + address to, + uint256 amount, + bytes memory userData, + bytes memory operatorData, + bool requireReceptionAck + ) + internal + { + require(from != address(0), "ERC777: send from the zero address"); + require(to != address(0), "ERC777: send to the zero address"); + + address operator = _msgSender(); + + _callTokensToSend(operator, from, to, amount, userData, operatorData); + + _move(operator, from, to, amount, userData, operatorData); + + _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck); + } + + /** + * @dev Burn tokens + * @param from address token holder address + * @param amount uint256 amount of tokens to burn + * @param data bytes extra information provided by the token holder + * @param operatorData bytes extra information provided by the operator (if any) + */ + function _burn( + address from, + uint256 amount, + bytes memory data, + bytes memory operatorData + ) + internal virtual + { + require(from != address(0), "ERC777: burn from the zero address"); + + address operator = _msgSender(); + + _beforeTokenTransfer(operator, from, address(0), amount); + + _callTokensToSend(operator, from, address(0), amount, data, operatorData); + + // Update state variables + _balances[from] = _balances[from].sub(amount, "ERC777: burn amount exceeds balance"); + _totalSupply = _totalSupply.sub(amount); + + emit Burned(operator, from, amount, data, operatorData); + emit Transfer(from, address(0), amount); + } + + function _move( + address operator, + address from, + address to, + uint256 amount, + bytes memory userData, + bytes memory operatorData + ) + private + { + _beforeTokenTransfer(operator, from, to, amount); + + _balances[from] = _balances[from].sub(amount, "ERC777: transfer amount exceeds balance"); + _balances[to] = _balances[to].add(amount); + + emit Sent(operator, from, to, amount, userData, operatorData); + emit Transfer(from, to, amount); + } + + /** + * @dev See {ERC20-_approve}. + * + * Note that accounts cannot have allowance issued by their operators. + */ + function _approve(address holder, address spender, uint256 value) internal { + require(holder != address(0), "ERC777: approve from the zero address"); + require(spender != address(0), "ERC777: approve to the zero address"); + + _allowances[holder][spender] = value; + emit Approval(holder, spender, value); + } + + /** + * @dev Call from.tokensToSend() if the interface is registered + * @param operator address operator requesting the transfer + * @param from address token holder address + * @param to address recipient address + * @param amount uint256 amount of tokens to transfer + * @param userData bytes extra information provided by the token holder (if any) + * @param operatorData bytes extra information provided by the operator (if any) + */ + function _callTokensToSend( + address operator, + address from, + address to, + uint256 amount, + bytes memory userData, + bytes memory operatorData + ) + private + { + address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(from, _TOKENS_SENDER_INTERFACE_HASH); + if (implementer != address(0)) { + IERC777Sender(implementer).tokensToSend(operator, from, to, amount, userData, operatorData); + } + } + + /** + * @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but + * tokensReceived() was not registered for the recipient + * @param operator address operator requesting the transfer + * @param from address token holder address + * @param to address recipient address + * @param amount uint256 amount of tokens to transfer + * @param userData bytes extra information provided by the token holder (if any) + * @param operatorData bytes extra information provided by the operator (if any) + * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient + */ + function _callTokensReceived( + address operator, + address from, + address to, + uint256 amount, + bytes memory userData, + bytes memory operatorData, + bool requireReceptionAck + ) + private + { + address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(to, _TOKENS_RECIPIENT_INTERFACE_HASH); + if (implementer != address(0)) { + IERC777Recipient(implementer).tokensReceived(operator, from, to, amount, userData, operatorData); + } else if (requireReceptionAck) { + require(!to.isContract(), "ERC777: token recipient contract has no implementer for ERC777TokensRecipient"); + } + } + + /** + * @dev Hook that is called before any token transfer. This includes + * calls to {send}, {transfer}, {operatorSend}, minting and burning. + * + * Calling conditions: + * + * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens + * will be to transferred to `to`. + * - when `from` is zero, `amount` tokens will be minted for `to`. + * - when `to` is zero, `amount` of ``from``'s tokens will be burned. + * - `from` and `to` are never both zero. + * + * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. + */ + function _beforeTokenTransfer(address operator, address from, address to, uint256 amount) internal virtual { } +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC777/IERC777.sol b/node_modules/@openzeppelin/contracts/token/ERC777/IERC777.sol new file mode 100644 index 0000000..f3dcbe9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC777/IERC777.sol @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface of the ERC777Token standard as defined in the EIP. + * + * This contract uses the + * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let + * token holders and recipients react to token movements by using setting implementers + * for the associated interfaces in said registry. See {IERC1820Registry} and + * {ERC1820Implementer}. + */ +interface IERC777 { + /** + * @dev Returns the name of the token. + */ + function name() external view returns (string memory); + + /** + * @dev Returns the symbol of the token, usually a shorter version of the + * name. + */ + function symbol() external view returns (string memory); + + /** + * @dev Returns the smallest part of the token that is not divisible. This + * means all token operations (creation, movement and destruction) must have + * amounts that are a multiple of this number. + * + * For most token contracts, this value will equal 1. + */ + function granularity() external view returns (uint256); + + /** + * @dev Returns the amount of tokens in existence. + */ + function totalSupply() external view returns (uint256); + + /** + * @dev Returns the amount of tokens owned by an account (`owner`). + */ + function balanceOf(address owner) external view returns (uint256); + + /** + * @dev Moves `amount` tokens from the caller's account to `recipient`. + * + * If send or receive hooks are registered for the caller and `recipient`, + * the corresponding functions will be called with `data` and empty + * `operatorData`. See {IERC777Sender} and {IERC777Recipient}. + * + * Emits a {Sent} event. + * + * Requirements + * + * - the caller must have at least `amount` tokens. + * - `recipient` cannot be the zero address. + * - if `recipient` is a contract, it must implement the {IERC777Recipient} + * interface. + */ + function send(address recipient, uint256 amount, bytes calldata data) external; + + /** + * @dev Destroys `amount` tokens from the caller's account, reducing the + * total supply. + * + * If a send hook is registered for the caller, the corresponding function + * will be called with `data` and empty `operatorData`. See {IERC777Sender}. + * + * Emits a {Burned} event. + * + * Requirements + * + * - the caller must have at least `amount` tokens. + */ + function burn(uint256 amount, bytes calldata data) external; + + /** + * @dev Returns true if an account is an operator of `tokenHolder`. + * Operators can send and burn tokens on behalf of their owners. All + * accounts are their own operator. + * + * See {operatorSend} and {operatorBurn}. + */ + function isOperatorFor(address operator, address tokenHolder) external view returns (bool); + + /** + * @dev Make an account an operator of the caller. + * + * See {isOperatorFor}. + * + * Emits an {AuthorizedOperator} event. + * + * Requirements + * + * - `operator` cannot be calling address. + */ + function authorizeOperator(address operator) external; + + /** + * @dev Revoke an account's operator status for the caller. + * + * See {isOperatorFor} and {defaultOperators}. + * + * Emits a {RevokedOperator} event. + * + * Requirements + * + * - `operator` cannot be calling address. + */ + function revokeOperator(address operator) external; + + /** + * @dev Returns the list of default operators. These accounts are operators + * for all token holders, even if {authorizeOperator} was never called on + * them. + * + * This list is immutable, but individual holders may revoke these via + * {revokeOperator}, in which case {isOperatorFor} will return false. + */ + function defaultOperators() external view returns (address[] memory); + + /** + * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must + * be an operator of `sender`. + * + * If send or receive hooks are registered for `sender` and `recipient`, + * the corresponding functions will be called with `data` and + * `operatorData`. See {IERC777Sender} and {IERC777Recipient}. + * + * Emits a {Sent} event. + * + * Requirements + * + * - `sender` cannot be the zero address. + * - `sender` must have at least `amount` tokens. + * - the caller must be an operator for `sender`. + * - `recipient` cannot be the zero address. + * - if `recipient` is a contract, it must implement the {IERC777Recipient} + * interface. + */ + function operatorSend( + address sender, + address recipient, + uint256 amount, + bytes calldata data, + bytes calldata operatorData + ) external; + + /** + * @dev Destroys `amount` tokens from `account`, reducing the total supply. + * The caller must be an operator of `account`. + * + * If a send hook is registered for `account`, the corresponding function + * will be called with `data` and `operatorData`. See {IERC777Sender}. + * + * Emits a {Burned} event. + * + * Requirements + * + * - `account` cannot be the zero address. + * - `account` must have at least `amount` tokens. + * - the caller must be an operator for `account`. + */ + function operatorBurn( + address account, + uint256 amount, + bytes calldata data, + bytes calldata operatorData + ) external; + + event Sent( + address indexed operator, + address indexed from, + address indexed to, + uint256 amount, + bytes data, + bytes operatorData + ); + + event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData); + + event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData); + + event AuthorizedOperator(address indexed operator, address indexed tokenHolder); + + event RevokedOperator(address indexed operator, address indexed tokenHolder); +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol b/node_modules/@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol new file mode 100644 index 0000000..179ed66 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface of the ERC777TokensRecipient standard as defined in the EIP. + * + * Accounts can be notified of {IERC777} tokens being sent to them by having a + * contract implement this interface (contract holders can be their own + * implementer) and registering it on the + * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. + * + * See {IERC1820Registry} and {ERC1820Implementer}. + */ +interface IERC777Recipient { + /** + * @dev Called by an {IERC777} token contract whenever tokens are being + * moved or created into a registered account (`to`). The type of operation + * is conveyed by `from` being the zero address or not. + * + * This call occurs _after_ the token contract's state is updated, so + * {IERC777-balanceOf}, etc., can be used to query the post-operation state. + * + * This function may revert to prevent the operation from being executed. + */ + function tokensReceived( + address operator, + address from, + address to, + uint256 amount, + bytes calldata userData, + bytes calldata operatorData + ) external; +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC777/IERC777Sender.sol b/node_modules/@openzeppelin/contracts/token/ERC777/IERC777Sender.sol new file mode 100644 index 0000000..841ca20 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC777/IERC777Sender.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Interface of the ERC777TokensSender standard as defined in the EIP. + * + * {IERC777} Token holders can be notified of operations performed on their + * tokens by having a contract implement this interface (contract holders can be + * their own implementer) and registering it on the + * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry]. + * + * See {IERC1820Registry} and {ERC1820Implementer}. + */ +interface IERC777Sender { + /** + * @dev Called by an {IERC777} token contract whenever a registered holder's + * (`from`) tokens are about to be moved or destroyed. The type of operation + * is conveyed by `to` being the zero address or not. + * + * This call occurs _before_ the token contract's state is updated, so + * {IERC777-balanceOf}, etc., can be used to query the pre-operation state. + * + * This function may revert to prevent the operation from being executed. + */ + function tokensToSend( + address operator, + address from, + address to, + uint256 amount, + bytes calldata userData, + bytes calldata operatorData + ) external; +} diff --git a/node_modules/@openzeppelin/contracts/token/ERC777/README.adoc b/node_modules/@openzeppelin/contracts/token/ERC777/README.adoc new file mode 100644 index 0000000..f3cd3e0 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/token/ERC777/README.adoc @@ -0,0 +1,20 @@ += ERC 777 +This set of interfaces and contracts are all related to the [ERC777 token standard](https://eips.ethereum.org/EIPS/eip-777). + +TIP: For an overview of ERC777 tokens and a walkthrough on how to create a token contract read our xref:ROOT:erc777.adoc[ERC777 guide]. + +The token behavior itself is implemented in the core contracts: {IERC777}, {ERC777}. + +Additionally there are interfaces used to develop contracts that react to token movements: {IERC777Sender}, {IERC777Recipient}. + +== Core + +{{IERC777}} + +{{ERC777}} + +== Hooks + +{{IERC777Sender}} + +{{IERC777Recipient}} diff --git a/node_modules/@openzeppelin/contracts/utils/Address.sol b/node_modules/@openzeppelin/contracts/utils/Address.sol new file mode 100644 index 0000000..1d952cc --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/Address.sol @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +/** + * @dev Collection of functions related to the address type + */ +library Address { + /** + * @dev Returns true if `account` is a contract. + * + * [IMPORTANT] + * ==== + * It is unsafe to assume that an address for which this function returns + * false is an externally-owned account (EOA) and not a contract. + * + * Among others, `isContract` will return false for the following + * types of addresses: + * + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * ==== + */ + function isContract(address account) internal view returns (bool) { + // According to EIP-1052, 0x0 is the value returned for not-yet created accounts + // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned + // for accounts without code, i.e. `keccak256('')` + bytes32 codehash; + bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; + // solhint-disable-next-line no-inline-assembly + assembly { codehash := extcodehash(account) } + return (codehash != accountHash && codehash != 0x0); + } + + /** + * @dev Replacement for Solidity's `transfer`: sends `amount` wei to + * `recipient`, forwarding all available gas and reverting on errors. + * + * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost + * of certain opcodes, possibly making contracts go over the 2300 gas limit + * imposed by `transfer`, making them unable to receive funds via + * `transfer`. {sendValue} removes this limitation. + * + * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. + * + * IMPORTANT: because control is transferred to `recipient`, care must be + * taken to not create reentrancy vulnerabilities. Consider using + * {ReentrancyGuard} or the + * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. + */ + function sendValue(address payable recipient, uint256 amount) internal { + require(address(this).balance >= amount, "Address: insufficient balance"); + + // solhint-disable-next-line avoid-low-level-calls, avoid-call-value + (bool success, ) = recipient.call{ value: amount }(""); + require(success, "Address: unable to send value, recipient may have reverted"); + } + + /** + * @dev Performs a Solidity function call using a low level `call`. A + * plain`call` is an unsafe replacement for a function call: use this + * function instead. + * + * If `target` reverts with a revert reason, it is bubbled up by this + * function (like regular Solidity function calls). + * + * Returns the raw returned data. To convert to the expected return value, + * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. + * + * Requirements: + * + * - `target` must be a contract. + * - calling `target` with `data` must not revert. + * + * _Available since v3.1._ + */ + function functionCall(address target, bytes memory data) internal returns (bytes memory) { + return functionCall(target, data, "Address: low-level call failed"); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with + * `errorMessage` as a fallback revert reason when `target` reverts. + * + * _Available since v3.1._ + */ + function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { + return _functionCallWithValue(target, data, 0, errorMessage); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], + * but also transferring `value` wei to `target`. + * + * Requirements: + * + * - the calling contract must have an ETH balance of at least `value`. + * - the called Solidity function must be `payable`. + * + * _Available since v3.1._ + */ + function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { + return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); + } + + /** + * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but + * with `errorMessage` as a fallback revert reason when `target` reverts. + * + * _Available since v3.1._ + */ + function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { + require(address(this).balance >= value, "Address: insufficient balance for call"); + return _functionCallWithValue(target, data, value, errorMessage); + } + + function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { + require(isContract(target), "Address: call to non-contract"); + + // solhint-disable-next-line avoid-low-level-calls + (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); + if (success) { + return returndata; + } else { + // Look for revert reason and bubble it up if present + if (returndata.length > 0) { + // The easiest way to bubble the revert reason is using memory via assembly + + // solhint-disable-next-line no-inline-assembly + assembly { + let returndata_size := mload(returndata) + revert(add(32, returndata), returndata_size) + } + } else { + revert(errorMessage); + } + } + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/Arrays.sol b/node_modules/@openzeppelin/contracts/utils/Arrays.sol new file mode 100644 index 0000000..8d586e9 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/Arrays.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../math/Math.sol"; + +/** + * @dev Collection of functions related to array types. + */ +library Arrays { + /** + * @dev Searches a sorted `array` and returns the first index that contains + * a value greater or equal to `element`. If no such index exists (i.e. all + * values in the array are strictly less than `element`), the array length is + * returned. Time complexity O(log n). + * + * `array` is expected to be sorted in ascending order, and to contain no + * repeated elements. + */ + function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + if (array.length == 0) { + return 0; + } + + uint256 low = 0; + uint256 high = array.length; + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds down (it does integer division with truncation). + if (array[mid] > element) { + high = mid; + } else { + low = mid + 1; + } + } + + // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. + if (low > 0 && array[low - 1] == element) { + return low - 1; + } else { + return low; + } + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/Counters.sol b/node_modules/@openzeppelin/contracts/utils/Counters.sol new file mode 100644 index 0000000..82cb62b --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/Counters.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../math/SafeMath.sol"; + +/** + * @title Counters + * @author Matt Condon (@shrugs) + * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number + * of elements in a mapping, issuing ERC721 ids, or counting request ids. + * + * Include with `using Counters for Counters.Counter;` + * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath} + * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never + * directly accessed. + */ +library Counters { + using SafeMath for uint256; + + struct Counter { + // This variable should never be directly accessed by users of the library: interactions must be restricted to + // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add + // this feature: see https://github.com/ethereum/solidity/issues/4637 + uint256 _value; // default: 0 + } + + function current(Counter storage counter) internal view returns (uint256) { + return counter._value; + } + + function increment(Counter storage counter) internal { + // The {SafeMath} overflow check can be skipped here, see the comment at the top + counter._value += 1; + } + + function decrement(Counter storage counter) internal { + counter._value = counter._value.sub(1); + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/Create2.sol b/node_modules/@openzeppelin/contracts/utils/Create2.sol new file mode 100644 index 0000000..8f9efa1 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/Create2.sol @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer. + * `CREATE2` can be used to compute in advance the address where a smart + * contract will be deployed, which allows for interesting new mechanisms known + * as 'counterfactual interactions'. + * + * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more + * information. + */ +library Create2 { + /** + * @dev Deploys a contract using `CREATE2`. The address where the contract + * will be deployed can be known in advance via {computeAddress}. + * + * The bytecode for a contract can be obtained from Solidity with + * `type(contractName).creationCode`. + * + * Requirements: + * + * - `bytecode` must not be empty. + * - `salt` must have not been used for `bytecode` already. + * - the factory must have a balance of at least `amount`. + * - if `amount` is non-zero, `bytecode` must have a `payable` constructor. + */ + function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address) { + address addr; + require(address(this).balance >= amount, "Create2: insufficient balance"); + require(bytecode.length != 0, "Create2: bytecode length is zero"); + // solhint-disable-next-line no-inline-assembly + assembly { + addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt) + } + require(addr != address(0), "Create2: Failed on deploy"); + return addr; + } + + /** + * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the + * `bytecodeHash` or `salt` will result in a new destination address. + */ + function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) { + return computeAddress(salt, bytecodeHash, address(this)); + } + + /** + * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at + * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}. + */ + function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address) { + bytes32 _data = keccak256( + abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHash) + ); + return address(uint256(_data)); + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/EnumerableMap.sol b/node_modules/@openzeppelin/contracts/utils/EnumerableMap.sol new file mode 100644 index 0000000..82eb04c --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/EnumerableMap.sol @@ -0,0 +1,237 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Library for managing an enumerable variant of Solidity's + * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] + * type. + * + * Maps have the following properties: + * + * - Entries are added, removed, and checked for existence in constant time + * (O(1)). + * - Entries are enumerated in O(n). No guarantees are made on the ordering. + * + * ``` + * contract Example { + * // Add the library methods + * using EnumerableMap for EnumerableMap.UintToAddressMap; + * + * // Declare a set state variable + * EnumerableMap.UintToAddressMap private myMap; + * } + * ``` + * + * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are + * supported. + */ +library EnumerableMap { + // To implement this library for multiple types with as little code + // repetition as possible, we write it in terms of a generic Map type with + // bytes32 keys and values. + // The Map implementation uses private functions, and user-facing + // implementations (such as Uint256ToAddressMap) are just wrappers around + // the underlying Map. + // This means that we can only create new EnumerableMaps for types that fit + // in bytes32. + + struct MapEntry { + bytes32 _key; + bytes32 _value; + } + + struct Map { + // Storage of map keys and values + MapEntry[] _entries; + + // Position of the entry defined by a key in the `entries` array, plus 1 + // because index 0 means a key is not in the map. + mapping (bytes32 => uint256) _indexes; + } + + /** + * @dev Adds a key-value pair to a map, or updates the value for an existing + * key. O(1). + * + * Returns true if the key was added to the map, that is if it was not + * already present. + */ + function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) { + // We read and store the key's index to prevent multiple reads from the same storage slot + uint256 keyIndex = map._indexes[key]; + + if (keyIndex == 0) { // Equivalent to !contains(map, key) + map._entries.push(MapEntry({ _key: key, _value: value })); + // The entry is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + map._indexes[key] = map._entries.length; + return true; + } else { + map._entries[keyIndex - 1]._value = value; + return false; + } + } + + /** + * @dev Removes a key-value pair from a map. O(1). + * + * Returns true if the key was removed from the map, that is if it was present. + */ + function _remove(Map storage map, bytes32 key) private returns (bool) { + // We read and store the key's index to prevent multiple reads from the same storage slot + uint256 keyIndex = map._indexes[key]; + + if (keyIndex != 0) { // Equivalent to contains(map, key) + // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one + // in the array, and then remove the last entry (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 toDeleteIndex = keyIndex - 1; + uint256 lastIndex = map._entries.length - 1; + + // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs + // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. + + MapEntry storage lastEntry = map._entries[lastIndex]; + + // Move the last entry to the index where the entry to delete is + map._entries[toDeleteIndex] = lastEntry; + // Update the index for the moved entry + map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based + + // Delete the slot where the moved entry was stored + map._entries.pop(); + + // Delete the index for the deleted slot + delete map._indexes[key]; + + return true; + } else { + return false; + } + } + + /** + * @dev Returns true if the key is in the map. O(1). + */ + function _contains(Map storage map, bytes32 key) private view returns (bool) { + return map._indexes[key] != 0; + } + + /** + * @dev Returns the number of key-value pairs in the map. O(1). + */ + function _length(Map storage map) private view returns (uint256) { + return map._entries.length; + } + + /** + * @dev Returns the key-value pair stored at position `index` in the map. O(1). + * + * Note that there are no guarantees on the ordering of entries inside the + * array, and it may change when more entries are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) { + require(map._entries.length > index, "EnumerableMap: index out of bounds"); + + MapEntry storage entry = map._entries[index]; + return (entry._key, entry._value); + } + + /** + * @dev Returns the value associated with `key`. O(1). + * + * Requirements: + * + * - `key` must be in the map. + */ + function _get(Map storage map, bytes32 key) private view returns (bytes32) { + return _get(map, key, "EnumerableMap: nonexistent key"); + } + + /** + * @dev Same as {_get}, with a custom error message when `key` is not in the map. + */ + function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) { + uint256 keyIndex = map._indexes[key]; + require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key) + return map._entries[keyIndex - 1]._value; // All indexes are 1-based + } + + // UintToAddressMap + + struct UintToAddressMap { + Map _inner; + } + + /** + * @dev Adds a key-value pair to a map, or updates the value for an existing + * key. O(1). + * + * Returns true if the key was added to the map, that is if it was not + * already present. + */ + function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) { + return _set(map._inner, bytes32(key), bytes32(uint256(value))); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the key was removed from the map, that is if it was present. + */ + function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) { + return _remove(map._inner, bytes32(key)); + } + + /** + * @dev Returns true if the key is in the map. O(1). + */ + function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) { + return _contains(map._inner, bytes32(key)); + } + + /** + * @dev Returns the number of elements in the map. O(1). + */ + function length(UintToAddressMap storage map) internal view returns (uint256) { + return _length(map._inner); + } + + /** + * @dev Returns the element stored at position `index` in the set. O(1). + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) { + (bytes32 key, bytes32 value) = _at(map._inner, index); + return (uint256(key), address(uint256(value))); + } + + /** + * @dev Returns the value associated with `key`. O(1). + * + * Requirements: + * + * - `key` must be in the map. + */ + function get(UintToAddressMap storage map, uint256 key) internal view returns (address) { + return address(uint256(_get(map._inner, bytes32(key)))); + } + + /** + * @dev Same as {get}, with a custom error message when `key` is not in the map. + */ + function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) { + return address(uint256(_get(map._inner, bytes32(key), errorMessage))); + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/EnumerableSet.sol b/node_modules/@openzeppelin/contracts/utils/EnumerableSet.sol new file mode 100644 index 0000000..7f4c761 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/EnumerableSet.sol @@ -0,0 +1,243 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Library for managing + * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive + * types. + * + * Sets have the following properties: + * + * - Elements are added, removed, and checked for existence in constant time + * (O(1)). + * - Elements are enumerated in O(n). No guarantees are made on the ordering. + * + * ``` + * contract Example { + * // Add the library methods + * using EnumerableSet for EnumerableSet.AddressSet; + * + * // Declare a set state variable + * EnumerableSet.AddressSet private mySet; + * } + * ``` + * + * As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256` + * (`UintSet`) are supported. + */ +library EnumerableSet { + // To implement this library for multiple types with as little code + // repetition as possible, we write it in terms of a generic Set type with + // bytes32 values. + // The Set implementation uses private functions, and user-facing + // implementations (such as AddressSet) are just wrappers around the + // underlying Set. + // This means that we can only create new EnumerableSets for types that fit + // in bytes32. + + struct Set { + // Storage of set values + bytes32[] _values; + + // Position of the value in the `values` array, plus 1 because index 0 + // means a value is not in the set. + mapping (bytes32 => uint256) _indexes; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function _add(Set storage set, bytes32 value) private returns (bool) { + if (!_contains(set, value)) { + set._values.push(value); + // The value is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + set._indexes[value] = set._values.length; + return true; + } else { + return false; + } + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function _remove(Set storage set, bytes32 value) private returns (bool) { + // We read and store the value's index to prevent multiple reads from the same storage slot + uint256 valueIndex = set._indexes[value]; + + if (valueIndex != 0) { // Equivalent to contains(set, value) + // To delete an element from the _values array in O(1), we swap the element to delete with the last one in + // the array, and then remove the last element (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 toDeleteIndex = valueIndex - 1; + uint256 lastIndex = set._values.length - 1; + + // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs + // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. + + bytes32 lastvalue = set._values[lastIndex]; + + // Move the last value to the index where the value to delete is + set._values[toDeleteIndex] = lastvalue; + // Update the index for the moved value + set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based + + // Delete the slot where the moved value was stored + set._values.pop(); + + // Delete the index for the deleted slot + delete set._indexes[value]; + + return true; + } else { + return false; + } + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function _contains(Set storage set, bytes32 value) private view returns (bool) { + return set._indexes[value] != 0; + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function _length(Set storage set) private view returns (uint256) { + return set._values.length; + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function _at(Set storage set, uint256 index) private view returns (bytes32) { + require(set._values.length > index, "EnumerableSet: index out of bounds"); + return set._values[index]; + } + + // AddressSet + + struct AddressSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(AddressSet storage set, address value) internal returns (bool) { + return _add(set._inner, bytes32(uint256(value))); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(AddressSet storage set, address value) internal returns (bool) { + return _remove(set._inner, bytes32(uint256(value))); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(AddressSet storage set, address value) internal view returns (bool) { + return _contains(set._inner, bytes32(uint256(value))); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(AddressSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(AddressSet storage set, uint256 index) internal view returns (address) { + return address(uint256(_at(set._inner, index))); + } + + + // UintSet + + struct UintSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(UintSet storage set, uint256 value) internal returns (bool) { + return _add(set._inner, bytes32(value)); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(UintSet storage set, uint256 value) internal returns (bool) { + return _remove(set._inner, bytes32(value)); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(UintSet storage set, uint256 value) internal view returns (bool) { + return _contains(set._inner, bytes32(value)); + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function length(UintSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(UintSet storage set, uint256 index) internal view returns (uint256) { + return uint256(_at(set._inner, index)); + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/Pausable.sol b/node_modules/@openzeppelin/contracts/utils/Pausable.sol new file mode 100644 index 0000000..9e1b42a --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/Pausable.sol @@ -0,0 +1,90 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +import "../GSN/Context.sol"; + +/** + * @dev Contract module which allows children to implement an emergency stop + * mechanism that can be triggered by an authorized account. + * + * This module is used through inheritance. It will make available the + * modifiers `whenNotPaused` and `whenPaused`, which can be applied to + * the functions of your contract. Note that they will not be pausable by + * simply including this module, only once the modifiers are put in place. + */ +contract Pausable is Context { + /** + * @dev Emitted when the pause is triggered by `account`. + */ + event Paused(address account); + + /** + * @dev Emitted when the pause is lifted by `account`. + */ + event Unpaused(address account); + + bool private _paused; + + /** + * @dev Initializes the contract in unpaused state. + */ + constructor () internal { + _paused = false; + } + + /** + * @dev Returns true if the contract is paused, and false otherwise. + */ + function paused() public view returns (bool) { + return _paused; + } + + /** + * @dev Modifier to make a function callable only when the contract is not paused. + * + * Requirements: + * + * - The contract must not be paused. + */ + modifier whenNotPaused() { + require(!_paused, "Pausable: paused"); + _; + } + + /** + * @dev Modifier to make a function callable only when the contract is paused. + * + * Requirements: + * + * - The contract must be paused. + */ + modifier whenPaused() { + require(_paused, "Pausable: not paused"); + _; + } + + /** + * @dev Triggers stopped state. + * + * Requirements: + * + * - The contract must not be paused. + */ + function _pause() internal virtual whenNotPaused { + _paused = true; + emit Paused(_msgSender()); + } + + /** + * @dev Returns to normal state. + * + * Requirements: + * + * - The contract must be paused. + */ + function _unpause() internal virtual whenPaused { + _paused = false; + emit Unpaused(_msgSender()); + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/README.adoc b/node_modules/@openzeppelin/contracts/utils/README.adoc new file mode 100644 index 0000000..1f0dcf0 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/README.adoc @@ -0,0 +1,49 @@ += Utilities + +Miscellaneous contracts and libraries containing utility functions you can use to improve security, work with new data types, or safely use low-level primitives. + +Security tools include: + + * {Pausable}: provides a simple way to halt activity in your contracts (often in reponse to an external threat). + * {ReentrancyGuard}: protects you from https://blog.openzeppelin.com/reentrancy-after-istanbul/[reentrant calls]. + +The {Address}, {Arrays} and {Strings} libraries provide more operations related to these native data types, while {SafeCast} adds ways to safely convert between the different signed and unsigned numeric types. + +For new data types: + + * {Counters}: a simple way to get a counter that can only be incremented or decremented. Very useful for ID generation, counting contract activity, among others. + * {EnumerableMap}: like Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type, but with key-value _enumeration_: this will let you know how many entries a mapping has, and iterate over them (which is not possible with `mapping`). + * {EnumerableSet}: like {EnumerableMap}, but for https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets]. Can be used to store privileged accounts, issued IDs, etc. + +[NOTE] +==== +Because Solidity does not support generic types, {EnumerableMap} and {EnumerableSet} are specialized to a limited number of key-value types. + +As of v3.0, {EnumerableMap} supports `uint256 -> address` (`UintToAddressMap`), and {EnumerableSet} supports `address` and `uint256` (`AddressSet` and `UintSet`). +==== + +Finally, {Create2} contains all necessary utilities to safely use the https://blog.openzeppelin.com/getting-the-most-out-of-create2/[`CREATE2` EVM opcode], without having to deal with low-level assembly. + +== Contracts + +{{Pausable}} + +{{ReentrancyGuard}} + +== Libraries + +{{Address}} + +{{Arrays}} + +{{Counters}} + +{{Create2}} + +{{EnumerableMap}} + +{{EnumerableSet}} + +{{SafeCast}} + +{{Strings}} diff --git a/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol b/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol new file mode 100644 index 0000000..b7bea91 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev Contract module that helps prevent reentrant calls to a function. + * + * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier + * available, which can be applied to functions to make sure there are no nested + * (reentrant) calls to them. + * + * Note that because there is a single `nonReentrant` guard, functions marked as + * `nonReentrant` may not call one another. This can be worked around by making + * those functions `private`, and then adding `external` `nonReentrant` entry + * points to them. + * + * TIP: If you would like to learn more about reentrancy and alternative ways + * to protect against it, check out our blog post + * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. + */ +contract ReentrancyGuard { + // Booleans are more expensive than uint256 or any type that takes up a full + // word because each write operation emits an extra SLOAD to first read the + // slot's contents, replace the bits taken up by the boolean, and then write + // back. This is the compiler's defense against contract upgrades and + // pointer aliasing, and it cannot be disabled. + + // The values being non-zero value makes deployment a bit more expensive, + // but in exchange the refund on every call to nonReentrant will be lower in + // amount. Since refunds are capped to a percentage of the total + // transaction's gas, it is best to keep them low in cases like this one, to + // increase the likelihood of the full refund coming into effect. + uint256 private constant _NOT_ENTERED = 1; + uint256 private constant _ENTERED = 2; + + uint256 private _status; + + constructor () internal { + _status = _NOT_ENTERED; + } + + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + * Calling a `nonReentrant` function from another `nonReentrant` + * function is not supported. It is possible to prevent this from happening + * by making the `nonReentrant` function external, and make it call a + * `private` function that does the actual work. + */ + modifier nonReentrant() { + // On the first call to nonReentrant, _notEntered will be true + require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); + + // Any calls to nonReentrant after this point will fail + _status = _ENTERED; + + _; + + // By storing the original value once again, a refund is triggered (see + // https://eips.ethereum.org/EIPS/eip-2200) + _status = _NOT_ENTERED; + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/SafeCast.sol b/node_modules/@openzeppelin/contracts/utils/SafeCast.sol new file mode 100644 index 0000000..9d283ff --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/SafeCast.sol @@ -0,0 +1,211 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + + +/** + * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow + * checks. + * + * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can + * easily result in undesired exploitation or bugs, since developers usually + * assume that overflows raise errors. `SafeCast` restores this intuition by + * reverting the transaction when such an operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + * + * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing + * all math on `uint256` and `int256` and then downcasting. + */ +library SafeCast { + + /** + * @dev Returns the downcasted uint128 from uint256, reverting on + * overflow (when the input is greater than largest uint128). + * + * Counterpart to Solidity's `uint128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toUint128(uint256 value) internal pure returns (uint128) { + require(value < 2**128, "SafeCast: value doesn\'t fit in 128 bits"); + return uint128(value); + } + + /** + * @dev Returns the downcasted uint64 from uint256, reverting on + * overflow (when the input is greater than largest uint64). + * + * Counterpart to Solidity's `uint64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toUint64(uint256 value) internal pure returns (uint64) { + require(value < 2**64, "SafeCast: value doesn\'t fit in 64 bits"); + return uint64(value); + } + + /** + * @dev Returns the downcasted uint32 from uint256, reverting on + * overflow (when the input is greater than largest uint32). + * + * Counterpart to Solidity's `uint32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toUint32(uint256 value) internal pure returns (uint32) { + require(value < 2**32, "SafeCast: value doesn\'t fit in 32 bits"); + return uint32(value); + } + + /** + * @dev Returns the downcasted uint16 from uint256, reverting on + * overflow (when the input is greater than largest uint16). + * + * Counterpart to Solidity's `uint16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toUint16(uint256 value) internal pure returns (uint16) { + require(value < 2**16, "SafeCast: value doesn\'t fit in 16 bits"); + return uint16(value); + } + + /** + * @dev Returns the downcasted uint8 from uint256, reverting on + * overflow (when the input is greater than largest uint8). + * + * Counterpart to Solidity's `uint8` operator. + * + * Requirements: + * + * - input must fit into 8 bits. + */ + function toUint8(uint256 value) internal pure returns (uint8) { + require(value < 2**8, "SafeCast: value doesn\'t fit in 8 bits"); + return uint8(value); + } + + /** + * @dev Converts a signed int256 into an unsigned uint256. + * + * Requirements: + * + * - input must be greater than or equal to 0. + */ + function toUint256(int256 value) internal pure returns (uint256) { + require(value >= 0, "SafeCast: value must be positive"); + return uint256(value); + } + + /** + * @dev Returns the downcasted int128 from int256, reverting on + * overflow (when the input is less than smallest int128 or + * greater than largest int128). + * + * Counterpart to Solidity's `int128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + * + * _Available since v3.1._ + */ + function toInt128(int256 value) internal pure returns (int128) { + require(value >= -2**127 && value < 2**127, "SafeCast: value doesn\'t fit in 128 bits"); + return int128(value); + } + + /** + * @dev Returns the downcasted int64 from int256, reverting on + * overflow (when the input is less than smallest int64 or + * greater than largest int64). + * + * Counterpart to Solidity's `int64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + * + * _Available since v3.1._ + */ + function toInt64(int256 value) internal pure returns (int64) { + require(value >= -2**63 && value < 2**63, "SafeCast: value doesn\'t fit in 64 bits"); + return int64(value); + } + + /** + * @dev Returns the downcasted int32 from int256, reverting on + * overflow (when the input is less than smallest int32 or + * greater than largest int32). + * + * Counterpart to Solidity's `int32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + * + * _Available since v3.1._ + */ + function toInt32(int256 value) internal pure returns (int32) { + require(value >= -2**31 && value < 2**31, "SafeCast: value doesn\'t fit in 32 bits"); + return int32(value); + } + + /** + * @dev Returns the downcasted int16 from int256, reverting on + * overflow (when the input is less than smallest int16 or + * greater than largest int16). + * + * Counterpart to Solidity's `int16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + * + * _Available since v3.1._ + */ + function toInt16(int256 value) internal pure returns (int16) { + require(value >= -2**15 && value < 2**15, "SafeCast: value doesn\'t fit in 16 bits"); + return int16(value); + } + + /** + * @dev Returns the downcasted int8 from int256, reverting on + * overflow (when the input is less than smallest int8 or + * greater than largest int8). + * + * Counterpart to Solidity's `int8` operator. + * + * Requirements: + * + * - input must fit into 8 bits. + * + * _Available since v3.1._ + */ + function toInt8(int256 value) internal pure returns (int8) { + require(value >= -2**7 && value < 2**7, "SafeCast: value doesn\'t fit in 8 bits"); + return int8(value); + } + + /** + * @dev Converts an unsigned uint256 into a signed int256. + * + * Requirements: + * + * - input must be less than or equal to maxInt256. + */ + function toInt256(uint256 value) internal pure returns (int256) { + require(value < 2**255, "SafeCast: value doesn't fit in an int256"); + return int256(value); + } +} diff --git a/node_modules/@openzeppelin/contracts/utils/Strings.sol b/node_modules/@openzeppelin/contracts/utils/Strings.sol new file mode 100644 index 0000000..aacce81 --- /dev/null +++ b/node_modules/@openzeppelin/contracts/utils/Strings.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.0; + +/** + * @dev String operations. + */ +library Strings { + /** + * @dev Converts a `uint256` to its ASCII `string` representation. + */ + function toString(uint256 value) internal pure returns (string memory) { + // Inspired by OraclizeAPI's implementation - MIT licence + // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol + + if (value == 0) { + return "0"; + } + uint256 temp = value; + uint256 digits; + while (temp != 0) { + digits++; + temp /= 10; + } + bytes memory buffer = new bytes(digits); + uint256 index = digits - 1; + temp = value; + while (temp != 0) { + buffer[index--] = byte(uint8(48 + temp % 10)); + temp /= 10; + } + return string(buffer); + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2be417b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "@fr8/relayswap-protocol", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@openzeppelin/contracts": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.1.0.tgz", + "integrity": "sha512-dVXDnUKxrAKLzPdCRkz+N8qsVkK1XxJ6kk3zuI6zaQmcKxN7CkizoDP7lXxcs/Mi2I0mxceTRjJBqlzFffLJrQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..72ab9ec --- /dev/null +++ b/package.json @@ -0,0 +1,87 @@ +{ + "name": "@fr8/relayswap-protocol", + "description": "To be used when building a new solidity project from scratch", + "version": "1.0.0", + "author": { + "name": "sam bacha , SEE LICENSE", + "email": "corporate@freighttrust.com", + "url": "https://freighttrust.com" + }, + "bugs": { + "url": "https://github.com/freight-trust/relayswap/issues" + }, + "devDependencies": { + "@commitlint/cli": "^9.0.1", + "@commitlint/config-conventional": "^9.0.1", + "@ethersproject/abstract-signer": "^5.0.1", + "@ethersproject/bignumber": "^5.0.3", + "@ethersproject/wallet": "^5.0.1", + "@nomiclabs/buidler": "^1.3.8", + "@nomiclabs/buidler-ethers": "^2.0.0", + "@nomiclabs/buidler-waffle": "^2.0.0", + "@typechain/ethers-v5": "^0.0.2", + "@types/chai": "^4.2.11", + "@types/fs-extra": "^9.0.1", + "@types/mocha": "^7.0.2", + "@types/node": "^14.0.14", + "@typescript-eslint/eslint-plugin": "^3.6.0", + "@typescript-eslint/parser": "^3.6.0", + "chai": "^4.2.0", + "commitizen": "^4.1.2", + "cz-conventional-changelog": "^3.2.0", + "dotenv": "^8.2.0", + "eslint": "^7.4.0", + "eslint-config-prettier": "^6.11.0", + "ethereum-waffle": "^3.0.1", + "ethers": "^5.0.4", + "fs-extra": "^9.0.1", + "husky": "^4.2.5", + "mocha": "^8.0.1", + "prettier": "^2.0.5", + "prettier-plugin-solidity": "^1.0.0-alpha.54", + "shelljs": "^0.8.4", + "shx": "^0.3.2", + "solc": "0.6.10", + "solhint": "^3.0.0", + "solhint-plugin-prettier": "^0.0.4", + "solidity-coverage": "^0.7.9", + "ts-generator": "^0.0.8", + "ts-node": "^8.10.2", + "typechain": "^2.0.0", + "typescript": "^3.9.6" + }, + "files": [ + "/contracts" + ], + "homepage": "https://github.com/freight-trust/relayswap#readme", + "keywords": [ + "blockchain", + "ethereum", + "smart-contracts", + "solidity" + ], + "license": "MPL-2.0", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/freight-trust/relayswap" + }, + "scripts": { + "build": "yarn run compile && yarn run typechain", + "clean": "buidler clean", + "commit": "git-cz", + "compile": "buidler compile", + "coverage": "buidler coverage --solcoverjs ./.solcover.js --network coverage --temp artifacts --testfiles './test/**/*.ts'", + "lint:sol": "solhint --config ./.solhint.json --max-warnings 0 'contracts/**/*.sol'", + "lint:ts": "eslint --config ./.eslintrc.yaml --ignore-path ./.eslintignore --ext .js,.ts .", + "prettier": "prettier --config .prettierrc --write '**/*.{js,json,md,sol,ts}'", + "prettier:list-different": "prettier --config .prettierrc --list-different '**/*.{js,json,md,sol,ts}'", + "test": "buidler test", + "typechain": "buidler typechain" + }, + "dependencies": { + "@openzeppelin/contracts": "^3.1.0" + } +} diff --git a/scripts/deploy.ts b/scripts/deploy.ts new file mode 100644 index 0000000..2731e5a --- /dev/null +++ b/scripts/deploy.ts @@ -0,0 +1,29 @@ +// We require the Buidler Runtime Environment explicitly here. This is optional +// but useful for running the script in a standalone fashion through `node